diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..783f75f657 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,29 @@ +.dockerignore +.editorconfig +.travis.yml +GPLv3.txt +LICENSE +README.md +TGS3.json +.github +.gitignore +.gitattributes +.git/hooks +.git/info +.git/modules +.git/objects +.git/refs +.vs* +tools +cfg +data +SQL +tgui/node_modules +tgstation.dmb +tgstation.int +tgstation.rsc +tgstation.lk +tgstation.dyn.rsc +libmariadb.dll +rust_g.dll +Dockerfile diff --git a/.travis.yml b/.travis.yml index fa42ba3aef..56fa54f58d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,36 +6,54 @@ branches: env: global: - BYOND_MAJOR="512" - - BYOND_MINOR="1418" + - BYOND_MINOR="1427" - NODE_VERSION="4" - RUST_G_VERSION="0.3.0" - - BUILD_TOOLS=false - - BUILD_TESTING=false - - DM_MAPFILE="loadallmaps" - matrix: - - BUILD_TOOLS=true - - BUILD_TESTING=true - - BUILD_TESTING=false - -cache: - directories: - - $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR} - - tgui/node_modules - - -addons: - apt: - packages: - - libc6-i386 - - libgcc1:i386 - - libstdc++6:i386 - - gcc-multilib - - python3 - - python3-pip - - libssl-dev:i386 +matrix: + include: + - env: + - BUILD_TOOLS=true + addons: + apt: + packages: + - python3 + - python3-pip + cache: + directories: + - tgui/node_modules + - env: + - BUILD_TESTING=true + - BUILD_TOOLS=false + addons: + apt: + packages: + - libstdc++6:i386 + cache: + directories: + - $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR} + - env: + - BUILD_TESTING=false + - BUILD_TOOLS=false + addons: + mariadb: '10.2' + apt: + packages: + - libstdc++6:i386 + - libssl-dev:i386 + - gcc-multilib + cache: + directories: + - $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR} + - $HOME/libmariadb + - $HOME/.rustup + - $HOME/.cargo install: - tools/travis/install_build_tools.sh + - if [ $BUILD_TOOLS = false ] && [ $BUILD_TESTING = false ]; then mysql -u root -e 'CREATE DATABASE tg_travis;'; fi + - if [ $BUILD_TOOLS = false ] && [ $BUILD_TESTING = false ]; then mysql -u root tg_travis < SQL/tgstation_schema.sql; fi + - if [ $BUILD_TOOLS = false ] && [ $BUILD_TESTING = false ]; then mysql -u root -e 'CREATE DATABASE tg_travis_prefixed;'; fi + - if [ $BUILD_TOOLS = false ] && [ $BUILD_TESTING = false ]; then mysql -u root tg_travis_prefixed < SQL/tgstation_schema_prefixed.sql; fi before_script: - tools/travis/before_build_tools.sh @@ -43,7 +61,7 @@ before_script: script: - tools/travis/check_filedirs.sh tgstation.dme - - tools/travis/build_tools.sh - - tools/travis/build_dependencies.sh + - tools/travis/build_tools.sh || travis_terminate 1 + - tools/travis/build_dependencies.sh || travis_terminate 1 - tools/travis/build_byond.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..ea5ee5aa3b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,38 @@ +FROM i386/ubuntu:xenial as build + +WORKDIR /rust_g + +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + libssl-dev \ + ca-certificates \ + rustc \ + cargo \ + pkg-config \ + && git init \ + && git remote add origin https://github.com/tgstation/rust-g + +#TODO: find a way to read these from .travis.yml or a common source eventually +ENV RUST_G_VERSION=0.3.0 + +RUN git fetch --depth 1 origin $RUST_G_VERSION \ + && git checkout FETCH_HEAD \ + && cargo build --release + +FROM tgstation/byond:512.1427 + +EXPOSE 1337 + +WORKDIR /tgstation + +COPY . . + +RUN mkdir data && mkdir -p /root/.byond/bin + +VOLUME [ "/tgstation/config", "/tgstation/data" ] + +RUN DreamMaker -max_errors 0 tgstation.dme + +COPY --from=build /rust_g/target/release/librust_g.so /root/.byond/bin/rust_g + +ENTRYPOINT [ "DreamDaemon", "tgstation.dmb", "-port", "1337", "-trusted", "-close", "-verbose" ] diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index 0a2076f508..dad9f1e766 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -277,6 +277,28 @@ CREATE TABLE `role_time` `minutes` INT UNSIGNED NOT NULL, PRIMARY KEY (`ckey`, `job`) ) ENGINE = InnoDB; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `role_time` +-- + +DROP TABLE IF EXISTS `role_time_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; + +CREATE TABLE IF NOT EXISTS `role_time_log` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `ckey` varchar(32) NOT NULL, + `job` varchar(128) NOT NULL, + `delta` int(11) NOT NULL, + `datetime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + PRIMARY KEY (`id`), + KEY `ckey` (`ckey`), + KEY `job` (`job`), + KEY `datetime` (`datetime`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `player` @@ -428,6 +450,17 @@ CREATE TABLE `schema_revision` ( PRIMARY KEY (`major`, `minor`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; +DELIMITER $$ +CREATE TRIGGER `role_timeTlogupdate` AFTER UPDATE ON `role_time` FOR EACH ROW BEGIN INSERT into role_time_log (ckey, job, delta) VALUES (NEW.CKEY, NEW.job, NEW.minutes-OLD.minutes); +END +$$ +CREATE TRIGGER `role_timeTloginsert` AFTER INSERT ON `role_time` FOR EACH ROW BEGIN INSERT into role_time_log (ckey, job, delta) VALUES (NEW.ckey, NEW.job, NEW.minutes); +END +$$ +CREATE TRIGGER `role_timeTlogdelete` AFTER DELETE ON `role_time` FOR EACH ROW BEGIN INSERT into role_time_log (ckey, job, delta) VALUES (OLD.ckey, OLD.job, 0-OLD.minutes); +END +$$ + /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql index a81b302afe..8c9b15e894 100644 --- a/SQL/tgstation_schema_prefixed.sql +++ b/SQL/tgstation_schema_prefixed.sql @@ -277,6 +277,28 @@ CREATE TABLE `SS13_role_time` `minutes` INT UNSIGNED NOT NULL, PRIMARY KEY (`ckey`, `job`) ) ENGINE = InnoDB; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `SS13_role_time` +-- + +DROP TABLE IF EXISTS `SS13_role_time_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; + +CREATE TABLE IF NOT EXISTS `SS13_role_time_log` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `ckey` varchar(32) NOT NULL, + `job` varchar(128) NOT NULL, + `delta` int(11) NOT NULL, + `datetime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + PRIMARY KEY (`id`), + KEY `ckey` (`ckey`), + KEY `job` (`job`), + KEY `datetime` (`datetime`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `SS13_player` @@ -428,6 +450,17 @@ CREATE TABLE `SS13_schema_revision` ( PRIMARY KEY (`major`,`minor`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; +DELIMITER $$ +CREATE TRIGGER `SS13_role_timeTlogupdate` AFTER UPDATE ON `SS13_role_time` FOR EACH ROW BEGIN INSERT into SS13_role_time_log (ckey, job, delta) VALUES (NEW.CKEY, NEW.job, NEW.minutes-OLD.minutes); +END +$$ +CREATE TRIGGER `SS13_role_timeTloginsert` AFTER INSERT ON `SS13_role_time` FOR EACH ROW BEGIN INSERT into SS13_role_time_log (ckey, job, delta) VALUES (NEW.ckey, NEW.job, NEW.minutes); +END +$$ +CREATE TRIGGER `SS13_role_timeTlogdelete` AFTER DELETE ON `SS13_role_time` FOR EACH ROW BEGIN INSERT into SS13_role_time_log (ckey, job, delta) VALUES (OLD.ckey, OLD.job, 0-OLD.minutes); +END +$$ + /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index e08776fd4a..300cb2bca2 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -10,6 +10,7 @@ /obj/structure/table, /obj/item/storage/toolbox/mechanical, /obj/item/stack/cable_coil, +/obj/item/storage/box/lights/mixed, /turf/open/floor/plating, /area/ruin/powered/beach) "af" = ( @@ -18,6 +19,9 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/item/clothing/glasses/sunglasses/big, +/obj/item/clothing/glasses/sunglasses/big, +/obj/item/clothing/glasses/sunglasses/big, /turf/open/floor/plating, /area/ruin/powered/beach) "ag" = ( @@ -25,7 +29,7 @@ /turf/open/floor/plating, /area/ruin/powered/beach) "ah" = ( -/obj/machinery/power/smes, +/obj/effect/mob_spawn/human/bartender/alive, /turf/open/floor/plating, /area/ruin/powered/beach) "ai" = ( @@ -94,11 +98,15 @@ /turf/open/floor/plating, /area/ruin/powered/beach) "av" = ( -/obj/machinery/door/airlock/hatch, +/obj/machinery/door/airlock/sandstone{ + name = "Lavatory" + }, /turf/open/floor/plating, /area/ruin/powered/beach) "aw" = ( -/obj/machinery/door/airlock/sandstone, +/obj/machinery/door/airlock/sandstone{ + name = "Bar Storage" + }, /turf/open/floor/wood, /area/ruin/powered/beach) "ax" = ( @@ -106,8 +114,10 @@ /turf/closed/wall/mineral/sandstone, /area/ruin/powered/beach) "ay" = ( -/obj/machinery/door/airlock/hatch, /obj/effect/turf_decal/sand, +/obj/machinery/door/airlock/sandstone{ + name = "Restroom" + }, /turf/open/floor/plating, /area/ruin/powered/beach) "az" = ( @@ -130,13 +140,10 @@ /area/ruin/powered/beach) "aD" = ( /obj/structure/table, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/reagent_containers/food/drinks/shaker, -/obj/item/storage/box/beakers, /obj/machinery/light{ dir = 1 }, +/obj/machinery/chem_dispenser/drinks, /turf/open/floor/wood, /area/ruin/powered/beach) "aE" = ( @@ -151,18 +158,15 @@ }, /turf/open/floor/wood, /area/ruin/powered/beach) -"aG" = ( -/obj/structure/table, -/obj/item/book/manual/barman_recipes, -/obj/item/reagent_containers/glass/rag, -/turf/open/floor/wood, -/area/ruin/powered/beach) "aH" = ( /obj/structure/table, -/obj/item/storage/box/donkpockets, /obj/machinery/light{ dir = 1 }, +/obj/item/book/manual/barman_recipes, +/obj/item/book/granter/action/drink_fling, +/obj/item/reagent_containers/food/drinks/shaker, +/obj/item/reagent_containers/glass/rag, /turf/open/floor/wood, /area/ruin/powered/beach) "aI" = ( @@ -183,18 +187,12 @@ "aK" = ( /turf/open/floor/plasteel/asteroid, /area/ruin/powered/beach) -"aL" = ( -/obj/effect/mob_spawn/human/bartender/alive{ - name = "beach bum sleeper" - }, -/turf/open/floor/wood, -/area/ruin/powered/beach) "aM" = ( /obj/structure/reagent_dispensers/beerkeg, /turf/open/floor/wood, /area/ruin/powered/beach) "aN" = ( -/obj/machinery/vending/cigarette, +/obj/machinery/vending/cigarette/beach, /turf/open/floor/plasteel/asteroid, /area/ruin/powered/beach) "aO" = ( @@ -228,11 +226,7 @@ /turf/open/floor/plating/beach/sand, /area/ruin/powered/beach) "aV" = ( -/obj/effect/mob_spawn/human/beach/alive{ - flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?"; - l_pocket = /obj/item/reagent_containers/food/snacks/pizzaslice/dank; - uniform = /obj/item/clothing/under/pants/youngfolksjeans - }, +/obj/effect/mob_spawn/human/beach/alive, /turf/open/floor/plating/beach/sand, /area/ruin/powered/beach) "aW" = ( @@ -259,7 +253,9 @@ /turf/open/floor/plating/beach/sand, /area/ruin/powered/beach) "bc" = ( -/obj/machinery/door/airlock/sandstone, +/obj/machinery/door/airlock/sandstone{ + name = "Bar Access" + }, /obj/effect/turf_decal/sand, /turf/open/floor/wood, /area/ruin/powered/beach) @@ -279,21 +275,8 @@ /obj/structure/sign/barsign, /turf/closed/wall/mineral/sandstone, /area/ruin/powered/beach) -"bj" = ( -/obj/structure/chair/wood/normal{ - dir = 4 - }, -/turf/open/floor/plasteel/asteroid, -/area/ruin/powered/beach) -"bk" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/pastatomato, -/turf/open/floor/plasteel/asteroid, -/area/ruin/powered/beach) "bl" = ( -/obj/structure/chair/wood/normal{ - dir = 8 - }, +/obj/effect/turf_decal/caution, /turf/open/floor/plasteel/asteroid, /area/ruin/powered/beach) "bx" = ( @@ -348,13 +331,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/effect/mob_spawn/human/beach/alive{ - flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff."; - id = /obj/item/card/id; - id_access = "Medical Doctor"; - id_job = "Lifeguard"; - mob_gender = "female" - }, +/obj/effect/mob_spawn/human/beach/alive/lifeguard, /turf/open/floor/wood, /area/ruin/powered/beach) "bJ" = ( @@ -466,9 +443,24 @@ /turf/open/floor/pod/dark, /area/ruin/powered/beach) "dw" = ( -/obj/machinery/door/airlock/sandstone, +/obj/machinery/door/airlock/sandstone{ + name = "Beach Access" + }, /turf/open/floor/pod/dark, /area/ruin/powered/beach) +"gg" = ( +/obj/structure/table, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/beakers, +/obj/item/storage/box/donkpockets, +/turf/open/floor/plating, +/area/ruin/powered/beach) +"hY" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/wood, +/area/ruin/powered/beach) "iw" = ( /obj/machinery/light/small{ brightness = 3; @@ -496,8 +488,23 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/ruin/powered/beach) +"oK" = ( +/obj/effect/turf_decal/caution{ + dir = 1 + }, +/turf/open/floor/plasteel/asteroid, +/area/ruin/powered/beach) +"pg" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/floor/pod/light, +/area/ruin/powered/beach) "pI" = ( -/obj/machinery/door/airlock/hatch, +/obj/machinery/door/airlock/hatch{ + name = "Lava Beach Club" + }, /obj/structure/fans/tiny, /turf/open/floor/pod/dark, /area/ruin/powered/beach) @@ -514,6 +521,22 @@ }, /turf/open/floor/pod/dark, /area/ruin/powered/beach) +"qT" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/floor/pod/light, +/area/ruin/powered/beach) +"sy" = ( +/obj/effect/turf_decal/caution{ + dir = 4 + }, +/turf/open/floor/plasteel/asteroid, +/area/ruin/powered/beach) +"sO" = ( +/obj/machinery/jukebox/disco/indestructible, +/turf/open/floor/light/colour_cycle, +/area/ruin/powered/beach) "vl" = ( /obj/structure/closet/athletic_mixed, /turf/open/floor/pod/dark, @@ -521,16 +544,35 @@ "wY" = ( /turf/open/floor/pod/light, /area/ruin/powered/beach) +"yp" = ( +/obj/item/reagent_containers/spray/spraytan, +/turf/open/floor/plasteel/asteroid, +/area/ruin/powered/beach) "zw" = ( /obj/structure/closet/athletic_mixed, /obj/effect/turf_decal/sand, /turf/open/floor/pod/dark, /area/ruin/powered/beach) +"Bl" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered/beach) "Ec" = ( -/obj/machinery/door/airlock/sandstone, +/obj/machinery/door/airlock/sandstone{ + name = "Beach Access" + }, /obj/effect/turf_decal/sand, /turf/open/floor/pod/dark, /area/ruin/powered/beach) +"Ga" = ( +/obj/effect/turf_decal/caution{ + dir = 8 + }, +/turf/open/floor/plasteel/asteroid, +/area/ruin/powered/beach) "Gc" = ( /obj/effect/turf_decal/sand, /turf/open/floor/pod/light, @@ -542,6 +584,13 @@ /obj/effect/turf_decal/sand, /turf/open/floor/pod/dark, /area/ruin/powered/beach) +"QS" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered/beach) "TP" = ( /obj/machinery/light{ dir = 8 @@ -610,7 +659,7 @@ bW vl iw wY -Gc +pg wY Xp cR @@ -705,9 +754,9 @@ ar cg ar ar +Bl aA -aA -aA +Bl ar ar cg @@ -854,7 +903,7 @@ aa aa bW ae -as +gg bW aB aK @@ -863,7 +912,7 @@ aK aK aK aK -aK +yp aA ar ar @@ -894,7 +943,7 @@ aj aB aK aK -bj +aK aK aA ar @@ -925,8 +974,8 @@ aC aP aW aK +Ga aK -bk aK aA ar @@ -956,8 +1005,8 @@ aD aC aQ aW -aK -aK +oK +sO bl aK aA @@ -984,12 +1033,12 @@ bW ai at ax -aE -aL +hY +aC aP aW aK -aK +sy aK aK aA @@ -1048,7 +1097,7 @@ bW ak au aj -aG +aE aC aj aj @@ -1307,7 +1356,7 @@ ap ar ar aU -ar +bE ar ar bz @@ -1371,15 +1420,15 @@ ap ar ar aq -ar +aV be ar ch ar ar +QS aA -aA -aA +QS ar ar cs @@ -1474,7 +1523,7 @@ bW HC qa wY -wY +qT Gc pU cR diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index 73f7a7729a..7eaf196e77 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -211,9 +211,7 @@ }, /area/ruin/powered/animal_hospital) "aP" = ( -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/ruin/powered/animal_hospital) "aQ" = ( /turf/open/floor/plasteel/blue/corner{ @@ -721,9 +719,7 @@ /area/ruin/powered/animal_hospital) "cw" = ( /obj/machinery/light/small, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/ruin/powered/animal_hospital) "cx" = ( /obj/machinery/light{ @@ -782,9 +778,7 @@ /area/ruin/powered/animal_hospital) "cH" = ( /mob/living/simple_animal/bot/cleanbot, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/ruin/powered/animal_hospital) "cI" = ( /obj/structure/table/glass, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index 0bcddfcbe7..7ad773e601 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -6,13 +6,13 @@ /obj/structure/stone_tile/surrounding_tile{ dir = 4 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "ac" = ( /obj/structure/stone_tile/block{ dir = 1 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "ad" = ( /obj/structure/stone_tile/block{ @@ -21,13 +21,13 @@ /obj/structure/stone_tile/cracked{ dir = 8 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "ae" = ( /obj/structure/stone_tile/block/cracked{ dir = 1 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "af" = ( /obj/structure/stone_tile/block{ @@ -36,26 +36,26 @@ /obj/structure/stone_tile{ dir = 8 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "ag" = ( /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 1 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "ah" = ( -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "ai" = ( /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 4 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "aj" = ( /obj/structure/stone_tile/slab, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "ak" = ( /turf/closed/indestructible/riveted/boss, @@ -64,7 +64,7 @@ /obj/structure/stone_tile/surrounding_tile{ dir = 1 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "aq" = ( /obj/structure/stone_tile/block/cracked{ @@ -73,7 +73,7 @@ /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 1 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "ar" = ( /obj/structure/stone_tile/block/cracked{ @@ -82,7 +82,7 @@ /obj/structure/stone_tile{ dir = 4 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "as" = ( /turf/closed/wall/mineral/wood, @@ -94,7 +94,7 @@ /obj/structure/stone_tile/block{ dir = 4 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "au" = ( /obj/structure/stone_tile, @@ -159,7 +159,7 @@ /obj/structure/stone_tile/block{ dir = 4 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "aA" = ( /obj/structure/stone_tile/cracked{ @@ -196,7 +196,7 @@ /obj/structure/stone_tile/block{ dir = 8 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "aG" = ( /obj/structure/stone_tile/block/cracked{ @@ -286,7 +286,7 @@ /obj/structure/stone_tile/block/cracked{ dir = 4 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "aS" = ( /obj/structure/stone_tile/block{ @@ -422,13 +422,13 @@ /obj/structure/stone_tile{ dir = 8 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "bi" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "bj" = ( /obj/structure/stone_tile/block/cracked{ @@ -630,7 +630,7 @@ /obj/structure/stone_tile/block/cracked{ dir = 4 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "bD" = ( /obj/structure/stone_tile/block{ @@ -668,11 +668,11 @@ /area/ruin/unpowered/ash_walkers) "bI" = ( /obj/structure/stone_tile/slab/cracked, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "bJ" = ( /obj/structure/stone_tile/surrounding_tile, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "bL" = ( /obj/structure/stone_tile{ @@ -915,7 +915,7 @@ /obj/structure/stone_tile/block{ dir = 1 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "cq" = ( /obj/structure/stone_tile/cracked{ @@ -1102,40 +1102,40 @@ }, /obj/structure/table/wood, /obj/item/twohanded/spear, -/obj/item/clothing/head/helmet/roman/legionaire, +/obj/item/clothing/head/helmet/roman/legionnaire, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "cO" = ( /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 8 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "cP" = ( /obj/structure/stone_tile/block, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "cQ" = ( /obj/structure/stone_tile/block/cracked, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "cR" = ( /obj/structure/stone_tile/surrounding_tile/cracked, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "cT" = ( /obj/structure/stone_tile, /obj/structure/stone_tile/block{ dir = 1 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "cV" = ( /obj/structure/stone_tile/cracked, /obj/structure/stone_tile/block{ dir = 8 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "cW" = ( /obj/structure/table/optable, @@ -1307,7 +1307,7 @@ /obj/structure/stone_tile/cracked{ dir = 1 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "dv" = ( /obj/structure/stone_tile/cracked{ @@ -1347,7 +1347,7 @@ dir = 1 }, /obj/structure/stone_tile/cracked, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "dA" = ( /obj/machinery/hydroponics/soil, @@ -1373,24 +1373,24 @@ dir = 8 }, /obj/structure/stone_tile/center/cracked, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "dC" = ( /obj/structure/stone_tile, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "dD" = ( /obj/structure/stone_tile/cracked{ dir = 8 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "dE" = ( /obj/structure/stone_tile, /obj/structure/stone_tile/cracked{ dir = 8 }, -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) (1,1,1) = {" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm index 307287d2e1..f48801c199 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm @@ -422,7 +422,7 @@ /turf/open/floor/pod/dark, /area/ruin/powered/snow_biodome) "UM" = ( -/obj/machinery/computer/monitor{ +/obj/machinery/computer/monitor/secret{ dir = 1 }, /turf/open/floor/pod/dark, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm index 430c211c87..971f28b965 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/template_noop) "b" = ( -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "c" = ( /turf/open/floor/plating/asteroid/basalt/lava_land_surface, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm index 82fc034946..cde7f9bee6 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/template_noop) "b" = ( -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "c" = ( /obj/structure/stone_tile/surrounding_tile{ diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm index 138cefc338..e3b9b291e5 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/template_noop) "b" = ( -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "c" = ( /turf/open/floor/plating/asteroid/basalt/lava_land_surface, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm new file mode 100644 index 0000000000..d8713fd40a --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm @@ -0,0 +1,990 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"c" = ( +/obj/item/clockwork/alloy_shards/small, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"d" = ( +/obj/structure/destructible/clockwork/wall_gear, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"e" = ( +/obj/item/stack/tile/brass, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"f" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"g" = ( +/obj/item/clockwork/alloy_shards/medium/gear_bit, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"h" = ( +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"i" = ( +/obj/structure/grille/ratvar/broken, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"j" = ( +/turf/closed/wall/clockwork, +/area/lavaland/surface/outdoors/unexplored) +"k" = ( +/obj/item/clockwork/alloy_shards/small, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"l" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"m" = ( +/obj/item/clockwork/alloy_shards/medium, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"n" = ( +/obj/item/clockwork/component/belligerent_eye/blind_eye, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"o" = ( +/obj/item/clockwork/alloy_shards/large, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"p" = ( +/obj/item/clockwork/alloy_shards/medium, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"q" = ( +/obj/structure/lattice/catwalk/clockwork, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"r" = ( +/obj/structure/lattice/clockwork, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"s" = ( +/obj/item/clockwork/alloy_shards/large, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"t" = ( +/obj/item/stack/tile/brass, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"u" = ( +/obj/structure/grille/ratvar, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"v" = ( +/obj/item/clockwork/alloy_shards/medium, +/obj/structure/lattice/clockwork, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"w" = ( +/obj/structure/grille/ratvar/broken, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"x" = ( +/obj/structure/destructible/clockwork/wall_gear, +/obj/item/stack/tile/brass, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"y" = ( +/obj/item/clockwork/component/geis_capacitor/fallen_armor, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"z" = ( +/obj/structure/destructible/clockwork/wall_gear, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"A" = ( +/obj/item/clockwork/alloy_shards/clockgolem_remains, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"B" = ( +/obj/item/clockwork/weapon/ratvarian_spear, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"C" = ( +/obj/item/clockwork/alloy_shards/medium/gear_bit, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"D" = ( +/obj/structure/grille/ratvar, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"E" = ( +/obj/item/clockwork/alloy_shards/clockgolem_remains, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"F" = ( +/obj/structure/dead_ratvar, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"G" = ( +/obj/item/stack/tile/brass/fifty, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +b +s +h +b +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +o +b +a +h +b +r +c +j +x +b +b +g +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +f +b +l +b +v +b +p +w +j +j +c +l +b +b +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +f +l +l +r +b +b +l +j +j +j +p +l +b +h +c +r +a +a +"} +(5,1,1) = {" +a +a +a +a +a +b +l +l +p +h +c +l +l +l +j +l +b +l +l +D +h +r +a +a +"} +(6,1,1) = {" +a +a +a +h +c +h +m +l +l +c +l +l +l +l +w +l +l +l +m +c +h +f +a +a +"} +(7,1,1) = {" +a +a +b +b +b +l +l +l +l +h +b +l +l +l +l +l +l +l +l +c +f +f +b +a +"} +(8,1,1) = {" +a +h +h +g +c +b +l +l +l +l +n +h +r +l +l +b +l +l +l +l +f +b +a +a +"} +(9,1,1) = {" +a +b +c +b +b +l +l +l +l +t +h +b +h +w +p +b +g +l +l +b +b +b +b +a +"} +(10,1,1) = {" +b +h +l +l +l +l +l +l +b +b +p +r +F +b +h +A +b +l +l +l +m +l +l +a +"} +(11,1,1) = {" +c +i +j +j +l +l +l +l +l +b +h +k +h +h +h +r +l +l +l +l +l +l +b +a +"} +(12,1,1) = {" +d +j +j +j +h +l +l +b +l +q +r +h +h +h +c +q +l +b +l +l +b +h +o +a +"} +(13,1,1) = {" +e +k +b +l +l +l +b +p +s +r +h +h +h +h +h +h +h +l +l +l +l +b +b +a +"} +(14,1,1) = {" +b +b +b +m +l +l +l +b +h +h +k +h +h +h +h +h +c +b +l +l +b +b +h +b +"} +(15,1,1) = {" +b +b +b +l +l +l +l +h +h +h +h +h +h +h +k +B +h +l +l +l +l +b +b +a +"} +(16,1,1) = {" +f +l +l +l +l +l +l +q +b +h +h +h +h +h +h +s +b +l +l +l +l +f +f +a +"} +(17,1,1) = {" +b +b +b +l +l +l +b +l +q +r +h +h +h +h +h +b +s +r +l +r +l +l +b +a +"} +(18,1,1) = {" +b +h +l +l +l +b +b +h +b +h +h +h +h +h +r +k +b +C +r +h +b +b +m +b +"} +(19,1,1) = {" +b +b +l +l +l +l +h +b +h +h +h +h +h +h +h +r +j +h +c +h +r +h +b +b +"} +(20,1,1) = {" +b +l +l +l +l +b +b +p +h +c +h +k +h +h +o +b +l +l +l +b +E +r +G +o +"} +(21,1,1) = {" +g +b +l +l +l +l +l +r +h +r +h +h +h +h +y +l +l +l +l +l +l +j +j +r +"} +(22,1,1) = {" +c +c +b +l +l +b +h +h +t +b +h +h +h +h +h +m +b +l +l +l +h +j +j +j +"} +(23,1,1) = {" +b +h +m +n +b +h +l +o +j +u +r +p +h +r +h +b +l +l +l +b +b +w +r +b +"} +(24,1,1) = {" +a +a +b +b +l +l +l +j +j +q +p +h +m +e +z +j +j +l +l +c +l +l +b +a +"} +(25,1,1) = {" +a +a +a +l +l +l +l +j +l +l +b +h +r +x +h +l +l +l +l +l +l +a +a +a +"} +(26,1,1) = {" +a +a +a +c +b +l +l +l +l +l +l +g +q +b +h +l +l +l +c +m +b +a +a +a +"} +(27,1,1) = {" +a +a +a +b +h +b +l +l +l +l +l +l +l +l +l +l +l +l +l +b +a +a +a +a +"} +(28,1,1) = {" +a +a +a +a +c +b +l +b +l +l +l +l +l +l +l +l +b +l +f +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +a +b +b +f +c +b +l +c +l +l +l +l +c +o +l +b +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +a +a +g +c +b +l +l +b +m +l +b +l +f +b +a +a +a +a +a +a +a +"} +(31,1,1) = {" +a +a +a +a +a +a +a +b +l +b +a +b +l +c +f +f +a +a +a +a +a +a +a +a +"} +(32,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +c +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm index 9c9cbe4fc4..d3ebc38fb7 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm @@ -195,7 +195,6 @@ /area/ruin/unpowered) "C" = ( /obj/structure/chair/wood/wings{ - icon_state = "wooden_chair_wings"; dir = 4 }, /obj/effect/decal/cleanable/dirt, @@ -253,7 +252,6 @@ /area/ruin/unpowered) "K" = ( /obj/structure/chair/wood/wings{ - icon_state = "wooden_chair_wings"; dir = 1 }, /obj/effect/decal/remains/human, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm index 809e520279..67a4ed46cd 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/lavaland/surface/outdoors) "b" = ( -/turf/closed/mineral/volcanic, +/turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) "c" = ( /turf/open/floor/plating/asteroid/basalt/lava_land_surface, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm index 073ecb7c4d..ba291fc258 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -21,11 +21,17 @@ /turf/open/floor/plasteel/freezer, /area/ruin/powered/seedvault) "f" = ( -/obj/machinery/plantgenes/seedvault, +/obj/machinery/plantgenes/seedvault{ + pixel_y = 6 + }, +/obj/structure/table/wood, /turf/open/floor/plasteel/freezer, /area/ruin/powered/seedvault) "g" = ( /obj/structure/table/wood, +/obj/machinery/smartfridge/disks{ + pixel_y = 2 + }, /turf/open/floor/plasteel/freezer, /area/ruin/powered/seedvault) "h" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index ba9b8b5c36..1a81c5c303 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -100,6 +100,31 @@ /obj/machinery/chem_dispenser/fullupgrade, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/chemistry) +"aW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"bb" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"bh" = ( +/obj/structure/table/reinforced, +/obj/item/integrated_circuit_printer/upgraded, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/circuits) "cA" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/chemistry, @@ -1269,6 +1294,7 @@ /obj/item/circuitboard/machine/processor, /obj/item/circuitboard/machine/gibber, /obj/item/circuitboard/machine/deep_fryer, +/obj/item/circuitboard/machine/cell_charger, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/cargo) "ft" = ( @@ -3438,7 +3464,7 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/machinery/computer/monitor, +/obj/machinery/computer/monitor/secret, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, @@ -4847,15 +4873,18 @@ }, /area/ruin/unpowered/syndicate_lava_base/arrivals) "nv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 }, /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, /turf/open/floor/plasteel/red/corner{ dir = 1 }, @@ -5190,10 +5219,15 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/arrivals) "nY" = ( -/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/arrivals) "nZ" = ( +/obj/machinery/light/small, /turf/open/floor/plasteel/white/side{ dir = 4 }, @@ -5508,6 +5542,50 @@ /obj/structure/sign/departments/chemistry, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/testlab) +"pn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"sJ" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id = "lavalandsyndi_circuits" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"tZ" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"yC" = ( +/obj/structure/table/reinforced, +/obj/item/integrated_circuit_printer/upgraded, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"Al" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/circuits) "EZ" = ( /obj/machinery/door/airlock/external{ req_access_txt = "150" @@ -5516,6 +5594,37 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) +"FK" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"Gj" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/apc/syndicate{ + dir = 1; + name = "Circuit Lab APC"; + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"MP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"Oa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"Pa" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/circuits) "St" = ( /obj/structure/fans/tiny, /obj/machinery/door/airlock/external{ @@ -5526,6 +5635,71 @@ }, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) +"UP" = ( +/obj/structure/table/reinforced, +/obj/machinery/airalarm/syndicate{ + dir = 8; + pixel_x = 24 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_x = 7; + pixel_y = -5 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_x = -8; + pixel_y = -3 + }, +/obj/item/multitool{ + pixel_x = -1; + pixel_y = -13 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"Wg" = ( +/obj/structure/table/reinforced, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_x = -8; + pixel_y = -3 + }, +/obj/item/multitool, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"Yr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"Yu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "lavalandsyndi_circuits"; + name = "Circuitry Blast Door Control"; + pixel_y = 26; + req_access_txt = "150" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/circuits) +"ZW" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/obj/item/integrated_electronics/analyzer{ + pixel_x = -12; + pixel_y = 4 + }, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/circuits) (1,1,1) = {" aa @@ -6647,10 +6821,10 @@ jy ns nV oo -ox -ab -ab -ab +Pa +Pa +Pa +Pa ab ab ab @@ -6694,10 +6868,10 @@ jy nt nW oq -mT -ab -ab -ab +Pa +Wg +bh +sJ ab ab ab @@ -6740,11 +6914,11 @@ jy jy nu nX -om -mT -ab -ab -ab +MP +Pa +Yu +tZ +sJ ab ab ab @@ -6787,11 +6961,11 @@ jy mX nv nY -mT -mT -ab -ab -ab +aW +pn +Al +FK +sJ ab ab ab @@ -6834,11 +7008,11 @@ mz mY nw nZ -mT -ab -ab -ab -ab +Pa +Gj +Oa +ZW +sJ ab ab ab @@ -6881,11 +7055,11 @@ kQ kT nx kR -kQ -kQ -ab -ab -ab +Pa +Pa +Yr +bb +sJ ab ab ab @@ -6929,10 +7103,10 @@ mZ ny oa or -kQ -ab -ab -ab +Pa +UP +yC +sJ ab ab ab @@ -6976,10 +7150,10 @@ na nz ob os -kQ -ac -ab -ab +Pa +Pa +Pa +Pa ab ab ab diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm index 6ec018c5a6..de17c80b51 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm @@ -74,6 +74,12 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/xenonest) +"w" = ( +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/obj/structure/alien/resin/wall, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/xenonest) "y" = ( /obj/structure/alien/weeds/node, /obj/structure/alien/resin/wall, @@ -119,6 +125,9 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/xenonest) +"G" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "H" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood, @@ -178,16 +187,16 @@ a a a -a -a -a -b -b -b -b -a -a -a +G +G +G +G +G +G +G +G +G +G a a a @@ -210,17 +219,17 @@ a a a a -a +G b b b -s -e b b b -a -a +b +b +G +G a a a @@ -241,18 +250,18 @@ a (3,1,1) = {" a a -a -a +G +G b g e e +b g -s g b b -a +G a a a @@ -273,18 +282,18 @@ a (4,1,1) = {" a a -a +G b b -s g g -s +g +g E g e b -a +G a a a @@ -305,18 +314,18 @@ a (5,1,1) = {" a a -a +G b g g y -i -g -g -y -g b -a +b +b +y +b +b +G a a a @@ -337,18 +346,18 @@ a (6,1,1) = {" a a -a +G b g g -i +w g F u I -H b -a +b +G a a a @@ -369,18 +378,18 @@ a (7,1,1) = {" a a -a +G b e t g g -g +s H u g b -a +G a a a @@ -401,18 +410,18 @@ a (8,1,1) = {" a a -a +G b i u -g -g +b +s l -g +s t e b -a +G a a a @@ -433,18 +442,18 @@ a (9,1,1) = {" a a -a +G b o v g -g -g +b +s g e -g b -a +b +G a a a @@ -465,7 +474,7 @@ a (10,1,1) = {" a a -a +G b g u @@ -476,7 +485,7 @@ g y e b -a +G a a a @@ -497,18 +506,18 @@ a (11,1,1) = {" a a -a +G b b g +t g g -g -g +t g g b -a +G a a a @@ -529,8 +538,8 @@ a (12,1,1) = {" a a -a -a +G +G b e g @@ -540,7 +549,7 @@ g g g b -a +G a a a @@ -562,7 +571,7 @@ b a a a -a +G b b g @@ -572,7 +581,7 @@ g g b b -a +G a a a @@ -594,8 +603,8 @@ b a a a -a -a +G +G b b g @@ -603,8 +612,8 @@ g g b b -a -a +G +G a a a @@ -627,15 +636,15 @@ a a a a -a -a +G +G b b b b b -a -a +G +G a a a @@ -660,13 +669,13 @@ a a a a -a +G b l l b -a -a +G +G a a a @@ -694,11 +703,11 @@ a a a b -g +E g b b -a +G b b b @@ -728,7 +737,7 @@ a b g g -g +E b b b diff --git a/_maps/RandomRuins/SpaceRuins/DJstation.dmm b/_maps/RandomRuins/SpaceRuins/DJstation.dmm index e1f451df09..b627a7b53e 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation.dmm @@ -74,7 +74,6 @@ icon_state = "0-4" }, /obj/machinery/power/apc{ - dir = 0; name = "Worn-out APC"; pixel_y = -24 }, diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index 2ccc6969bd..14790c62f4 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -328,7 +328,7 @@ /turf/closed/wall/r_wall, /area/ruin/unpowered/no_grav) "aZ" = ( -/obj/machinery/computer/monitor{ +/obj/machinery/computer/monitor/secret{ dir = 4 }, /obj/structure/cable{ @@ -848,7 +848,6 @@ "cQ" = ( /obj/structure/cable, /obj/machinery/power/apc{ - dir = 0; name = "Worn-out APC"; pixel_y = -24 }, @@ -1560,7 +1559,6 @@ "fg" = ( /obj/structure/table, /obj/machinery/power/apc{ - dir = 0; name = "Worn-out APC"; pixel_y = -24 }, @@ -2001,7 +1999,6 @@ "gB" = ( /obj/structure/cable, /obj/machinery/power/apc{ - dir = 0; name = "Worn-out APC"; pixel_y = -24 }, @@ -2169,7 +2166,7 @@ /turf/open/floor/plasteel, /area/ruin/space/derelict/arrival) "hj" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /turf/open/floor/plasteel/dark, /area/ruin/space/derelict/medical/chapel) "hk" = ( @@ -2603,7 +2600,7 @@ dir = 4; req_access_txt = "25" }, -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /turf/open/floor/plating, /area/ruin/space/derelict/medical/chapel) "iL" = ( @@ -2855,7 +2852,6 @@ /area/ruin/space/derelict/medical/chapel) "jz" = ( /obj/machinery/power/apc{ - dir = 0; name = "Worn-out APC"; pixel_y = -24 }, @@ -3130,7 +3126,6 @@ "kr" = ( /obj/structure/cable, /obj/machinery/power/apc{ - dir = 0; name = "Worn-out APC"; pixel_y = -24 }, @@ -3314,7 +3309,6 @@ "la" = ( /obj/structure/cable, /obj/machinery/power/apc{ - dir = 0; name = "Worn-out APC"; pixel_y = -24 }, diff --git a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm index 5348f3f385..7d9bdf6485 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm @@ -294,7 +294,7 @@ /area/ruin/space/has_grav/abandonedzoo) "aP" = ( /obj/structure/table/reinforced, -/obj/item/reagent_containers/glass/bottle/liver_enhance_virion, +/obj/item/reagent_containers/glass/bottle/random_virus, /obj/item/reagent_containers/dropper, /turf/open/floor/plasteel{ icon_state = "dark" diff --git a/_maps/RandomRuins/SpaceRuins/bus.dmm b/_maps/RandomRuins/SpaceRuins/bus.dmm index be05a8d1d6..fe624c19bf 100644 --- a/_maps/RandomRuins/SpaceRuins/bus.dmm +++ b/_maps/RandomRuins/SpaceRuins/bus.dmm @@ -334,6 +334,16 @@ /obj/item/stack/sheet/metal/fifty, /turf/open/floor/plating/asteroid/airless, /area/ruin/unpowered/no_grav) +"XA" = ( +/obj/structure/fluff/bus/passable/seat{ + icon_state = "backseat" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/plush/awakenedplushie, +/turf/open/floor/plasteel/airless/dark{ + icon_state = "bus" + }, +/area/ruin/unpowered/no_grav) (1,1,1) = {" aa @@ -484,7 +494,7 @@ ab ae ad aj -am +XA az aK ad diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm index 4a5e30bf6a..123f84eef6 100644 --- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm +++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm @@ -33,7 +33,7 @@ /area/template_noop) "ah" = ( /obj/structure/lattice/catwalk, -/mob/living/simple_animal/hostile/pirate/space{ +/mob/living/simple_animal/hostile/pirate/space/ranged{ environment_smash = 0 }, /turf/template_noop, @@ -176,7 +176,7 @@ /area/shuttle/caravan/freighter3) "aP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, -/mob/living/simple_animal/hostile/pirate/space{ +/mob/living/simple_animal/hostile/pirate/space/ranged{ environment_smash = 0 }, /turf/open/floor/plasteel/airless/floorgrime, @@ -404,6 +404,8 @@ /area/shuttle/caravan/freighter3) "gt" = ( /obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted, /turf/open/floor/plasteel/airless/dark, /area/shuttle/caravan/freighter3) "gv" = ( @@ -471,7 +473,7 @@ /turf/open/floor/plating/airless, /area/shuttle/caravan/freighter3) "gT" = ( -/mob/living/simple_animal/hostile/syndicate/melee/space{ +/mob/living/simple_animal/hostile/syndicate/ranged/space{ environment_smash = 0; name = "Syndicate Salvage Worker" }, @@ -612,6 +614,10 @@ /obj/effect/turf_decal/box/white/corners{ dir = 1 }, +/mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper{ + environment_smash = 0; + name = "Syndicate Salvage Leader" + }, /turf/open/floor/plasteel/airless/dark, /area/shuttle/caravan/freighter3) "hz" = ( @@ -625,10 +631,6 @@ }, /area/shuttle/caravan/freighter3) "hB" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper{ - environment_smash = 0; - name = "Syndicate Salvage Leader" - }, /turf/open/floor/plasteel/airless{ icon_state = "damaged2" }, @@ -892,967 +894,6 @@ }, /area/shuttle/caravan/freighter3) "iD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/mob/living/simple_animal/hostile/syndicate/melee/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter3) -"iF" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"iH" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/turf/open/floor/plasteel/darkblue/side{ - dir = 10; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter3) -"iT" = ( -/obj/machinery/space_heater, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -<<<<<<< HEAD -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 20 - }, -======= ->>>>>>> ee3446e... Templates the caravan ambush ruin shuttles (#37474) -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"iU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter2) -"iV" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 4 - }, -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/shotgun/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/ballistic/shotgun/riot, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"iW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/secure/weapon, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/gun/syringe/rapidsyringe, -/obj/item/gun/syringe/syndicate{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"iX" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"iY" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/blue/corner{ - dir = 4; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter2) -"ja" = ( -/obj/effect/turf_decal/bot_white, -/obj/structure/closet/crate/secure/engineering, -/obj/item/organ/cyberimp/arm/toolset, -/obj/item/organ/cyberimp/eyes/hud/medical, -/obj/item/organ/cyberimp/brain/anti_stun, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"jb" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged3" - }, -/area/shuttle/caravan/freighter3) -"jc" = ( -/obj/effect/turf_decal/bot_white, -/obj/structure/closet/crate/secure/plasma, -/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"jd" = ( -/obj/effect/turf_decal/bot_white, -/obj/machinery/light/small, -/obj/machinery/button/door{ - id = "caravantrade3_cargo_starboard"; - name = "Cargo Blast Door Control"; - pixel_y = -24 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"je" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/sign/warning/vacuum{ - pixel_x = -32; - pixel_y = -32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"jp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/obj/item/wrench, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"jq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter2) -"jr" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"js" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"jt" = ( -/obj/effect/turf_decal/box/white/corners, -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/energy/e_gun/mini{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/e_gun/mini, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"ju" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/all_access{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter2) -"jv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"jy" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade3_cargo_starboard"; - name = "Cargo Blast Door" - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter3) -"jA" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/secure/engineering, -/obj/item/wrench/caravan, -/obj/item/wirecutters/caravan, -/obj/item/crowbar/red/caravan, -/obj/item/screwdriver/caravan, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"jH" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"jI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter2) -"jJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter2) -"jK" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched1" - }, -/area/shuttle/caravan/freighter2) -"jL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/mob/living/simple_animal/hostile/pirate/space/ranged{ - environment_smash = 0 - }, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter2) -"jN" = ( -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched1" - }, -/area/shuttle/caravan/freighter2) -"jO" = ( -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/pirate/space/ranged{ - environment_smash = 0 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"jP" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/item/paper_bin{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/pen{ - pixel_x = 6; - pixel_y = 6 -<<<<<<< HEAD - }, -/obj/item/folder/yellow{ - pixel_x = -6 - }, -/obj/item/device/gps{ - gpstag = "Distress Signal" - }, -/turf/open/floor/plasteel/darkblue/side{ - dir = 6; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter1) -"gq" = ( -/obj/structure/shuttle/engine/propulsion/burst/left{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter3) -"gs" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"gt" = ( -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"gv" = ( -/obj/effect/turf_decal/bot_white, -/obj/structure/closet/crate/secure/engineering, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/electrical, -/obj/item/storage/toolbox/electrical, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/device/multitool, -/obj/item/device/multitool, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"gw" = ( -/obj/effect/turf_decal/bot_white, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "caravantrade3_cargo_port"; - name = "Cargo Blast Door Control"; - pixel_y = 24 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"gy" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/sign/warning/vacuum{ - pixel_x = -32; - pixel_y = 32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"gD" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/item/stack/rods/ten, -/obj/item/storage/box/lights/bulbs, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter1) -"gJ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter1) -"gN" = ( -/obj/effect/decal/cleanable/blood, -/mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper{ - environment_smash = 0; - name = "Syndicate Salvage Leader" - }, -/turf/open/floor/plasteel/darkblue/corner{ - dir = 4; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter1) -"gO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/trade1{ - dir = 8 - }, -/turf/open/floor/plasteel/darkblue/side{ - dir = 9; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter1) -"gP" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter3) -"gQ" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter3) -"gR" = ( -/obj/machinery/power/smes{ - charge = 0 - }, -/obj/structure/cable/yellow, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter3) -"gT" = ( -/mob/living/simple_animal/hostile/syndicate/melee/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter3) -"gU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter3) -"gV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched1" - }, -/area/shuttle/caravan/freighter3) -"gW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/blue/side{ - dir = 4; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter3) -"gY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"ha" = ( -/obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/pen{ - pixel_x = 6; - pixel_y = 6 - }, -/turf/open/floor/plasteel/darkblue/side{ - dir = 9; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter3) -"hb" = ( -/obj/structure/cable, -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/obj/item/wrench, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter1) -"hc" = ( -/obj/machinery/airalarm/all_access{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg1" - }, -/area/shuttle/caravan/freighter1) -"hd" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter1) -"he" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter1) -"hf" = ( -/obj/machinery/door/airlock{ - name = "Crew Quarters" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter1) -"hg" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/airalarm/all_access{ - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter1) -"hh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/blue/side{ - dir = 4; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter1) -"hi" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/command{ - name = "Bridge" - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"hj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"hk" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mob_spawn/human/corpse/cargo_tech, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/plasteel/darkblue/corner{ - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter1) -"hl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/shuttle/caravan/trade1{ - dir = 8 - }, -/turf/open/floor/plasteel/darkblue/side{ - dir = 10; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter1) -"hm" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/caravan/freighter2) -"hn" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/caravan/freighter2) -"ho" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/poddoor/preopen{ - id = "caravantrade2_cargo_port"; - name = "Cargo Blast Door" - }, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg3" - }, -/area/shuttle/caravan/freighter2) -"hp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/poddoor/preopen{ - id = "caravantrade2_cargo_port"; - name = "Cargo Blast Door" - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"hq" = ( -/obj/machinery/door/poddoor/preopen{ - id = "caravantrade2_cargo_port"; - name = "Cargo Blast Door" - }, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg3" - }, -/area/shuttle/caravan/freighter2) -"hr" = ( -/obj/machinery/door/poddoor/preopen{ - id = "caravantrade2_cargo_port"; - name = "Cargo Blast Door" - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"hs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/external{ - req_access_txt = "13" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"ht" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/caravan/freighter2) -"hu" = ( -/obj/machinery/space_heater, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter3) -"hv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter3) -"hw" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 4 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"hx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/closet/crate/secure/plasma, -/obj/item/tank/internals/plasma/full, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"hy" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"hz" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/blue/corner{ - dir = 4; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter3) -"hB" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper{ - environment_smash = 0; - name = "Syndicate Salvage Leader" - }, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged2" - }, -/area/shuttle/caravan/freighter3) -"hD" = ( -/obj/structure/shuttle/engine/propulsion/burst/right{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter1) -"hE" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter1) -"hF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/meter, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter1) -"hG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter1) -"hH" = ( -/obj/structure/rack, -/obj/item/storage/belt/utility, -/obj/structure/extinguisher_cabinet{ - pixel_y = 29 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter1) -"hI" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/table, -/obj/item/stack/packageWrap, -/obj/item/crowbar, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/machinery/airalarm/all_access{ - pixel_y = 24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter1) -"hJ" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/obj/item/stack/cable_coil/yellow{ - pixel_x = 12; - pixel_y = 4 - }, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter1) -"hK" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter1) -"hM" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter1) -"hN" = ( -/obj/structure/rack, -/obj/item/tank/internals/oxygen, -/obj/item/device/radio, -/obj/item/clothing/mask/gas, -/turf/open/floor/plasteel/blue/corner{ - dir = 4; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter1) -"hO" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/item/storage/toolbox/emergency, -/obj/item/wrench, -/turf/open/floor/plasteel/darkblue/side{ - dir = 9; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter1) -"hP" = ( -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "caravantrade1_bridge"; - name = "Ship Blast Door Control" - }, -/turf/open/floor/plasteel/darkblue/side{ - dir = 5; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter1) -"hQ" = ( -/obj/structure/shuttle/engine/propulsion/burst/left{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"hS" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged5" - }, -/area/shuttle/caravan/freighter2) -"hT" = ( -/obj/effect/turf_decal/bot_white, -/obj/structure/closet/crate/secure/gear, -/obj/item/ammo_casing/shotgun/ion, -/obj/item/ammo_casing/shotgun/pulseslug, -/obj/item/ammo_casing/shotgun/dragonsbreath, -/obj/item/ammo_casing/shotgun/techshell, -/obj/item/ammo_casing/shotgun/techshell, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"hU" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged2" - }, -/area/shuttle/caravan/freighter2) -"hV" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/secure/gear, -/obj/item/storage/box/lethalshot, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/ammo_casing/shotgun/frag12, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"hW" = ( -/obj/effect/turf_decal/bot_white, -/obj/structure/closet/crate/secure/gear, -/obj/machinery/button/door{ - id = "caravantrade2_cargo_port"; - name = "Cargo Blast Door Control"; - pixel_y = 24 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/item/ammo_box/c10mm, -/obj/item/ammo_box/magazine/m10mm{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/magazine/m10mm, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"hX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/sign/warning/vacuum{ - pixel_x = -32; - pixel_y = 32 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"hY" = ( -/obj/structure/rack, -/obj/item/weldingtool, -/obj/item/crowbar, -/obj/item/wirecutters, -/obj/item/wrench, -/obj/item/screwdriver{ - pixel_y = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"hZ" = ( -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/obj/item/wrench, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter3) -"ia" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged2" - }, -/area/shuttle/caravan/freighter3) -"ib" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/obj/structure/closet/crate/secure/plasma, -/obj/item/tank/internals/plasma/full, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter3) -"ic" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged5" - }, -/area/shuttle/caravan/freighter3) -"id" = ( -/obj/effect/turf_decal/box/white/corners, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"ie" = ( -/obj/machinery/airalarm/all_access{ - dir = 8; - pixel_x = 24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter3) -"if" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"ig" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/mob_spawn/human/corpse/cargo_tech, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter3) -"ih" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/frame/computer{ - dir = 8 - }, -/obj/item/shard, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged3" - }, -/area/shuttle/caravan/freighter3) -"ii" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter1) -"ij" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched1" - }, -/area/shuttle/caravan/freighter1) -"ik" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -1860,136 +901,6 @@ environment_smash = 0; name = "Syndicate Salvage Worker" }, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter1) -"il" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/airless/floorgrime, -/area/shuttle/caravan/freighter1) -"im" = ( -/obj/item/stack/sheet/mineral/titanium, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged1" - }, -/area/shuttle/caravan/freighter1) -"in" = ( -/obj/effect/turf_decal/bot_white, -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/vault/airless, -/area/shuttle/caravan/freighter1) -"io" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"ip" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"iq" = ( -/obj/machinery/power/smes{ - charge = 0 - }, -/obj/structure/cable/yellow, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"is" = ( -/turf/open/floor/plasteel/airless{ - icon_state = "damaged2" - }, -/area/shuttle/caravan/freighter2) -"it" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/airless, -/area/shuttle/caravan/freighter2) -"iu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged3" - }, -/area/shuttle/caravan/freighter2) -"iv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/blue/side{ - dir = 4; - initial_gas_mix = "TEMP=2.7" - }, -/area/shuttle/caravan/freighter2) -"ix" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched1" - }, -/area/shuttle/caravan/freighter2) -"iy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/fluff/broken_flooring{ - icon_state = "pile" - }, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg1" - }, -/area/shuttle/caravan/freighter2) -"iz" = ( -/obj/item/shard, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg3" - }, -/area/shuttle/caravan/freighter3) -"iA" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg1" - }, -/area/shuttle/caravan/freighter3) -"iB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter3) -"iC" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched1" - }, -/area/shuttle/caravan/freighter3) -"iD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/mob/living/simple_animal/hostile/syndicate/melee/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, /turf/open/floor/plasteel/airless/floorgrime, /area/shuttle/caravan/freighter3) "iF" = ( @@ -2004,82 +915,6 @@ initial_gas_mix = "TEMP=2.7" }, /area/shuttle/caravan/freighter3) -"iI" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 4 - }, -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"iJ" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"iL" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 4 - }, -/obj/structure/closet/crate, -/obj/item/stack/sheet/rglass{ - amount = 20 - }, -/obj/item/stack/sheet/rglass{ - amount = 20 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"iM" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"iN" = ( -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched2" - }, -/area/shuttle/caravan/freighter1) -"iO" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 4 - }, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged4" - }, -/area/shuttle/caravan/freighter1) -"iP" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged5" - }, -/area/shuttle/caravan/freighter1) -"iR" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter1) -"iS" = ( -/obj/structure/girder, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg1" - }, -/area/shuttle/caravan/freighter1) "iT" = ( /obj/machinery/space_heater, /obj/machinery/power/terminal{ @@ -2181,53 +1016,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/airless/dark, /area/shuttle/caravan/freighter3) -"jg" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"jh" = ( -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"ji" = ( -/mob/living/simple_animal/hostile/syndicate/melee/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/plasteel/vault/airless, -/area/shuttle/caravan/freighter1) -"jj" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"jk" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/titanium{ - amount = 20 - }, -/obj/item/stack/sheet/mineral/titanium{ - amount = 20 - }, -/turf/open/floor/plasteel/vault/airless, -/area/shuttle/caravan/freighter1) -"jl" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"jm" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged2" - }, -/area/shuttle/caravan/freighter1) "jp" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/port_gen/pacman{ @@ -2289,13 +1077,6 @@ }, /turf/open/floor/plating/airless, /area/shuttle/caravan/freighter3) -"jz" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) "jA" = ( /obj/effect/turf_decal/bot_white, /obj/effect/decal/cleanable/dirt, @@ -2306,40 +1087,6 @@ /obj/item/screwdriver/caravan, /turf/open/floor/plasteel/airless/dark, /area/shuttle/caravan/freighter3) -"jB" = ( -/turf/open/floor/plasteel/vault/airless, -/area/shuttle/caravan/freighter1) -"jC" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"jD" = ( -/obj/effect/turf_decal/box/white/corners, -/obj/structure/closet/crate, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter1) -"jE" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged3" - }, -/area/shuttle/caravan/freighter1) -"jF" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/obj/structure/closet/crate, -/obj/item/stack/sheet/plasteel/twenty, -/obj/item/stack/sheet/plasteel/twenty, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged5" - }, -/area/shuttle/caravan/freighter1) "jH" = ( /obj/machinery/atmospherics/components/unary/tank/air{ dir = 4 @@ -2405,720 +1152,6 @@ }, /turf/open/floor/plating/airless, /area/shuttle/caravan/freighter2) -"jQ" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade1_cargo"; - name = "Cargo Blast Door" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter1) -"jR" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade1_cargo"; - name = "Cargo Blast Door" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg3" - }, -/area/shuttle/caravan/freighter1) -"jS" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade1_cargo"; - name = "Cargo Blast Door" - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter1) -"jT" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg3" - }, -/area/shuttle/caravan/freighter1) -"jV" = ( -/obj/structure/shuttle/engine/propulsion/burst/right{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"jW" = ( -/obj/effect/turf_decal/bot_white/left, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door{ - id = "caravantrade2_cargo_starboard"; - name = "Cargo Blast Door Control"; - pixel_y = -24 - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"jX" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"jY" = ( -/obj/effect/turf_decal/bot_white, -/obj/structure/closet/crate/secure/gear, -/obj/item/ammo_box/a40mm, -/obj/item/ammo_box/a40mm, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"jZ" = ( -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"ka" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door{ - id = "caravantrade2_cargo_starboard"; - name = "Cargo Blast Door Control"; - pixel_y = -24 - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"kb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/sign/warning/vacuum{ - pixel_x = -32; - pixel_y = -32 - }, -/turf/open/floor/plasteel/airless/dark, -/area/shuttle/caravan/freighter2) -"kc" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/item/tank/internals/oxygen, -/obj/item/device/radio, -/obj/item/clothing/mask/gas, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged5" - }, -/area/shuttle/caravan/freighter2) -"kd" = ( -/obj/structure/grille/broken, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg2" - }, -/area/shuttle/caravan/freighter2) -"ke" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/poddoor{ - id = "caravantrade2_cargo_starboard"; - name = "Cargo Blast Door" - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"kf" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade2_cargo_starboard"; - name = "Cargo Blast Door" - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) -"kg" = ( -/obj/machinery/porta_turret/syndicate/energy{ - dir = 1; - icon_state = "standard_lethal"; - mode = 1 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/caravan/syndicate2) -"kh" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/caravan/syndicate1) -"ki" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/caravan/syndicate1) -"kj" = ( -/obj/machinery/porta_turret/syndicate/energy{ - dir = 4; - icon_state = "standard_lethal"; - mode = 1 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/caravan/syndicate1) -"kk" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/caravan/syndicate2) -"kl" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/caravan/syndicate2) -"km" = ( -/obj/machinery/camera/xray{ - c_tag = "External View"; - dir = 1; - network = list("caravansyndicate2"); - pixel_y = 32 - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/caravan/syndicate2) -"kn" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/caravan/syndicate1) -"ko" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/caravan/syndicate3) -"kp" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/caravan/syndicate3) -"kq" = ( -/obj/machinery/porta_turret/syndicate/energy{ - dir = 1; - icon_state = "standard_lethal"; - mode = 1 - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/caravan/syndicate3) -"kr" = ( -/obj/machinery/door/airlock/hatch{ - id_tag = "caravansyndicate3_bolt_port"; - name = "External Airlock"; - normalspeed = 0; - req_access_txt = "150" - }, -/obj/docking_port/stationary{ - dir = 2; - dwidth = 6; - height = 7; - id = "caravansyndicate3_ambush"; - name = "Trade Route"; - width = 15 - }, -/obj/docking_port/mobile{ - dir = 2; - dwidth = 6; - height = 7; - id = "caravansyndicate3"; - name = "Syndicate Drop Ship"; - port_direction = 8; - preferred_direction = 4; - timid = 0; - width = 15 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/plating, -/area/shuttle/caravan/syndicate3) -"ks" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/obj/machinery/door/poddoor{ - id = "caravansyndicate3_bridge" - }, -/turf/open/floor/plating, -/area/shuttle/caravan/syndicate3) -"kt" = ( -/obj/machinery/computer/shuttle/caravan/syndicate2, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate2) -"ku" = ( -/obj/structure/shuttle/engine/propulsion/burst/left{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/syndicate3) -"kv" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/syndicate3) -"kw" = ( -/obj/structure/chair, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - dir = 8; - name = "Syndicate Drop Ship APC"; - pixel_x = -24; - req_access = null; - req_access_txt = "150" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/shuttle/caravan/syndicate3) -"kx" = ( -/obj/structure/chair, -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/shuttle/caravan/syndicate3) -"ky" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/shuttle/caravan/syndicate3) -"kz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/closet/syndicate/personal{ - anchored = 1 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate3) -"kB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/obj/structure/sign/warning/vacuum{ - pixel_y = 32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate3) -"kC" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/darkred/side{ - dir = 10 - }, -/area/shuttle/caravan/syndicate3) -"kD" = ( -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "caravansyndicate3_bridge"; - name = "Bridge Blast Door Control"; - pixel_x = -16; - pixel_y = 5; - req_access_txt = "150" - }, -/obj/machinery/button/door{ - id = "caravansyndicate3_bolt_bridge"; - name = "Bridge Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -16; - pixel_y = -5; - req_access_txt = "150"; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/darkred/side{ - dir = 6 - }, -/area/shuttle/caravan/syndicate3) -"kE" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/caravan/syndicate2) -"kF" = ( -/obj/machinery/button/door{ - id = "caravansyndicate2_bolt"; - name = "External Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - req_access_txt = "150"; - specialfunctions = 4 - }, -/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate2{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate2) -"kG" = ( -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/hatch{ - id_tag = "caravansyndicate1_bolt"; - name = "External Airlock"; - normalspeed = 0; - req_access_txt = "150" - }, -/obj/effect/decal/cleanable/dirt, -/obj/docking_port/stationary{ - dir = 4; - dwidth = 4; - height = 5; - id = "caravansyndicate1_ambush"; - name = "Trade Route"; - width = 9 - }, -/obj/docking_port/mobile{ - callTime = 50; - dir = 4; - dwidth = 4; - height = 5; - id = "caravansyndicate1"; - ignitionTime = 25; - name = "Syndicate Fighter"; - port_direction = 2; - preferred_direction = 4; - timid = 0; - width = 9 - }, -/turf/open/floor/plating, -/area/shuttle/caravan/syndicate1) -"kH" = ( -/obj/machinery/computer/security{ - dir = 8; - network = list("caravansyndicate2") - }, -/obj/machinery/power/apc/highcap/fifteen_k{ - dir = 2; - name = "Syndicate Fighter APC"; - pixel_y = -24; - req_access = null; - req_access_txt = "150" - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate2) -"kI" = ( -/obj/machinery/button/door{ - id = "caravansyndicate1_bolt"; - name = "External Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - req_access_txt = "150"; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate1, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate1) -"kJ" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/syndicate3) -"kL" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/darkred/side{ - dir = 1 - }, -/area/shuttle/caravan/syndicate3) -"kM" = ( -/turf/open/floor/plasteel/darkred/side{ - dir = 1 - }, -/area/shuttle/caravan/syndicate3) -"kN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate3) -"kO" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/shuttle/caravan/syndicate3) -"kP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate3) -"kQ" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/caravan/syndicate3) -"kR" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/machinery/turretid{ - ailock = 1; - control_area = null; - desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; - icon_state = "control_kill"; - lethal = 1; - name = "Shuttle turret control"; - pixel_y = 34; - req_access = null; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/darkred/corner{ - dir = 4 - }, -/area/shuttle/caravan/syndicate3) -"kS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate3{ - dir = 8 - }, -/turf/open/floor/plasteel/darkred/side{ - dir = 10 - }, -/area/shuttle/caravan/syndicate3) -"kT" = ( -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/hatch{ - id_tag = "caravansyndicate2_bolt"; - name = "External Airlock"; - normalspeed = 0; - req_access_txt = "150" - }, -/obj/docking_port/stationary{ - dir = 1; - dwidth = 4; - height = 5; - id = "caravansyndicate2_ambush"; - name = "Trade Route"; - width = 9 - }, -/obj/docking_port/mobile{ - callTime = 50; - dir = 1; - dwidth = 4; - height = 5; - id = "caravansyndicate2"; - ignitionTime = 25; - name = "Syndicate Fighter"; - port_direction = 2; - preferred_direction = 1; - timid = 0; - width = 9 - }, -/turf/open/floor/plating, -/area/shuttle/caravan/syndicate2) -"kU" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 2 - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/external{ - id_tag = "caravantrade1_bolt" - }, -/obj/docking_port/stationary{ - dir = 2; - dwidth = 11; - height = 11; - id = "caravantrade1_ambush"; - name = "Trade Route"; - width = 27 - }, -/obj/docking_port/mobile{ - callTime = 250; - dir = 2; - dwidth = 11; - height = 11; - id = "caravantrade1"; - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "Small Freighter"; - port_direction = 8; - preferred_direction = 4; - timid = 0; - width = 27 - }, -/turf/open/floor/plating, -/area/shuttle/caravan/freighter1) -"kV" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/turretid{ - ailock = 1; - control_area = null; - desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; - icon_state = "control_kill"; - lethal = 1; - name = "Shuttle turret control"; - pixel_x = 32; - pixel_y = -28; - req_access = null; - req_access_txt = "150" - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/mob/living/simple_animal/hostile/syndicate{ - environment_smash = 0; - name = "Syndicate Salvage Pilot" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate1) -"kW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/shuttle/caravan/syndicate1{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate1) -"kX" = ( -/obj/machinery/camera/xray{ - c_tag = "External View"; - dir = 4; - network = list("caravansyndicate1"); - pixel_x = 32 - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/caravan/syndicate1) -"kZ" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/caravan/syndicate3) -"la" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/caravan/syndicate3) -"lb" = ( -/obj/machinery/door/airlock/hatch{ - name = "Ready Room"; - req_access_txt = "150" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/caravan/syndicate3) -"lc" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/caravan/syndicate3) -"ld" = ( -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/hatch{ - id_tag = "caravansyndicate3_bolt_bridge"; - name = "Bridge"; - req_access_txt = "150" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/caravan/syndicate3) -"le" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/mob/living/simple_animal/hostile/syndicate{ - environment_smash = 0; - name = "Syndicate Salvage Pilot" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/caravan/syndicate3) -"lf" = ( -/obj/machinery/computer/shuttle/caravan/syndicate3{ - dir = 8 - }, -/turf/open/floor/plasteel/darkred/side{ - dir = 8 - }, -/area/shuttle/caravan/syndicate3) -"lg" = ( -/obj/machinery/power/apc/highcap/fifteen_k{ - dir = 8; - name = "Syndicate Fighter APC"; - pixel_x = -24; - req_access = null; - req_access_txt = "150" - }, -/obj/machinery/computer/security{ - dir = 1; - network = list("caravansyndicate1") - }, -/obj/structure/cable/yellow, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate1) -"li" = ( -/turf/open/floor/plasteel/darkred/side, -/area/shuttle/caravan/syndicate3) -"lj" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/darkred/side, -/area/shuttle/caravan/syndicate3) -"lk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate3) -"ll" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/caravan/syndicate3) -"lm" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/shuttle/caravan/syndicate3) -"ln" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred/corner, -/area/shuttle/caravan/syndicate3) -"lo" = ( -/obj/machinery/computer/crew{ - dir = 8 -======= ->>>>>>> ee3446e... Templates the caravan ambush ruin shuttles (#37474) - }, -/obj/item/folder/yellow{ - pixel_x = -6 - }, -/turf/open/floor/plating/airless, -/area/shuttle/caravan/freighter2) "jV" = ( /obj/structure/shuttle/engine/propulsion/burst/right{ dir = 8 @@ -3197,23 +1230,12 @@ id = "caravantrade2_cargo_starboard"; name = "Cargo Blast Door" }, -<<<<<<< HEAD -/area/shuttle/caravan/syndicate3) -"lx" = ( -/obj/structure/table/reinforced, -/obj/item/storage/firstaid/regular, -/obj/item/device/assembly/flash/handheld, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/darkred/side{ - dir = 5 -======= /turf/open/floor/plating/airless, /area/shuttle/caravan/freighter2) "kf" = ( /obj/machinery/door/poddoor{ id = "caravantrade2_cargo_starboard"; name = "Cargo Blast Door" ->>>>>>> ee3446e... Templates the caravan ambush ruin shuttles (#37474) }, /turf/open/floor/plating/airless, /area/shuttle/caravan/freighter2) diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 4c25dbb740..612d6d8f14 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -1218,10 +1218,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, +/turf/open/floor/plating/airless, /area/template_noop) "dM" = ( /obj/structure/table, @@ -1542,19 +1539,13 @@ icon_state = "0-4" }, /obj/machinery/power/solar, -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, +/turf/open/floor/plating/airless, /area/template_noop) "eJ" = ( /obj/structure/cable{ icon_state = "0-8" }, -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, +/turf/open/floor/plating/airless, /area/template_noop) "eK" = ( /obj/effect/decal/cleanable/dirt, @@ -2823,8 +2814,6 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (NORTHWEST)"; - icon_state = "orange"; dir = 9 }, /area/ruin/space/has_grav/ancientstation/rnd) @@ -2838,8 +2827,6 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (NORTH)"; - icon_state = "orange"; dir = 1 }, /area/ruin/space/has_grav/ancientstation/rnd) @@ -2853,8 +2840,6 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (NORTHEAST)"; - icon_state = "orange"; dir = 5 }, /area/ruin/space/has_grav/ancientstation/rnd) @@ -2886,10 +2871,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, +/turf/open/floor/plating/airless, /area/template_noop) "hN" = ( /obj/structure/lattice/catwalk, @@ -3002,8 +2984,6 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (EAST)"; - icon_state = "orange"; dir = 4 }, /area/ruin/space/has_grav/ancientstation/rnd) @@ -3129,8 +3109,6 @@ dir = 4 }, /turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (EAST)"; - icon_state = "orange"; dir = 4 }, /area/ruin/space/has_grav/ancientstation/rnd) @@ -3181,8 +3159,6 @@ pixel_x = 24 }, /turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (EAST)"; - icon_state = "orange"; dir = 4 }, /area/ruin/space/has_grav/ancientstation/rnd) @@ -3297,8 +3273,6 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (EAST)"; - icon_state = "orange"; dir = 4 }, /area/ruin/space/has_grav/ancientstation/rnd) @@ -3387,8 +3361,6 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (SOUTHWEST)"; - icon_state = "orange"; dir = 10 }, /area/ruin/space/has_grav/ancientstation/rnd) @@ -3413,8 +3385,6 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (SOUTHEAST)"; - icon_state = "orange"; dir = 6 }, /area/ruin/space/has_grav/ancientstation/rnd) @@ -4338,10 +4308,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/hivebot) "lz" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, +/turf/open/floor/plating/airless, /area/template_noop) "lL" = ( /obj/effect/decal/cleanable/dirt, @@ -4351,8 +4318,6 @@ "lM" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (WEST)"; - icon_state = "orange"; dir = 8 }, /area/ruin/space/has_grav/ancientstation/rnd) @@ -4360,8 +4325,6 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/orange/corner{ - tag = "icon-orangecorner (EAST)"; - icon_state = "orangecorner"; dir = 4 }, /area/ruin/space/has_grav/ancientstation/rnd) diff --git a/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm b/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm index afcc31a692..0ff8aaf97d 100644 --- a/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm @@ -63,7 +63,6 @@ /area/ruin/space/oldteleporter) "n" = ( /obj/machinery/power/apc{ - dir = 0; name = "Worn-out APC"; pixel_y = -24 }, diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index b56ba3107f..75978850b0 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -3392,9 +3392,8 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/obj/machinery/atmospherics/components/binary/valve{ - name = "Air Release Valve"; - open = 1 +/obj/machinery/atmospherics/components/binary/valve/on{ + name = "Air Release Valve" }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/hotel/power) diff --git a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm index c9b6eb9e7c..385c1bd6df 100644 --- a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm +++ b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm @@ -76,7 +76,6 @@ /area/ruin/space/has_grav/turretedoutpost) "ar" = ( /obj/machinery/power/apc{ - dir = 0; name = "Worn-out APC"; pixel_y = -24 }, diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index e83daecd38..b7ae3d6d39 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -3688,7 +3688,7 @@ /turf/open/floor/vault, /area/awaymission/academy/academyengine) "mm" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /turf/open/floor/plating, /area/awaymission/academy/academyengine) "mn" = ( diff --git a/_maps/RandomZLevels/VR/murderdome.dmm b/_maps/RandomZLevels/VR/murderdome.dmm new file mode 100644 index 0000000000..740f9fd09f --- /dev/null +++ b/_maps/RandomZLevels/VR/murderdome.dmm @@ -0,0 +1,2851 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/basic, +/area/space) +"b" = ( +/turf/closed/indestructible/riveted, +/area/awaymission/vr/murderdome) +"c" = ( +/obj/structure/rack, +/obj/item/gun/energy/beam_rifle, +/obj/item/gun/energy/beam_rifle, +/obj/item/gun/energy/beam_rifle, +/obj/item/gun/energy/beam_rifle, +/obj/item/gun/energy/beam_rifle, +/obj/item/gun/energy/beam_rifle, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"d" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/l6_saw/unrestricted, +/obj/item/gun/ballistic/automatic/l6_saw/unrestricted, +/obj/item/gun/ballistic/automatic/l6_saw/unrestricted, +/obj/item/gun/ballistic/automatic/l6_saw/unrestricted, +/obj/item/gun/ballistic/automatic/l6_saw/unrestricted, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"e" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/gun/ballistic/automatic/wt550, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"f" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/m90/unrestricted, +/obj/item/gun/ballistic/automatic/m90/unrestricted, +/obj/item/gun/ballistic/automatic/m90/unrestricted, +/obj/item/gun/ballistic/automatic/m90/unrestricted, +/obj/item/gun/ballistic/automatic/m90/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"g" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/tommygun, +/obj/item/gun/ballistic/automatic/tommygun, +/obj/item/gun/ballistic/automatic/tommygun, +/obj/item/gun/ballistic/automatic/tommygun, +/obj/item/gun/ballistic/automatic/tommygun, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"h" = ( +/obj/structure/rack, +/obj/item/gun/energy/decloner, +/obj/item/gun/energy/decloner, +/obj/item/gun/energy/decloner, +/obj/item/gun/energy/decloner, +/obj/item/gun/energy/decloner, +/obj/item/gun/energy/decloner, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"i" = ( +/obj/machinery/recharger, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"j" = ( +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"k" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/proto/unrestricted, +/obj/item/gun/ballistic/automatic/proto/unrestricted, +/obj/item/gun/ballistic/automatic/proto/unrestricted, +/obj/item/gun/ballistic/automatic/proto/unrestricted, +/obj/item/gun/ballistic/automatic/proto/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"l" = ( +/obj/structure/rack, +/obj/item/gun/energy/laser/scatter, +/obj/item/gun/energy/laser/scatter, +/obj/item/gun/energy/laser/scatter, +/obj/item/gun/energy/laser/scatter, +/obj/item/gun/energy/laser/scatter, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"m" = ( +/obj/effect/landmark/vr_spawn, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"n" = ( +/obj/item/firing_pin, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"o" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/shotgun/automatic/combat, +/obj/item/gun/ballistic/shotgun/automatic/combat, +/obj/item/gun/ballistic/shotgun/automatic/combat, +/obj/item/gun/ballistic/shotgun/automatic/combat, +/obj/item/gun/ballistic/shotgun/automatic/combat, +/obj/item/gun/ballistic/shotgun/automatic/combat, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"p" = ( +/obj/structure/rack, +/obj/item/gun/energy/xray, +/obj/item/gun/energy/xray, +/obj/item/gun/energy/xray, +/obj/item/gun/energy/xray, +/obj/item/gun/energy/xray, +/obj/item/gun/energy/xray, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"q" = ( +/obj/item/melee/baton/loaded, +/obj/item/melee/baton/loaded, +/obj/item/melee/baton/loaded, +/obj/item/melee/baton/loaded, +/obj/item/melee/baton/loaded, +/obj/item/melee/baton/loaded, +/obj/item/melee/transforming/energy/sword/saber, +/obj/item/melee/transforming/energy/sword/saber, +/obj/item/melee/transforming/energy/sword/saber, +/obj/item/melee/transforming/energy/sword/saber, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"r" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/shotgun/boltaction, +/obj/item/gun/ballistic/shotgun/boltaction, +/obj/item/gun/ballistic/shotgun/boltaction, +/obj/item/gun/ballistic/shotgun/boltaction, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"s" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun/nuclear, +/obj/item/gun/energy/e_gun/nuclear, +/obj/item/gun/energy/e_gun/nuclear, +/obj/item/gun/energy/e_gun/nuclear, +/obj/item/gun/energy/e_gun/nuclear, +/obj/item/gun/energy/e_gun/nuclear, +/obj/item/gun/energy/e_gun/nuclear, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"t" = ( +/obj/structure/rack, +/obj/item/gun/energy/pulse/carbine, +/obj/item/gun/energy/pulse/carbine, +/obj/item/gun/energy/pulse/carbine, +/obj/item/gun/energy/pulse/carbine, +/obj/item/gun/energy/pulse/carbine, +/obj/item/gun/energy/pulse/carbine, +/obj/item/gun/energy/pulse/carbine, +/obj/item/gun/energy/pulse/carbine, +/obj/item/gun/energy/pulse/carbine, +/obj/item/gun/energy/pulse/carbine, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"v" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/shotgun/bulldog/unrestricted, +/obj/item/gun/ballistic/automatic/shotgun/bulldog/unrestricted, +/obj/item/gun/ballistic/automatic/shotgun/bulldog/unrestricted, +/obj/item/gun/ballistic/automatic/shotgun/bulldog/unrestricted, +/obj/item/gun/ballistic/automatic/shotgun/bulldog/unrestricted, +/obj/item/gun/ballistic/automatic/shotgun/bulldog/unrestricted, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"w" = ( +/obj/machinery/light, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"y" = ( +/obj/structure/barricade/security/murderdome, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"z" = ( +/obj/structure/barricade/security/murderdome, +/obj/structure/barricade/security/murderdome, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"A" = ( +/turf/open/indestructible/sound, +/area/awaymission/vr/murderdome) +"B" = ( +/obj/structure/barricade/security/murderdome, +/turf/open/indestructible/sound, +/area/awaymission/vr/murderdome) +"C" = ( +/obj/structure/barricade/security/murderdome, +/obj/structure/barricade/security/murderdome, +/turf/open/indestructible/sound, +/area/awaymission/vr/murderdome) +"D" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/gun/ballistic/automatic/wt550, +/obj/machinery/light, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"E" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/ar, +/obj/item/gun/ballistic/automatic/ar, +/obj/item/gun/ballistic/automatic/ar, +/obj/item/gun/ballistic/automatic/ar, +/obj/item/gun/ballistic/automatic/ar, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"H" = ( +/obj/machinery/telecomms/allinone, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"R" = ( +/obj/effect/spawner/structure/window/reinforced/indestructable, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"W" = ( +/obj/effect/vr_clean_master, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) +"Y" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/vr/murderdome) + +(1,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 +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +"} +(2,1,1) = {" +b +c +h +l +p +s +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +c +h +l +p +s +b +"} +(3,1,1) = {" +b +d +i +i +j +t +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +d +j +i +i +t +b +"} +(4,1,1) = {" +b +e +j +m +j +j +j +j +b +b +Y +j +R +R +R +Y +j +y +y +y +y +y +y +y +y +B +j +j +j +j +j +j +j +j +w +R +R +R +j +w +b +b +j +j +j +j +m +j +D +b +"} +(5,1,1) = {" +b +f +j +n +q +E +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +f +q +n +j +E +b +"} +(6,1,1) = {" +b +g +k +o +r +v +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +g +k +o +r +v +b +"} +(7,1,1) = {" +b +b +b +b +b +b +b +b +Y +R +j +j +j +j +j +j +j +R +Y +j +j +j +j +j +w +R +Y +j +j +j +j +w +R +j +j +j +j +j +j +j +R +w +b +b +b +b +b +b +b +b +"} +(8,1,1) = {" +b +c +h +l +p +s +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +c +h +l +p +s +b +"} +(9,1,1) = {" +b +d +i +i +j +t +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +d +j +i +i +t +b +"} +(10,1,1) = {" +b +e +j +m +j +j +j +j +b +b +Y +j +R +R +R +Y +j +j +j +j +j +j +j +j +j +C +y +y +y +y +y +y +y +j +w +R +R +R +j +j +b +b +j +j +j +j +m +j +D +b +"} +(11,1,1) = {" +b +f +j +n +q +E +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +f +q +n +j +E +b +"} +(12,1,1) = {" +b +g +k +o +r +v +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +g +k +o +r +v +b +"} +(13,1,1) = {" +b +b +b +b +b +b +b +b +Y +R +j +j +j +j +j +j +j +R +Y +j +j +j +j +j +w +R +Y +j +j +j +j +w +R +j +j +j +j +j +j +j +R +w +b +b +b +b +b +b +b +b +"} +(14,1,1) = {" +b +c +h +l +p +s +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +c +h +l +p +s +b +"} +(15,1,1) = {" +b +d +i +i +j +t +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +d +j +i +i +t +b +"} +(16,1,1) = {" +b +e +j +m +j +j +j +j +b +b +Y +j +R +R +R +Y +j +y +y +z +y +y +y +y +y +B +j +j +j +j +j +j +j +j +w +R +R +R +j +w +b +b +j +j +j +j +m +j +D +b +"} +(17,1,1) = {" +b +f +j +n +q +E +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +f +q +n +j +E +b +"} +(18,1,1) = {" +b +g +k +o +r +v +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +g +k +o +r +v +b +"} +(19,1,1) = {" +b +b +b +b +b +b +b +b +Y +R +j +j +j +j +j +j +j +R +Y +j +j +j +j +j +w +R +Y +j +j +j +j +w +R +j +j +j +j +j +j +j +R +w +b +b +b +b +b +b +b +b +"} +(20,1,1) = {" +b +c +h +l +p +s +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +c +h +l +p +s +b +"} +(21,1,1) = {" +b +d +i +i +j +t +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +d +j +i +i +t +b +"} +(22,1,1) = {" +b +e +j +m +j +j +j +j +b +b +Y +j +R +R +R +Y +j +j +j +j +j +W +j +j +j +B +y +y +y +y +y +y +y +j +w +R +R +R +j +w +b +b +j +j +j +j +m +j +D +b +"} +(23,1,1) = {" +b +f +j +n +q +E +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +f +q +n +j +E +b +"} +(24,1,1) = {" +b +g +k +o +r +v +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +g +k +o +r +v +b +"} +(25,1,1) = {" +b +b +b +b +b +b +b +b +Y +R +j +j +j +j +j +j +j +R +Y +j +j +j +j +j +w +R +Y +j +j +j +j +w +R +j +j +j +j +j +j +j +R +w +b +b +b +b +b +b +b +b +"} +(26,1,1) = {" +b +c +h +l +p +s +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +c +h +l +p +s +b +"} +(27,1,1) = {" +b +d +i +i +j +t +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +d +j +i +i +t +b +"} +(28,1,1) = {" +b +e +j +m +j +j +j +j +b +b +Y +j +R +R +R +Y +j +y +y +y +y +y +y +y +y +B +j +j +j +j +j +j +j +j +w +R +R +R +j +w +b +b +j +j +j +j +m +j +D +b +"} +(29,1,1) = {" +b +f +j +n +q +E +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +f +q +n +j +E +b +"} +(30,1,1) = {" +b +g +k +o +r +v +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +g +k +o +r +v +b +"} +(31,1,1) = {" +b +b +b +b +b +b +b +b +Y +R +j +j +j +j +j +j +j +R +Y +j +j +j +j +j +w +R +Y +j +j +j +j +w +R +j +j +j +j +j +j +j +R +w +b +b +b +b +b +b +b +b +"} +(32,1,1) = {" +b +c +h +l +p +s +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +c +h +l +p +s +b +"} +(33,1,1) = {" +b +d +i +i +j +t +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +d +j +i +i +t +b +"} +(34,1,1) = {" +b +e +j +m +j +j +j +j +b +b +Y +j +R +R +R +Y +j +j +j +j +j +j +j +j +j +B +y +y +y +y +y +y +y +j +w +R +R +R +j +w +b +b +j +j +j +j +m +j +D +b +"} +(35,1,1) = {" +b +f +j +n +q +E +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +f +q +n +j +E +b +"} +(36,1,1) = {" +b +g +k +o +r +v +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +g +k +o +r +v +b +"} +(37,1,1) = {" +b +b +b +b +b +b +b +b +Y +R +j +j +j +j +j +j +j +R +Y +j +j +j +j +j +w +R +Y +j +j +j +j +w +R +j +j +j +j +j +j +j +R +w +b +b +b +b +b +b +b +b +"} +(38,1,1) = {" +b +c +h +l +p +s +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +c +h +l +p +s +b +"} +(39,1,1) = {" +b +d +i +i +j +t +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +d +j +i +i +t +b +"} +(40,1,1) = {" +b +e +j +m +j +j +j +j +b +b +Y +j +R +R +R +Y +j +y +y +y +y +y +y +y +y +B +j +j +j +j +j +j +j +j +w +R +R +R +j +w +b +b +j +j +j +j +m +j +D +b +"} +(41,1,1) = {" +b +f +j +j +q +E +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +f +q +n +j +E +b +"} +(42,1,1) = {" +b +g +k +o +r +v +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +g +k +o +r +v +b +"} +(43,1,1) = {" +b +b +b +b +b +b +b +b +Y +R +j +j +j +j +j +j +j +R +Y +j +j +j +j +j +w +R +Y +j +j +j +j +w +R +j +j +j +j +j +j +j +R +w +b +b +b +b +b +b +b +b +"} +(44,1,1) = {" +b +c +h +l +p +s +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +c +h +l +p +s +b +"} +(45,1,1) = {" +b +d +i +i +j +t +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +d +j +i +i +t +b +"} +(46,1,1) = {" +b +e +j +m +j +j +j +j +b +b +Y +j +R +R +R +Y +j +j +j +j +j +j +j +j +j +B +y +y +y +y +y +y +y +j +w +R +R +R +j +w +b +b +j +j +j +j +m +j +D +b +"} +(47,1,1) = {" +b +f +j +n +q +E +b +j +j +j +j +j +j +R +j +j +j +j +j +j +j +j +j +j +j +A +j +j +j +j +j +j +j +j +j +j +R +j +j +j +j +j +j +b +f +q +n +j +E +b +"} +(48,1,1) = {" +b +g +k +o +r +v +b +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +j +j +j +j +b +j +j +j +j +j +j +j +b +j +j +b +g +k +o +r +v +b +"} +(49,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 +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +"} +(50,1,1) = {" +H +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/RandomZLevels/VR/snowdin_VR.dmm b/_maps/RandomZLevels/VR/snowdin_VR.dmm new file mode 100644 index 0000000000..520e847eb2 --- /dev/null +++ b/_maps/RandomZLevels/VR/snowdin_VR.dmm @@ -0,0 +1,79496 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/indestructible/rock/snow, +/area/awaymission/snowdin/cave/mountain) +"ab" = ( +/obj/effect/mapping_helpers/planet_z, +/turf/closed/indestructible/rock/snow, +/area/awaymission/snowdin/cave/mountain) +"ac" = ( +/turf/closed/indestructible/rock/snow, +/area/awaymission/snowdin/cave/mountain) +"ad" = ( +/turf/open/space/basic, +/area/space) +"ae" = ( +/turf/closed/mineral/snowmountain, +/area/awaymission/snowdin/cave/mountain) +"af" = ( +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"ag" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"ah" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall/ice, +/area/awaymission/snowdin/cave) +"ai" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/cave) +"aj" = ( +/turf/closed/mineral/snowmountain, +/area/awaymission/snowdin/cave) +"ak" = ( +/obj/structure/flora/bush, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"al" = ( +/obj/structure/flora/tree/dead, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"am" = ( +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"an" = ( +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"ao" = ( +/obj/structure/flora/stump, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"ap" = ( +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"aq" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/research) +"ar" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/research) +"as" = ( +/obj/effect/turf_decal/weather/snow, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"at" = ( +/obj/item/pickaxe, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"au" = ( +/obj/effect/turf_decal/weather/snow, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"av" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"aw" = ( +/obj/machinery/computer, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"ax" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"ay" = ( +/obj/structure/table, +/obj/item/flashlight/lamp, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"az" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/research) +"aA" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/disk/holodisk/snowdin/weregettingpaidright, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aB" = ( +/obj/structure/table, +/obj/item/pen, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aC" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/research) +"aD" = ( +/obj/structure/table, +/obj/item/flashlight/lamp, +/obj/item/pen, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aE" = ( +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aF" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aG" = ( +/obj/structure/table, +/obj/item/paper_bin, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aH" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aI" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aJ" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/dorm) +"aK" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/dorm) +"aL" = ( +/obj/item/pen, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aM" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/item/paper/fluff/awaymissions/snowdin/research_feed, +/obj/item/paper/fluff/awaymissions/snowdin/research_feed, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aN" = ( +/obj/item/paper/fluff/awaymissions/snowdin/research_feed, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aO" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aP" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/item/paper/fluff/awaymissions/snowdin/research_feed, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"aQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/dorm) +"aR" = ( +/obj/structure/bed, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/obj/item/bedsheet/purple, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"aS" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/dorm) +"aT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/bedsheet/purple, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"aU" = ( +/obj/structure/bed, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"aV" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/dorm) +"aW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"aX" = ( +/obj/structure/bed, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"aY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"aZ" = ( +/obj/structure/bed, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/bedsheet/orange, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"ba" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/sign/poster/contraband/kudzu{ + pixel_y = 32 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/dorm) +"bb" = ( +/obj/structure/bed, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/obj/item/paper/crumpled/ruins/snowdin/dontdeadopeninside, +/obj/item/bedsheet/green, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bc" = ( +/obj/structure/window, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"bd" = ( +/obj/structure/window, +/obj/item/flashlight/lamp, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/research) +"be" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/kitchen) +"bf" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/kitchen) +"bg" = ( +/obj/effect/baseturf_helper/asteroid/snow{ + baseturf = /turf/open/floor/plating/asteroid/snow/ice; + name = "asteroid snowice baseturf editor" + }, +/turf/closed/indestructible/rock/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"bh" = ( +/turf/closed/indestructible/rock/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"bi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/dorm) +"bj" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small/broken{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bk" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/paper/crumpled/ruins/snowdin/foreshadowing, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bm" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bn" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/dorm) +"bo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/research) +"bp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/research) +"bq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/research) +"br" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/research) +"bs" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/research) +"bt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/research) +"bu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"bv" = ( +/obj/machinery/gibber, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"bw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/kitchenspike, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"bx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"by" = ( +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/clothing/shoes/winterboots, +/obj/machinery/button/door{ + id = "snowdindormresearch3"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/item/tome, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bz" = ( +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/clothing/shoes/winterboots, +/obj/machinery/button/door{ + id = "snowdindormresearch2"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/dorm) +"bB" = ( +/obj/structure/closet, +/obj/item/clothing/shoes/winterboots, +/obj/machinery/button/door{ + id = "snowdindormresearch1"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bC" = ( +/obj/structure/closet, +/obj/machinery/button/door{ + id = "snowdindormhydro2"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bD" = ( +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat/hydro, +/obj/item/clothing/shoes/winterboots, +/obj/machinery/button/door{ + id = "snowdindormhydro1"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bE" = ( +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/research) +"bF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/research) +"bG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/research) +"bH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/research) +"bI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/research) +"bJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/research) +"bK" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/research) +"bL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"bM" = ( +/obj/effect/landmark/vr_spawn/snowdin, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"bN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"bO" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"bP" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Dorms APC"; + pixel_x = 26 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"bQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock{ + id_tag = "snowdindormresearch3"; + name = "Jouslen McGee's Private Quarters" + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock{ + id_tag = "snowdindormresearch2"; + name = "Elizabeth Queef's Private Quarters" + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock{ + id_tag = "snowdindormresearch1"; + name = "Jacob Ullman's Private Quarters" + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock{ + id_tag = "snowdindormhydro2"; + name = "Rachel Migro's Private Quarters" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/dorm) +"bU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock{ + id_tag = "snowdindormhydro1"; + name = "Katherine Esterdeen's Private Quarters" + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"bV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/research) +"bW" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/research) +"bX" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/research) +"bY" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/research) +"bZ" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/research) +"ca" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/spider/stickyweb, +/obj/machinery/light/broken{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"cb" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"cc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/kitchenspike, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"cd" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/kitchen) +"ce" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"cf" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"cg" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Kitchen APC"; + pixel_x = 1; + pixel_y = 25 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"ch" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"ci" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"cj" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"ck" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"cl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"cm" = ( +/obj/machinery/light/small, +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"cn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"co" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"cp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 9 + }, +/area/awaymission/snowdin/post/dorm) +"cq" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/dorm) +"cr" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"cs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"ct" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/dorm) +"cu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/dorm) +"cv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"cw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/dorm) +"cx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/dorm) +"cy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/dorm) +"cz" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Research Desks" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/research) +"cA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/research) +"cB" = ( +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/research) +"cC" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/research) +"cD" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/research) +"cE" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/research) +"cF" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/research) +"cG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter/ice, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"cH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"cI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"cJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock{ + name = "Freezer" + }, +/obj/structure/barricade/wooden, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"cK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"cL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/kitchen/fork, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"cM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/item/storage/box{ + illustration = "donk_kit"; + name = "box of donkpockets" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"cN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"cO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"cP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"cQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"cR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"cS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/egg_smudge, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"cT" = ( +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"cU" = ( +/obj/effect/turf_decal/weather/snow, +/obj/structure/closet/crate{ + icon_state = "crateopen"; + name = "explosives ordinance" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"cV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"cW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/dorm) +"cX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/neutral/corner, +/area/awaymission/snowdin/post/dorm) +"cY" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/dorm) +"cZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/trash/can, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/dorm) +"da" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/dorm) +"db" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/dorm) +"dc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/dorm) +"dd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"de" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/dorm) +"df" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/dorm) +"dg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + name = "Research Desks" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/research) +"dh" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/research) +"di" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/research) +"dj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/research) +"dk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/research) +"dl" = ( +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/research) +"dm" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/research) +"dn" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"do" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/freezer, +/area/awaymission/snowdin/post/kitchen) +"dp" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/kitchen) +"dq" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"dr" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"ds" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/kitchen) +"dt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/flour, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"du" = ( +/obj/machinery/deepfryer, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"dv" = ( +/obj/structure/table, +/obj/item/reagent_containers/glass/beaker/large, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"dw" = ( +/obj/machinery/deepfryer, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"dx" = ( +/obj/effect/turf_decal/weather/snow, +/obj/structure/closet/crate{ + name = "explosives ordinance" + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"dy" = ( +/obj/effect/turf_decal/weather/snow, +/obj/structure/closet/crate{ + icon_state = "crateopen"; + name = "explosives ordinance" + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"dz" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"dA" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"dB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"dC" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"dD" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/dorm) +"dE" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/dorm) +"dF" = ( +/obj/machinery/washing_machine, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/dorm) +"dG" = ( +/obj/machinery/light, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"dH" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"dI" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/dorm) +"dJ" = ( +/obj/structure/table, +/obj/item/bedsheet/purple, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/dorm) +"dK" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post) +"dL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"dM" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post) +"dN" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/messhall) +"dO" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/messhall) +"dP" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/messhall) +"dQ" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Kitchen"; + req_access_txt = "35" + }, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"dR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"dS" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/storage/box{ + illustration = "donk_kit"; + name = "box of donkpockets" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"dT" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/enzyme, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"dU" = ( +/obj/structure/table, +/obj/item/kitchen/knife, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"dV" = ( +/obj/effect/decal/cleanable/egg_smudge, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/kitchen) +"dW" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/kitchen) +"dX" = ( +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"dY" = ( +/obj/structure/ladder/unbreakable{ + height = 1; + id = "snowdin" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"dZ" = ( +/obj/machinery/light/small/broken{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"ea" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"eb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/sign/poster/contraband/lusty_xenomorph{ + pixel_x = 32 + }, +/obj/structure/table/wood, +/obj/item/paper_bin, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"ec" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/dorm) +"ed" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/dorm) +"ee" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/dorm) +"ef" = ( +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat/security, +/obj/item/clothing/shoes/winterboots, +/obj/machinery/button/door{ + id = "snowdindormsec"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"eg" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/trash/cheesie, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"eh" = ( +/obj/structure/bed, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/obj/item/bedsheet/red, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/dorm) +"ei" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall, +/area/awaymission/snowdin/post) +"ej" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"ek" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"el" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"em" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Gateway APC"; + pixel_y = -24; + req_access = 150 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/gateway) +"en" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Research Center APC"; + pixel_x = 1; + pixel_y = 25 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/research) +"eo" = ( +/obj/machinery/light/small, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"ep" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"eq" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Mess Hall APC"; + pixel_x = 26 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"er" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"es" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"et" = ( +/obj/machinery/vending/boozeomat{ + req_access_txt = "0" + }, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"eu" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"ev" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"ew" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"ex" = ( +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"ey" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/closet/secure_closet/freezer/kitchen, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"ez" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/kitchen) +"eA" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"eB" = ( +/obj/effect/decal/cleanable/flour, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/kitchen) +"eC" = ( +/obj/item/kitchen/knife{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"eD" = ( +/obj/structure/table, +/obj/item/kitchen/rollingpin, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"eE" = ( +/turf/closed/wall/mineral/wood, +/area/awaymission/snowdin/outside) +"eF" = ( +/obj/structure/mineral_door/wood, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/outside) +"eG" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"eH" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"eI" = ( +/obj/item/crowbar, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"eJ" = ( +/turf/closed/mineral/snowmountain/cavern, +/area/awaymission/snowdin/cave/cavern) +"eK" = ( +/turf/closed/wall/mineral/cult, +/area/awaymission/snowdin/cave/cavern) +"eL" = ( +/turf/closed/mineral/plasma/ice, +/area/awaymission/snowdin/cave/cavern) +"eM" = ( +/obj/structure/flora/tree/pine, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"eN" = ( +/obj/structure/dresser, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"eO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"eP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"eQ" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/dorm) +"eR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/dorm) +"eS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"eT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock{ + id_tag = "snowdindormsec"; + name = "James Reed's Private Quarters" + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"eU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/dorm) +"eV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/trash/cheesie, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"eW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/trash/cheesie, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/dorm) +"eX" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood, +/obj/item/reagent_containers/blood, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"eY" = ( +/obj/machinery/iv_drip, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"eZ" = ( +/obj/structure/table, +/obj/item/clothing/neck/stethoscope, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fa" = ( +/obj/structure/table, +/obj/item/clothing/glasses/hud/health, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fb" = ( +/obj/machinery/vending/wallmed{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fc" = ( +/obj/structure/table, +/obj/item/storage/firstaid/ancient, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"fe" = ( +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/storage/toolbox/emergency, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"ff" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall, +/area/awaymission/snowdin/post/gateway) +"fg" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/gateway) +"fh" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/gateway) +"fi" = ( +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"fj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/public/glass{ + name = "Kitchen"; + req_access_txt = "35" + }, +/obj/machinery/door/firedoor, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"fk" = ( +/obj/machinery/smartfridge, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"fl" = ( +/obj/structure/table, +/obj/machinery/door/firedoor, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/kitchen) +"fm" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/hydro) +"fn" = ( +/obj/structure/rack, +/obj/item/stack/sheet/mineral/wood{ + amount = 15 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/outside) +"fo" = ( +/turf/open/floor/wood, +/area/awaymission/snowdin/outside) +"fp" = ( +/obj/structure/rack, +/obj/item/grown/log/tree, +/obj/item/grown/log/tree{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/grown/log/tree{ + pixel_x = -2; + pixel_y = 3 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/outside) +"fq" = ( +/obj/structure/flora/tree/pine, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"fr" = ( +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"fs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"ft" = ( +/obj/structure/sign/poster/official/no_erp{ + pixel_x = -32 + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/dorm) +"fu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"fv" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/light/broken{ + dir = 4 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"fw" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper"; + dir = 4 + }, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fx" = ( +/obj/item/reagent_containers/blood, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fz" = ( +/obj/item/flashlight/pen, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fB" = ( +/obj/item/storage/firstaid{ + empty = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fC" = ( +/obj/structure/table, +/obj/item/storage/firstaid/brute{ + empty = 1 + }, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"fD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"fE" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Outpost Hallway APC"; + pixel_x = 26 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"fF" = ( +/obj/structure/closet, +/obj/item/clothing/under/assistantformal, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/gateway) +"fG" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/gateway) +"fH" = ( +/obj/structure/bed, +/obj/effect/landmark/vr_spawn/snowdin, +/obj/item/bedsheet/nanotrasen, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"fI" = ( +/obj/effect/landmark/vr_spawn/snowdin, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/gateway) +"fJ" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"fK" = ( +/obj/structure/table/reinforced, +/obj/item/trash/raisins, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"fL" = ( +/obj/structure/table/reinforced, +/obj/item/kitchen/fork, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"fM" = ( +/obj/structure/table_frame, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"fN" = ( +/obj/structure/table_frame, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"fO" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/plasteel/bar, +/area/awaymission/snowdin/post/messhall) +"fP" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/hydro) +"fQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"fR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/green/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/hydro) +"fS" = ( +/obj/item/kitchen/knife, +/turf/open/floor/plasteel/green/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/hydro) +"fT" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/green/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/hydro) +"fU" = ( +/obj/machinery/light/broken{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"fV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/green/side{ + dir = 5 + }, +/area/awaymission/snowdin/post/hydro) +"fW" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/hydro) +"fX" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/garage) +"fY" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/garage) +"fZ" = ( +/obj/structure/table/wood, +/obj/item/hatchet, +/obj/item/hatchet{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/outside) +"ga" = ( +/obj/structure/table/wood, +/obj/structure/fireaxecabinet{ + pixel_y = -32 + }, +/obj/effect/spawner/lootdrop/snowdin/dungeonmisc, +/turf/open/floor/wood, +/area/awaymission/snowdin/outside) +"gb" = ( +/obj/structure/table/wood, +/obj/item/storage/toolbox/mechanical/old, +/turf/open/floor/wood, +/area/awaymission/snowdin/outside) +"gc" = ( +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"gd" = ( +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"ge" = ( +/turf/closed/mineral/iron/ice, +/area/awaymission/snowdin/cave/cavern) +"gf" = ( +/obj/structure/closet/crate/wooden, +/obj/effect/spawner/lootdrop/snowdin/dungeonheavy, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"gg" = ( +/turf/open/floor/plating/asteroid/snow/ice, +/obj/machinery/atmospherics/components/unary/outlet_injector/on, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/post/cavern2) +"gh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"gi" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/dorm) +"gj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/dorm) +"gk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/crowbar, +/obj/item/crowbar, +/obj/item/pickaxe/mini, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"gl" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"gm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/closet/crate, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"gn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"go" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"gp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"gq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"gr" = ( +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"gs" = ( +/obj/structure/table, +/obj/item/storage/firstaid/fire{ + empty = 1 + }, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"gt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"gu" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"gv" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/gateway) +"gw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/landmark/vr_spawn/snowdin, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/gateway) +"gx" = ( +/turf/open/floor/plating/asteroid/snow/ice, +/obj/structure/barricade/wooden/snowed, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"gy" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/gateway) +"gz" = ( +/obj/machinery/light/broken{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"gA" = ( +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"gB" = ( +/obj/effect/decal/cleanable/pie_smudge, +/obj/item/trash/can, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"gC" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/messhall) +"gD" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"gE" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_y = 3 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 7; + pixel_y = 7 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"gF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/hydro) +"gG" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"gH" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/hydro) +"gI" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/hydro) +"gJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"gK" = ( +/obj/machinery/hydroponics/constructable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"gL" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/hydro) +"gM" = ( +/obj/item/stack/cable_coil/red{ + amount = 1 + }, +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"gN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"gO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/garage) +"gP" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"gQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"gR" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Garage APC"; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"gS" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"gT" = ( +/obj/item/clothing/head/cone, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"gU" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"gV" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"gW" = ( +/turf/closed/mineral/diamond/ice, +/area/awaymission/snowdin/cave/cavern) +"gX" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"gY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/button/door{ + id = "snowdindormcap"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"gZ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/can, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/dorm) +"ha" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/dorm) +"hb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Misc Storage"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"hc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"hd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"he" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"hf" = ( +/obj/item/storage/firstaid/fire{ + empty = 1 + }, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"hg" = ( +/obj/item/shard, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"hh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/storage/firstaid/o2{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"hi" = ( +/obj/structure/table, +/obj/item/storage/firstaid/o2{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"hj" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"hk" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/conveyor_switch/oneway{ + id = "snowdin_belt_mine"; + name = "mining conveyor" + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"hl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"hm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/obj/machinery/holopad, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/gateway) +"hn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"ho" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"hp" = ( +/obj/item/chair, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"hq" = ( +/obj/structure/table, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"hr" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"hs" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"ht" = ( +/obj/structure/table, +/obj/item/trash/waffles, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"hu" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"hv" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"hw" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel/green/side{ + dir = 8 + }, +/area/awaymission/snowdin/post/hydro) +"hx" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/hydro) +"hy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/hydro) +"hz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/hydro) +"hA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"hB" = ( +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"hC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/garage) +"hD" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"hE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"hF" = ( +/obj/structure/destructible/cult/pylon, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"hG" = ( +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat/captain{ + name = "overseer's winter coat" + }, +/obj/item/clothing/shoes/winterboots, +/obj/item/key, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"hH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"hI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"hJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock{ + id_tag = "snowdindormcap"; + name = "Overseer's Private Quarters" + }, +/turf/open/floor/carpet, +/area/awaymission/snowdin/post/dorm) +"hK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/dorm) +"hL" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/dorm) +"hM" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"hN" = ( +/obj/structure/grille/broken, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/item/stack/rods{ + amount = 2 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"hO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Storage"; + req_access_txt = "45" + }, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post) +"hP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"hQ" = ( +/obj/structure/window, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/gateway) +"hR" = ( +/obj/effect/landmark/vr_spawn/snowdin, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"hS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/gateway) +"hT" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"hU" = ( +/obj/structure/window, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"hV" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"hW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"hX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/biogenerator, +/turf/open/floor/plasteel/green/side{ + dir = 8 + }, +/area/awaymission/snowdin/post/hydro) +"hY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/hydro) +"hZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/hydro) +"ia" = ( +/obj/machinery/hydroponics/constructable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/hydro) +"ib" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/hydro) +"ic" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/garage) +"id" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/garage) +"ie" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/garage) +"if" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"ig" = ( +/obj/effect/light_emitter{ + name = "cave light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave/mountain) +"ih" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"ii" = ( +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"ij" = ( +/obj/item/clothing/head/cone, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"ik" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"il" = ( +/obj/structure/closet/crate/wooden, +/obj/effect/spawner/lootdrop/snowdin/dungeonmid, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"im" = ( +/obj/effect/decal/cleanable/blood/old, +/mob/living/simple_animal/hostile/spawner/nether{ + max_mobs = 5 + }, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"in" = ( +/mob/living/simple_animal/hostile/netherworld/blankbody{ + desc = "It's Caleb Reed, but their flesh has an ashy texture, and their face is featureless save an eerie smile."; + name = "Caleb Reed" + }, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"io" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/dorm) +"ip" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"iq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/dorm) +"ir" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/dorm) +"is" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + name = "Dorms" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/dorm) +"it" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post) +"iu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post) +"iv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post) +"iw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/sign/departments/medbay{ + pixel_y = 32 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post) +"ix" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post) +"iy" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post) +"iz" = ( +/obj/structure/table, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/item/paper_bin, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"iA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "snowdin_gate" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"iB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post) +"iC" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"iD" = ( +/obj/structure/table, +/obj/item/crowbar, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"iE" = ( +/obj/item/trash/candy, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"iF" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"iG" = ( +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"iH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"iI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/seed_extractor, +/turf/open/floor/plasteel/green/side{ + dir = 8 + }, +/area/awaymission/snowdin/post/hydro) +"iJ" = ( +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/hydro) +"iK" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/hydro) +"iL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/green/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/hydro) +"iM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"iN" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"iO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"iP" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"iQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"iR" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Garage" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"iS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"iT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/garage) +"iU" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Garage" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"iV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"iW" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"iX" = ( +/obj/structure/table, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"iY" = ( +/obj/structure/fence, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"iZ" = ( +/obj/item/clothing/head/cone, +/obj/effect/light_emitter{ + name = "cave light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"ja" = ( +/obj/effect/light_emitter{ + name = "cave light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"jb" = ( +/obj/effect/light_emitter{ + name = "cave light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"jc" = ( +/mob/living/simple_animal/hostile/bear/snow, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"jd" = ( +/obj/structure/bookcase/random, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/dorm) +"je" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 10 + }, +/area/awaymission/snowdin/post/dorm) +"jf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/dorm) +"jg" = ( +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/dorm) +"jh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/dorm) +"ji" = ( +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/dorm) +"jj" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/dorm) +"jk" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Dorms" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/dorm) +"jl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post) +"jm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"jn" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post) +"jo" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post) +"jp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post) +"jq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"jr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"js" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"jt" = ( +/obj/structure/table, +/obj/machinery/button/door{ + id = "snowdin_gate"; + pixel_x = 7; + pixel_y = -24 + }, +/obj/item/disk/holodisk/snowdin/welcometodie, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"ju" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/vr_spawn/snowdin, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"jw" = ( +/obj/structure/table, +/obj/item/paper/pamphlet/gateway, +/obj/item/paper/pamphlet/gateway{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/paper/pamphlet/gateway{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"jx" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"jy" = ( +/obj/structure/table, +/obj/item/trash/candle, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"jz" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/kitchen/fork, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"jA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/plantgenes, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"jB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel/green/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/hydro) +"jC" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"jD" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"jF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/garage) +"jG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"jH" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"jI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"jJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"jK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"jL" = ( +/obj/vehicle/ridden/atv, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"jM" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical/old, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"jN" = ( +/obj/effect/spawner/lootdrop/snowdin/dungeonmisc, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"jO" = ( +/mob/living/simple_animal/hostile/netherworld/blankbody{ + desc = "It's Jacob Ullman, but their flesh has an ashy texture, and their face is featureless save an eerie smile."; + name = "Jacob Ullman" + }, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"jP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock{ + name = "Bathroom" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"jQ" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall, +/area/awaymission/snowdin/post/custodials) +"jR" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/custodials) +"jS" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/neutral/side{ + dir = 10 + }, +/area/awaymission/snowdin/post) +"jT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post) +"jU" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"jV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"jW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post) +"jX" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post) +"jY" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "snowdin_gate" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/gateway) +"jZ" = ( +/obj/effect/landmark/vr_spawn/snowdin, +/turf/open/floor/plasteel/neutral/side{ + dir = 10 + }, +/area/awaymission/snowdin/post/minipost) +"ka" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"kb" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/messhall) +"kc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/messhall) +"kd" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"ke" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/plasteel/green/side{ + dir = 8 + }, +/area/awaymission/snowdin/post/hydro) +"kf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/hydro) +"kg" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/hydro) +"kh" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"ki" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/garage) +"kj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"kk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"kl" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"km" = ( +/obj/structure/sign/poster/contraband/tools{ + pixel_x = 32 + }, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/tank/internals/plasma, +/obj/item/tank/internals/plasma, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"kn" = ( +/obj/structure/fence/corner{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"ko" = ( +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"kp" = ( +/obj/structure/fence{ + dir = 4 + }, +/obj/structure/sign/nanotrasen, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"kq" = ( +/obj/structure/fence/door/opened, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"kr" = ( +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"ks" = ( +/obj/structure/fence/door, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"kt" = ( +/obj/structure/fence/corner, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"ku" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/cave/mountain) +"kv" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/shower{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"kw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/shower{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"kx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/shower{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"ky" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Showers" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"kz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"kA" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"kB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"kC" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"kD" = ( +/obj/structure/table, +/obj/machinery/power/apc{ + dir = 1; + name = "Custodials APC"; + pixel_x = 1; + pixel_y = 25 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"kE" = ( +/obj/structure/table, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"kF" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post) +"kG" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/awaymission/snowdin/post) +"kH" = ( +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/obj/item/paper/crumpled/ruins/snowdin/shovel, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post) +"kI" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"kJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post) +"kK" = ( +/obj/machinery/conveyor{ + dir = 2; + id = "snowdin_belt_mine" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/post/mining_dock) +"kL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post) +"kM" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Mess Hall" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"kN" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"kO" = ( +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"kP" = ( +/obj/item/trash/candy, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/messhall) +"kQ" = ( +/turf/open/floor/plasteel/green/side{ + dir = 8 + }, +/area/awaymission/snowdin/post/hydro) +"kR" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/hydro) +"kS" = ( +/obj/machinery/hydroponics/constructable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/hydro) +"kT" = ( +/obj/item/stack/cable_coil/red{ + amount = 1 + }, +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"kU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"kV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"kW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"kX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"kY" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"kZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/garage) +"la" = ( +/obj/structure/filingcabinet, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"lb" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"lc" = ( +/obj/vehicle/ridden/atv, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"ld" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"le" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"lf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"lg" = ( +/obj/machinery/light/small/broken{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"lh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"li" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/broken, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"lj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"lk" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"ll" = ( +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"lm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/janitorialcart, +/obj/item/mop, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"ln" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post) +"lo" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/snowdin_station_sign/up, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"lp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/snowdin_station_sign/up/two, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"lq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/snowdin_station_sign/up/three, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"lr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/snowdin_station_sign/up/four, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"ls" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/snowdin_station_sign/up/five, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"lt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/snowdin_station_sign/up/six, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"lu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/snowdin_station_sign/up/seven, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"lw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"lx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post) +"ly" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Mess Hall" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"lz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"lA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"lB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"lC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"lD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"lE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/public/glass{ + name = "Hydroponics"; + req_access_txt = "35" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"lF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"lG" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/hydro) +"lH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/hydro) +"lI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/hydro) +"lJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/hydro) +"lK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/hydro) +"lL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/hydro) +"lM" = ( +/obj/machinery/door/airlock/external/glass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"lN" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"lO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"lP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"lQ" = ( +/obj/machinery/door/airlock{ + name = "Mechanic's Quarters" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"lR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"lS" = ( +/obj/structure/fence/corner{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"lT" = ( +/obj/structure/closet/crate/wooden, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"lU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/shower{ + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"lV" = ( +/obj/machinery/shower{ + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"lW" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"lX" = ( +/obj/machinery/door/airlock{ + name = "Private Stall" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"lY" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/custodials) +"lZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"ma" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"mb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"mc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock{ + name = "Custodial Closet" + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"md" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post) +"me" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"mf" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/snowdin_station_sign, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"mg" = ( +/obj/effect/turf_decal/snowdin_station_sign/two, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"mh" = ( +/obj/effect/turf_decal/snowdin_station_sign/three, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"mi" = ( +/obj/effect/turf_decal/snowdin_station_sign/four, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"mj" = ( +/obj/effect/turf_decal/snowdin_station_sign/five, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"mk" = ( +/obj/effect/turf_decal/snowdin_station_sign/six, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"ml" = ( +/obj/effect/turf_decal/snowdin_station_sign/seven, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"mm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post) +"mn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"mo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"mp" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"mq" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Hydroponics"; + req_access_txt = "35" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"mr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"ms" = ( +/obj/machinery/hydroponics/constructable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/hydro) +"mt" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"mu" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/hydro) +"mv" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/hydro) +"mw" = ( +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/weather/snow, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"mx" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"my" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"mz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"mB" = ( +/obj/item/storage/toolbox/electrical, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"mC" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"mD" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/dorm) +"mE" = ( +/obj/structure/table, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"mF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"mG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"mH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post) +"mI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post) +"mJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"mK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"mL" = ( +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"mM" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"mN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"mO" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/messhall) +"mP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering"; + req_access_txt = "32" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/messhall) +"mQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"mR" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"mS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"mT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"mU" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"mV" = ( +/obj/structure/table, +/obj/item/key, +/obj/item/key, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"mW" = ( +/obj/structure/table, +/obj/machinery/light/small, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/garage) +"mX" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/garage) +"mY" = ( +/obj/machinery/button/door{ + id = "snowdingarage1"; + name = "garage door toggle"; + pixel_x = -24; + pixel_y = -7 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"mZ" = ( +/obj/structure/flora/grass/both, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"na" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/custodials) +"nb" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"nc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/light/broken, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post) +"nd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post) +"ne" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post) +"nf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post) +"ng" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"nh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"ni" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post) +"nj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"nk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"nl" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall, +/area/awaymission/snowdin/post/engineering) +"nm" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/yellow, +/area/awaymission/snowdin/post/engineering) +"nn" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/yellow, +/area/awaymission/snowdin/post/engineering) +"no" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/yellow/side{ + icon_state = "yellow"; + dir = 8 + }, +/area/awaymission/snowdin/post/engineering) +"np" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"nq" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/engineering) +"nr" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Engineering APC"; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"ns" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"nt" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/engineering) +"nu" = ( +/obj/machinery/vending/hydronutrients, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"nv" = ( +/obj/machinery/vending/hydroseeds, +/obj/machinery/light, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"nw" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/watertank, +/turf/open/floor/plasteel/green/side, +/area/awaymission/snowdin/post/hydro) +"nx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/green/side, +/area/awaymission/snowdin/post/hydro) +"ny" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plasteel/green/side, +/area/awaymission/snowdin/post/hydro) +"nz" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/hydro) +"nA" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"nB" = ( +/obj/machinery/door/poddoor/shutters{ + id = "snowdingarage1"; + name = "garage door" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) +"nC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"nD" = ( +/obj/structure/closet/jcloset, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/custodials) +"nE" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/secpost) +"nF" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/secpost) +"nG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/security{ + name = "Security Checkpoint"; + req_access = null; + req_access_txt = "1" + }, +/turf/open/floor/plasteel/red, +/area/awaymission/snowdin/post/secpost) +"nH" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/secpost) +"nI" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/item/shard, +/obj/item/stack/cable_coil/red{ + amount = 1 + }, +/turf/open/floor/plasteel/red, +/area/awaymission/snowdin/post/secpost) +"nJ" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 10 + }, +/area/awaymission/snowdin/post) +"nK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post) +"nL" = ( +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post) +"nM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"nN" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/engineering) +"nO" = ( +/obj/machinery/power/smes/engineering, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"nP" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"nQ" = ( +/turf/open/floor/plasteel/yellow/side{ + icon_state = "yellow"; + dir = 8 + }, +/area/awaymission/snowdin/post/engineering) +"nR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"nS" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"nT" = ( +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"nU" = ( +/obj/machinery/power/port_gen/pacman, +/obj/item/stack/sheet/mineral/plasma{ + amount = 10 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"nV" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/hydro) +"nW" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/hydro) +"nX" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/public/glass{ + name = "Hydroponics"; + req_access_txt = "35" + }, +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"nY" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/hydro) +"nZ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/post/garage) +"oa" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"ob" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/secpost) +"oc" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/secpost) +"od" = ( +/obj/item/gun/ballistic/shotgun/boltaction, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/obj/structure/closet/secure_closet{ + icon_state = "sec"; + locked = 1; + name = "security officer's locker"; + req_access_txt = "201" + }, +/obj/item/restraints/handcuffs, +/obj/item/assembly/flash, +/obj/item/storage/box/rubbershot, +/obj/structure/fireaxecabinet{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/secpost) +"oe" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Security Outpost APC"; + pixel_x = 1; + pixel_y = 25 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/secpost) +"of" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/secpost) +"og" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/secpost) +"oh" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/item/shard, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/secpost) +"oi" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/awaymission/snowdin/post/secpost) +"oj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post) +"ok" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post) +"ol" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"om" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"on" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"oo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4; + pixel_x = 5; + pixel_y = 5; + piping_layer = 3 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"op" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4; + pixel_x = 5; + pixel_y = 5; + piping_layer = 3 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"oq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"or" = ( +/obj/structure/table, +/obj/item/cultivator, +/obj/item/cultivator{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"os" = ( +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"ot" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"ou" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"ov" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Hydroponics APC"; + pixel_x = 26 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"ow" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/cavern2) +"ox" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/cavern2) +"oy" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/secpost) +"oz" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/secpost) +"oA" = ( +/obj/machinery/door/window/brigdoor/westleft, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/secpost) +"oB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/awaymission/snowdin/post/secpost) +"oC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/secpost) +"oD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/secpost) +"oE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/secpost) +"oF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/secpost) +"oG" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/secpost) +"oH" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/secpost) +"oI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/neutral/side{ + dir = 9 + }, +/area/awaymission/snowdin/post) +"oJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post) +"oK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post) +"oL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post) +"oM" = ( +/obj/machinery/power/smes/engineering, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"oN" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"oO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"oP" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"oQ" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/toolbox/mechanical, +/obj/structure/sign/warning/enginesafety{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"oR" = ( +/obj/structure/table, +/obj/item/hatchet{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/hatchet, +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"oS" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/shovel/spade, +/obj/item/wrench, +/obj/item/reagent_containers/glass/bucket, +/obj/item/wirecutters, +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"oT" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"oU" = ( +/obj/machinery/chem_master/condimaster, +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"oV" = ( +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/plasteel/hydrofloor, +/area/awaymission/snowdin/post/hydro) +"oW" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/engineering) +"oX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/engineering) +"oY" = ( +/obj/structure/flora/rock/pile/icy, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"oZ" = ( +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"pa" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/cavern2) +"pb" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/cavern2) +"pc" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/cavern2) +"pd" = ( +/obj/structure/bed, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/cavern2) +"pe" = ( +/obj/structure/table, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/cavern2) +"pf" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/cavern2) +"pg" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/cavern2) +"ph" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/structure/table, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/secpost) +"pi" = ( +/obj/structure/bed, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/secpost) +"pj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/sign/poster/official/do_not_question{ + pixel_y = -32 + }, +/obj/item/wirecutters, +/turf/open/floor/plasteel/red/side{ + dir = 10 + }, +/area/awaymission/snowdin/post/secpost) +"pk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/screwdriver, +/turf/open/floor/plasteel/red/side, +/area/awaymission/snowdin/post/secpost) +"pl" = ( +/obj/machinery/light, +/obj/item/crowbar, +/obj/structure/noticeboard{ + dir = 1; + pixel_y = -32 + }, +/obj/item/paper/fluff/awaymissions/snowdin/secnotice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/secpost) +"pm" = ( +/turf/open/floor/plasteel/red/corner{ + icon_state = "redcorner"; + dir = 8 + }, +/area/awaymission/snowdin/post/secpost) +"pn" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/secpost) +"po" = ( +/obj/structure/table, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/secpost) +"pp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post) +"pq" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"pr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/holopad, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"ps" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post) +"pt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post) +"pu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"pv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/visible{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/engineering) +"pw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"px" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"py" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/item/storage/toolbox/electrical{ + pixel_x = 4; + pixel_y = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"pz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/rack, +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"pA" = ( +/turf/closed/wall, +/area/awaymission/snowdin/cave/cavern) +"pB" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/cavern2) +"pC" = ( +/obj/item/chair, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/cavern2) +"pD" = ( +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/cavern2) +"pE" = ( +/turf/closed/wall/mineral/cult, +/area/awaymission/snowdin/post/cavern2) +"pF" = ( +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/cavern2) +"pG" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"pH" = ( +/turf/closed/wall/r_wall, +/area/awaymission/snowdin/post/secpost) +"pI" = ( +/turf/closed/wall/r_wall/rust, +/area/awaymission/snowdin/post/secpost) +"pJ" = ( +/obj/machinery/door/airlock/vault{ + name = "Armory"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/secpost) +"pK" = ( +/turf/open/floor/plasteel/red/side{ + dir = 10 + }, +/area/awaymission/snowdin/post/secpost) +"pL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side, +/area/awaymission/snowdin/post/secpost) +"pM" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/item/paper/fluff/awaymissions/snowdin/profile/engi1, +/obj/item/paper/fluff/awaymissions/snowdin/profile/hydro1, +/obj/item/paper/fluff/awaymissions/snowdin/profile/overseer, +/obj/item/paper/fluff/awaymissions/snowdin/profile/research1, +/obj/item/paper/fluff/awaymissions/snowdin/profile/research2, +/obj/item/paper/fluff/awaymissions/snowdin/profile/research3, +/obj/item/paper/fluff/awaymissions/snowdin/profile/sec1, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/secpost) +"pN" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/neutral/side{ + dir = 10 + }, +/area/awaymission/snowdin/post) +"pO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"pP" = ( +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post) +"pQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"pR" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/open/floor/plasteel/neutral/side{ + dir = 6 + }, +/area/awaymission/snowdin/post) +"pS" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"pT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"pU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"pV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"pW" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"pX" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/visible{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/engineering) +"pY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/engineering) +"pZ" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"qa" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"qb" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"qc" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"qd" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/item/clothing/head/welding, +/obj/item/weldingtool/largetank, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"qe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 8 + }, +/turf/closed/wall, +/area/awaymission/snowdin/post/engineering) +"qf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 9 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"qg" = ( +/obj/structure/flora/rock/pile/icy, +/turf/open/floor/engine/cult{ + initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"; + temperature = 120 + }, +/area/awaymission/snowdin/cave/cavern) +"qh" = ( +/obj/structure/fence, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"qi" = ( +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"qk" = ( +/obj/structure/closet, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/cavern2) +"ql" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/cavern2) +"qm" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets, +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/cavern2) +"qn" = ( +/obj/structure/guncase/shotgun, +/obj/item/gun/ballistic/shotgun/automatic, +/obj/item/gun/ballistic/shotgun/automatic, +/obj/item/gun/ballistic/shotgun/automatic, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/secpost) +"qo" = ( +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/secpost) +"qp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/secpost) +"qq" = ( +/obj/structure/window/reinforced/fulltile/ice, +/obj/structure/grille, +/obj/structure/barricade/wooden/crude/snow, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/secpost) +"qr" = ( +/obj/machinery/door/airlock/external/glass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/barricade/wooden/crude, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"qs" = ( +/obj/machinery/door/airlock/external/glass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/barricade/wooden/crude, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"qt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"qu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"qv" = ( +/obj/machinery/atmospherics/components/binary/volume_pump{ + name = "Air Mix To Turbine Mix" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"qw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"qx" = ( +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"qy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/engineering) +"qz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"qA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 10 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/engineering) +"qB" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/engineering) +"qC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"qD" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"qE" = ( +/obj/structure/sign/nanotrasen{ + pixel_x = 32 + }, +/obj/machinery/light/small/broken{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/post/cavern2) +"qF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/cavern2) +"qG" = ( +/obj/machinery/door/airlock{ + name = "Private Quarters" + }, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/cavern2) +"qH" = ( +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/cavern2) +"qI" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/cavern2) +"qJ" = ( +/obj/structure/rack, +/obj/item/storage/box/rubbershot, +/obj/machinery/light/small, +/obj/item/storage/box/rubbershot{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/secpost) +"qK" = ( +/obj/structure/rack, +/obj/item/storage/box/lethalshot, +/obj/item/storage/box/lethalshot{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/secpost) +"qL" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post) +"qM" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"qN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"qO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"qP" = ( +/obj/machinery/power/smes/engineering, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/cable/yellow, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"qQ" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"qR" = ( +/obj/machinery/computer/turbine_computer{ + dir = 1; + id = "snowdin_turbine" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/yellow/side{ + icon_state = "yellow"; + dir = 10 + }, +/area/awaymission/snowdin/post/engineering) +"qS" = ( +/obj/machinery/button/door{ + id = "snowdinturbineoutlet"; + name = "Turbine Outlet Release"; + pixel_y = -32 + }, +/obj/machinery/button/door{ + id = "snowdinturbinegas"; + name = "Turbine Gas Release"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/engineering) +"qT" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/yellow/side, +/area/awaymission/snowdin/post/engineering) +"qU" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/doorButtons/airlock_controller{ + idExterior = "snowdin_turbine_exterior"; + idInterior = "snowdin_turbine_interior"; + idSelf = "snowdin_turbine_access"; + name = "Turbine Access Console"; + pixel_x = -8; + pixel_y = -26; + req_access_txt = "32" + }, +/obj/machinery/button/ignition{ + id = "snowdin_turbine_ignitor"; + pixel_x = 6; + pixel_y = -24 + }, +/turf/open/floor/plasteel/yellow/side, +/area/awaymission/snowdin/post/engineering) +"qV" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plasteel/yellow/side, +/area/awaymission/snowdin/post/engineering) +"qW" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/yellow/side, +/area/awaymission/snowdin/post/engineering) +"qX" = ( +/obj/machinery/computer/atmos_control/tank{ + dir = 1; + frequency = 1442; + name = "Toxins Supply Control"; + output_tag = "snowdin_toxins_out"; + sensors = list("snowdin_toxins" = "Tank") + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/engineering) +"qY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/yellow/side, +/area/awaymission/snowdin/post/engineering) +"qZ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/yellow/side, +/area/awaymission/snowdin/post/engineering) +"ra" = ( +/obj/machinery/computer/atmos_control/tank{ + dir = 1; + frequency = 1442; + name = "Oxygen Supply Control"; + output_tag = "snowdin_oxygen_out"; + sensors = list("snowdin_oxygen" = "Tank") + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/yellow/side, +/area/awaymission/snowdin/post/engineering) +"rb" = ( +/obj/machinery/computer/atmos_control/tank{ + dir = 1; + frequency = 1442; + name = "Nitrogen Supply Control"; + output_tag = "snowdin_nitrogen_out"; + sensors = list("snowdin_nitrogen" = "Tank") + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/yellow/side, +/area/awaymission/snowdin/post/engineering) +"rc" = ( +/obj/machinery/door/airlock/external/glass, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"rd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"re" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"rf" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/cavern2) +"rg" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/cavern2) +"rh" = ( +/obj/structure/window, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/cavern2) +"ri" = ( +/obj/structure/window, +/obj/structure/table, +/turf/open/floor/plasteel/cafeteria, +/area/awaymission/snowdin/post/cavern2) +"rj" = ( +/obj/structure/statue/snow/snowman{ + anchored = 1 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"rk" = ( +/obj/structure/rack, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"rl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"rm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"rn" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"ro" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/engineering) +"rp" = ( +/turf/closed/wall/r_wall, +/area/awaymission/snowdin/post/engineering) +"rq" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/glass{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + id_tag = "snowdin_turbine_exterior"; + name = "Turbine Exterior Airlock"; + req_access_txt = "32" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/engine, +/area/awaymission/snowdin/post/engineering) +"rr" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/closed/wall/r_wall, +/area/awaymission/snowdin/post/engineering) +"rs" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"rt" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"ru" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/engineering) +"rv" = ( +/mob/living/simple_animal/hostile/skeleton/plasmaminer/jackhammer, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"rw" = ( +/obj/structure/fence, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"rx" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"ry" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/cavern2) +"rz" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"rA" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"rB" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/cavern2) +"rC" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/obj/machinery/light/broken{ + dir = 1 + }, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/cavern2) +"rD" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"rE" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"rF" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"rG" = ( +/obj/structure/window/reinforced/fulltile/ice, +/obj/structure/grille, +/obj/structure/barricade/wooden/crude/snow, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"rH" = ( +/obj/machinery/door/airlock/external/glass, +/obj/structure/barricade/wooden/crude/snow, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post) +"rI" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ + dir = 1; + id = "syndie_lavaland_inc_in"; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/light_emitter{ + name = "cave light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/post/engineering) +"rJ" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "snowdin_turbine_interior"; + idSelf = "snowdin_turbine_access"; + layer = 3.1; + name = "Turbine airlock control"; + pixel_x = 8; + pixel_y = -24 + }, +/turf/open/floor/engine, +/area/awaymission/snowdin/post/engineering) +"rK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/awaymission/snowdin/post/engineering) +"rL" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/volume_pump{ + name = "Mix To Turbine" + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "snowdin_turbine_exterior"; + idSelf = "snowdin_turbine_access"; + name = "Turbine airlock control"; + pixel_x = -8; + pixel_y = 24 + }, +/obj/structure/sign/warning/fire{ + pixel_y = -32 + }, +/turf/open/floor/engine, +/area/awaymission/snowdin/post/engineering) +"rM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 1; + frequency = 1442; + id_tag = "snowdin_toxins_out"; + name = "toxin out" + }, +/turf/open/floor/plating/airless, +/area/awaymission/snowdin/post/engineering) +"rN" = ( +/obj/machinery/air_sensor{ + frequency = 1442; + id_tag = "snowdin_toxins"; + name = "gas sensor (toxins)" + }, +/turf/open/floor/plating/airless, +/area/awaymission/snowdin/post/engineering) +"rO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 1; + frequency = 1442; + id_tag = "snowdin_oxygen_out"; + name = "oxygen out" + }, +/turf/open/floor/plating/airless, +/area/awaymission/snowdin/post/engineering) +"rP" = ( +/obj/machinery/air_sensor{ + frequency = 1442; + id_tag = "snowdin_oxygen"; + name = "gas sensor (oxygen)" + }, +/turf/open/floor/plating/airless, +/area/awaymission/snowdin/post/engineering) +"rQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 1; + frequency = 1442; + id_tag = "snowdin_nitrogen_out"; + name = "nitrogen out" + }, +/turf/open/floor/plating/airless, +/area/awaymission/snowdin/post/engineering) +"rR" = ( +/obj/machinery/air_sensor{ + frequency = 1442; + id_tag = "snowdin_nitrogen"; + name = "gas sensor (nitrogen)" + }, +/turf/open/floor/plating/airless, +/area/awaymission/snowdin/post/engineering) +"rS" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"rT" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"rU" = ( +/obj/structure/fence, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"rV" = ( +/obj/structure/lattice/catwalk, +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"rW" = ( +/obj/structure/lattice/catwalk, +/obj/structure/window/plasma/reinforced/unanchored, +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"rX" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"rY" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/cavern2) +"rZ" = ( +/mob/living/simple_animal/hostile/netherworld/migo, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/cavern2) +"sa" = ( +/obj/machinery/holopad, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/cavern2) +"sb" = ( +/mob/living/simple_animal/hostile/spawner/nether{ + max_mobs = 4; + name = "weak netherworld link" + }, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/cavern2) +"sc" = ( +/obj/item/stack/sheet/mineral/plasma{ + amount = 10 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"sd" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Main Outpost APC"; + pixel_x = 26 + }, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"se" = ( +/obj/structure/flora/tree/dead, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"sf" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"sg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/glass{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + id_tag = "snowdin_turbine_interior"; + name = "Turbine Interior Airlock"; + req_access_txt = "32" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/engine, +/area/awaymission/snowdin/post/engineering) +"sh" = ( +/turf/open/floor/plating/airless, +/area/awaymission/snowdin/post/engineering) +"si" = ( +/obj/machinery/light/small, +/turf/open/floor/plating/airless, +/area/awaymission/snowdin/post/engineering) +"sl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"sm" = ( +/obj/structure/lattice/catwalk, +/obj/structure/fence/door{ + dir = 4 + }, +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"sn" = ( +/obj/structure/lattice/catwalk, +/obj/structure/window/plasma/reinforced/spawner/east, +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"so" = ( +/obj/structure/lattice/catwalk, +/obj/structure/window/plasma/reinforced/spawner/west, +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"sp" = ( +/obj/structure/fence/door{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"sq" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/sign/nanotrasen{ + pixel_x = 32 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/post/cavern2) +"sr" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"ss" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/cavern2) +"st" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/cavern2) +"su" = ( +/obj/machinery/door/airlock/maintenance{ + name = "SMES Storage"; + req_access_txt = "32" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"sv" = ( +/obj/machinery/computer/monitor{ + dir = 8 + }, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"sw" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/outside) +"sx" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/outside) +"sy" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/outside) +"sz" = ( +/obj/machinery/door/poddoor{ + id = "snowdinturbinegas"; + name = "Turbine Gas Release" + }, +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/post/engineering) +"sA" = ( +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/post/engineering) +"sB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/igniter{ + id = "snowdin_turbine_ignitor" + }, +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/post/engineering) +"sC" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ + dir = 1; + id = "snowdin_incin_in" + }, +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/post/engineering) +"sD" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"sE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"sF" = ( +/obj/structure/fence, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"sG" = ( +/obj/structure/lattice/catwalk, +/obj/structure/window/plasma/reinforced/spawner/north, +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"sH" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/outside) +"sI" = ( +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/outside) +"sJ" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/stripes/white/line, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/outside) +"sK" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/stripes/white/line, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/outside) +"sL" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/outside) +"sM" = ( +/obj/machinery/power/compressor{ + comp_id = "snowdin_turbine"; + dir = 1; + luminosity = 2 + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/post/engineering) +"sN" = ( +/obj/structure/fence/corner{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"sO" = ( +/obj/structure/fence{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"sP" = ( +/obj/structure/fence/corner, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"sQ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Misc Storage"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"sR" = ( +/obj/machinery/door/airlock{ + name = "Bathroom" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern2) +"sS" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/outside) +"sT" = ( +/turf/open/floor/plating/snowed/smoothed, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"sU" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/machinery/computer{ + desc = "A console meant for calling and sending a transit ferry. It seems iced-over and non-functional."; + dir = 4; + icon_screen = null; + name = "Shuttle Transist Console" + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/outside) +"sV" = ( +/obj/structure/statue/snow/snowman{ + anchored = 1 + }, +/obj/item/clothing/head/bowler{ + pixel_y = 13 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"sW" = ( +/obj/machinery/power/turbine{ + dir = 2; + luminosity = 2 + }, +/obj/structure/cable, +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/post/engineering) +"sX" = ( +/obj/structure/flora/rock/icy, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"sY" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"sZ" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"ta" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"tb" = ( +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern2) +"tc" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern2) +"td" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/outside) +"te" = ( +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"tf" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/outside) +"tg" = ( +/obj/machinery/door/poddoor{ + id = "snowdinturbineoutlet"; + name = "Turbine Outlet" + }, +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/post/engineering) +"th" = ( +/obj/structure/rack, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern2) +"ti" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain, +/obj/structure/window{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern2) +"tj" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern2) +"tk" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern2) +"tl" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/outside) +"tm" = ( +/mob/living/simple_animal/hostile/asteroid/basilisk, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"tn" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/outside) +"to" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/outside) +"tp" = ( +/turf/closed/wall/mineral/snow, +/area/awaymission/snowdin/cave/cavern) +"tq" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/outside) +"tr" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/mob/living/simple_animal/hostile/bear/snow, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"ts" = ( +/obj/structure/closet/crate/wooden, +/obj/effect/spawner/lootdrop/snowdin/dungeonheavy, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"tt" = ( +/mob/living/simple_animal/hostile/skeleton/templar, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"tu" = ( +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"tv" = ( +/obj/structure/barricade/wooden/crude/snow, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"tw" = ( +/obj/structure/closet/crate/wooden, +/obj/effect/spawner/lootdrop/snowdin/dungeonmid, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"tx" = ( +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/cave) +"ty" = ( +/mob/living/simple_animal/hostile/netherworld/blankbody{ + desc = "It's Caleb Reed, but their flesh has an ashy texture, and their face is featureless save an eerie smile."; + name = "Caleb Reed" + }, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/cave) +"tz" = ( +/mob/living/simple_animal/hostile/skeleton/ice, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"tA" = ( +/obj/structure/flora/bush, +/obj/structure/flora/bush, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"tB" = ( +/obj/structure/flora/grass/both, +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"tC" = ( +/obj/structure/flora/grass/both, +/obj/structure/flora/tree/pine, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"tD" = ( +/obj/structure/closet/crate/wooden, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"tE" = ( +/turf/closed/indestructible/rock/snow, +/area/awaymission/snowdin/cave) +"tF" = ( +/turf/closed/mineral/snowmountain, +/area/awaymission/snowdin/outside) +"tG" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/mineral/snowmountain, +/area/awaymission/snowdin/cave) +"tH" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"tI" = ( +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"tJ" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"tK" = ( +/obj/effect/mob_spawn/human/clown/corpse, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"tL" = ( +/mob/living/simple_animal/hostile/poison/giant_spider/nurse/ice, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"tN" = ( +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/outside) +"tO" = ( +/obj/effect/spawner/lootdrop/snowdin/dungeonmid, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"tP" = ( +/obj/structure/barricade/wooden/snowed, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"tQ" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"tR" = ( +/obj/structure/barricade/wooden/snowed, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"tS" = ( +/obj/effect/light_emitter{ + name = "cave light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/cave) +"tT" = ( +/obj/structure/fence{ + pixel_x = 16 + }, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/outside) +"tU" = ( +/obj/structure/fence{ + pixel_x = -16 + }, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/outside) +"tV" = ( +/mob/living/simple_animal/hostile/poison/giant_spider/ice, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"tW" = ( +/obj/structure/fence{ + pixel_x = 16 + }, +/turf/open/floor/plating/ice, +/area/awaymission/snowdin/outside) +"tX" = ( +/obj/structure/fence{ + pixel_x = -16 + }, +/turf/open/floor/plating/ice, +/area/awaymission/snowdin/outside) +"tY" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/cavern1) +"tZ" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/cavern1) +"ua" = ( +/turf/open/floor/plating/ice, +/area/awaymission/snowdin/outside) +"ub" = ( +/obj/structure/bed, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/cavern1) +"uc" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/cavern1) +"ud" = ( +/mob/living/simple_animal/hostile/bear/snow, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"ue" = ( +/turf/open/floor/wood, +/area/awaymission/snowdin/post/cavern1) +"uf" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/closet, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/cavern1) +"ug" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uh" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"ui" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Main Outpost APC"; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uj" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uk" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/awaymission/snowdin/post/cavern1) +"ul" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"um" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"un" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uo" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"up" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uq" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/outside) +"ur" = ( +/obj/machinery/door/airlock{ + name = "Private Quarters" + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/cavern1) +"us" = ( +/obj/machinery/door/airlock/maintenance{ + name = "SMES Storage"; + req_access_txt = "32" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"ut" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uu" = ( +/obj/machinery/power/terminal, +/obj/structure/cable, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uv" = ( +/obj/structure/fence{ + pixel_x = 16 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"uw" = ( +/mob/living/simple_animal/hostile/poison/giant_spider/hunter/ice, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"ux" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/cavern1) +"uy" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uz" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post/cavern1) +"uA" = ( +/obj/machinery/computer/monitor{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uB" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uC" = ( +/obj/structure/fence{ + pixel_x = -16 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"uD" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Misc Storage"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uE" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/cavern1) +"uF" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/cavern1) +"uG" = ( +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/cavern1) +"uH" = ( +/obj/structure/table, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/storage/firstaid/brute, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/cavern1) +"uI" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/cavern1) +"uJ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uK" = ( +/mob/living/simple_animal/hostile/skeleton/plasmaminer, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/cavern1) +"uL" = ( +/obj/structure/table, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/cavern1) +"uM" = ( +/obj/structure/table, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/cavern1) +"uN" = ( +/obj/structure/table, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post/cavern1) +"uO" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uP" = ( +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter/ice, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"uQ" = ( +/obj/structure/spider/stickyweb, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"uR" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/post/cavern1) +"uS" = ( +/mob/living/simple_animal/hostile/skeleton/plasmaminer, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/cavern1) +"uT" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/cavern1) +"uU" = ( +/obj/item/chair, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/cavern1) +"uV" = ( +/obj/structure/table, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/cavern1) +"uW" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"uX" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"uY" = ( +/obj/structure/barricade/wooden/snowed, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"uZ" = ( +/obj/machinery/door/airlock/external/glass, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"va" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"vb" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"vc" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/cavern1) +"vd" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/corner, +/area/awaymission/snowdin/post/cavern1) +"ve" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/light/broken, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/cavern1) +"vf" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 6 + }, +/area/awaymission/snowdin/post/cavern1) +"vg" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Observation Deck" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/cavern1) +"vh" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/cavern1) +"vi" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/cavern1) +"vj" = ( +/obj/structure/table, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/cavern1) +"vk" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"vl" = ( +/obj/effect/mob_spawn/human/corpse/assistant, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"vm" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"vn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"vo" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/cavern1) +"vp" = ( +/obj/machinery/door/airlock{ + name = "Bathroom" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern1) +"vq" = ( +/obj/machinery/light/broken{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"vr" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/cavern1) +"vs" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"vt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"vu" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/cavern1) +"vv" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern1) +"vw" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern1) +"vx" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 10 + }, +/area/awaymission/snowdin/post/cavern1) +"vy" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"vz" = ( +/obj/machinery/light/small/broken{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/post/cavern1) +"vA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/cavern1) +"vB" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/neutral/side{ + dir = 10 + }, +/area/awaymission/snowdin/post/cavern1) +"vC" = ( +/obj/structure/rack, +/obj/machinery/light, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/cavern1) +"vD" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain, +/obj/structure/window{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern1) +"vE" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/awaymission/snowdin/post/cavern1) +"vF" = ( +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave/mountain) +"vG" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ + dir = 1; + id = "snowdin_incin_in" + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/post/cavern1) +"vH" = ( +/obj/structure/flora/tree/pine, +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"vI" = ( +/mob/living/simple_animal/hostile/asteroid/basilisk, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave/mountain) +"vJ" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"vK" = ( +/obj/effect/decal/cleanable/blood/old, +/mob/living/simple_animal/hostile/bear/snow, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"vL" = ( +/turf/closed/wall/mineral/titanium, +/area/awaymission/snowdin/post/broken_shuttle) +"vM" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/broken_shuttle) +"vN" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/effect/baseturf_helper/asteroid/snow, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/broken_shuttle) +"vO" = ( +/obj/structure/fluff/fokoff_sign, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"vP" = ( +/obj/structure/bed, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"vQ" = ( +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"vR" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall/mineral/titanium, +/area/awaymission/snowdin/post/broken_shuttle) +"vS" = ( +/obj/structure/chair, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/snowdin/post/broken_shuttle) +"vT" = ( +/obj/structure/chair, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/snowdin/post/broken_shuttle) +"vU" = ( +/obj/item/chair, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/snowdin/post/broken_shuttle) +"vV" = ( +/obj/structure/barricade/wooden/snowed, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"vW" = ( +/mob/living/simple_animal/hostile/skeleton/ice, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"vX" = ( +/obj/machinery/door/airlock/shuttle, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/snowdin/post/broken_shuttle) +"vY" = ( +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/snowdin/post/broken_shuttle) +"vZ" = ( +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"wa" = ( +/obj/structure/flora/bush, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"wb" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/snowdin/post/broken_shuttle) +"wc" = ( +/obj/machinery/computer{ + name = "Shuttle Transist Console"; + desc = "A console meant for calling and sending a transit ferry. It seems iced-over and non-functional."; + dir = 1; + icon_screen = null + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/snowdin/post/broken_shuttle) +"wd" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/snowdin/post/broken_shuttle) +"we" = ( +/mob/living/simple_animal/hostile/skeleton/ice{ + name = "Captain Bones" + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wf" = ( +/obj/structure/bed, +/mob/living/simple_animal/hostile/skeleton/ice{ + name = "Privateer Jones" + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wg" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wh" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wi" = ( +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wj" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wk" = ( +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"wl" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wm" = ( +/obj/machinery/porta_turret/centcom_shuttle/weak{ + desc = "A turret built with substandard parts and run down further with age."; + icon_state = "syndie_off"; + dir = 9; + faction = list("pirate") + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"wn" = ( +/obj/structure/closet/crate/wooden, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wo" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wp" = ( +/obj/structure/flora/tree/pine/xmas/presents, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"wq" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wr" = ( +/obj/structure/closet/crate/wooden, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"ws" = ( +/obj/structure/closet/crate/wooden, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/cave) +"wt" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/snowdin/dungeonmisc, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wu" = ( +/obj/structure/table/wood, +/obj/item/trash/candy, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wv" = ( +/obj/item/trash/can, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"ww" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wx" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/remains/human, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"wy" = ( +/obj/structure/bonfire{ + burning = 1; + icon_state = "bonfire_warm" + }, +/obj/effect/light_emitter{ + light_color = "#FAA019"; + light_power = 1; + light_range = 4; + name = "fire light" + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wz" = ( +/obj/structure/closet/crate/wooden, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wA" = ( +/obj/structure/table/wood, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"wB" = ( +/obj/item/key, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"wC" = ( +/obj/vehicle/ridden/atv{ + icon_state = "atv"; + dir = 4 + }, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"wD" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/mining_dock) +"wE" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/mining_dock) +"wF" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"wG" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"wH" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"wI" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"wJ" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"wK" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"wL" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"wM" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"wN" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Main Outpost APC"; + pixel_x = 26 + }, +/obj/structure/cable/yellow, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"wO" = ( +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"wP" = ( +/turf/closed/wall/mineral/cult, +/area/awaymission/snowdin/post/mining_dock) +"wQ" = ( +/turf/closed/indestructible/rock/snow/ice, +/area/awaymission/snowdin/cave/mountain) +"wR" = ( +/obj/machinery/door/airlock/maintenance{ + name = "SMES Storage"; + req_access_txt = "32" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"wS" = ( +/turf/closed/indestructible/rock/snow/ice, +/area/awaymission/snowdin/cave) +"wT" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 9 + }, +/area/awaymission/snowdin/post/mining_dock) +"wU" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/warning/docking{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_dock) +"wV" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_dock) +"wW" = ( +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/mining_dock) +"wX" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_dock) +"wY" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/mining_dock) +"wZ" = ( +/obj/structure/sign/warning/docking{ + pixel_y = 32 + }, +/obj/machinery/light/broken{ + dir = 1 + }, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/mining_dock) +"xa" = ( +/obj/effect/turf_decal/stripes/white/line, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xb" = ( +/obj/effect/turf_decal/stripes/white/line, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xc" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_dock) +"xd" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_dock) +"xe" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"xf" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"xg" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/mining_dock) +"xh" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/mining_dock) +"xi" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/mining_dock) +"xj" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/mob/living/simple_animal/hostile/spawner/nether{ + max_mobs = 4; + name = "weak netherworld link" + }, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/mining_dock) +"xk" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xl" = ( +/turf/open/floor/plasteel/elevatorshaft{ + initial_gas_mix = "o2=22;n2=82;TEMP=180" + }, +/area/awaymission/snowdin/cave) +"xp" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xq" = ( +/obj/machinery/light/broken{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"xr" = ( +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"xs" = ( +/obj/item/gun/energy/e_gun{ + dead_cell = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"xt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mob_spawn/human/corpse/nanotrasensoldier{ + brute_damage = 145; + mob_name = "James Reed"; + name = "James Reed"; + oxy_damage = 55 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"xu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/engine/cult, +/area/awaymission/snowdin/post/mining_dock) +"xx" = ( +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_dock) +"xy" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"xz" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"xA" = ( +/mob/living/simple_animal/hostile/netherworld/migo, +/turf/open/floor/plasteel/neutral/side{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_dock) +"xB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"xC" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 8 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xD" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 4 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xE" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 6 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xF" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xG" = ( +/obj/machinery/holopad, +/obj/item/disk/holodisk/snowdin/overrun, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_dock) +"xH" = ( +/obj/machinery/door/airlock/vault{ + name = "Relic Storage"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_dock) +"xI" = ( +/obj/item/shard, +/turf/open/floor/plasteel/neutral/side{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_dock) +"xJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"xK" = ( +/obj/docking_port/stationary{ + area_type = /area/awaymission/snowdin/cave; + dir = 4; + dwidth = 3; + height = 6; + id = "snowdin_excavation_top"; + name = "snowdin excavation top"; + roundstart_template = /datum/map_template/shuttle/snowdin/excavation; + width = 6 + }, +/turf/open/floor/plasteel/elevatorshaft{ + initial_gas_mix = "o2=22;n2=82;TEMP=180" + }, +/area/awaymission/snowdin/cave) +"xL" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 8 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xM" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xN" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_dock) +"xO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"xP" = ( +/obj/docking_port/stationary{ + area_type = /area/awaymission/snowdin/post/mining_dock; + dir = 4; + dwidth = 3; + height = 6; + id = "snowdin_excavation_down"; + name = "snowdin excavation down"; + width = 6 + }, +/turf/open/floor/plasteel/elevatorshaft, +/area/awaymission/snowdin/post/mining_dock) +"xQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_dock) +"xR" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/cave) +"xS" = ( +/obj/machinery/power/port_gen/pacman, +/obj/item/stack/sheet/mineral/plasma{ + amount = 3 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"xT" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xU" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"xV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3 + }, +/turf/closed/mineral/snowmountain/cavern, +/area/awaymission/snowdin/cave/cavern) +"xW" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/mining_dock) +"xX" = ( +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_dock) +"xY" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"xZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"ya" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"yb" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"yc" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 6 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"yd" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"ye" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"yf" = ( +/obj/structure/window/reinforced/fulltile/ice, +/obj/structure/grille, +/turf/open/floor/plating, +/area/awaymission/snowdin/cave) +"yg" = ( +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/cave) +"yi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/fence, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"yj" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/closet/crate, +/obj/item/relic, +/obj/item/relic, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"yk" = ( +/obj/structure/closet/crate, +/obj/item/relic, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_dock) +"yl" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"ym" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/computer/shuttle/snowdin/mining{ + dir = 8; + name = "Excavation Elevator Console"; + possible_destinations = "snowdin_excavation_top;snowdin_excavation_down"; + shuttleId = "snowdin_excavation" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"yn" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 8 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"yo" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"yp" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"yq" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"yr" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/machinery/computer/shuttle/snowdin/mining{ + dir = 8; + name = "Excavation Elevator Console"; + possible_destinations = "snowdin_excavation_top;snowdin_excavation_down"; + shuttleId = "snowdin_excavation" + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"ys" = ( +/obj/machinery/atmospherics/pipe/manifold4w/orange/visible, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"yt" = ( +/obj/structure/window/reinforced/fulltile/ice, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/cave) +"yu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + name = "toxin out"; + dir = 8; + id_tag = "snowdin_toxins_mine_1"; + frequency = 1442 + }, +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/cave) +"yv" = ( +/turf/closed/wall/mineral/snow, +/area/awaymission/snowdin/outside) +"yw" = ( +/obj/structure/closet/crate, +/obj/item/relic, +/obj/item/relic, +/obj/item/relic, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_dock) +"yx" = ( +/obj/structure/closet/crate, +/obj/item/relic, +/obj/item/relic, +/obj/item/relic, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"yy" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"yz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"yA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"yB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"yC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_dock) +"yD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_dock) +"yE" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"yF" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/outside) +"yG" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/outside) +"yH" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"yI" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"yJ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"yK" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"yL" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"yM" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"yN" = ( +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"yO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/fence/door{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"yP" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 10 + }, +/area/awaymission/snowdin/post/mining_dock) +"yQ" = ( +/obj/structure/sign/warning/docking{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/mining_dock) +"yR" = ( +/obj/machinery/light/broken, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"yS" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/mining_dock) +"yT" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/mining_dock) +"yU" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/outside) +"yV" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/post/minipost) +"yW" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/minipost) +"yX" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/minipost) +"yY" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/minipost) +"yZ" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall, +/area/awaymission/snowdin/post/minipost) +"za" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 4; + frequency = 1442; + id_tag = "snowdin_toxins_mine_1"; + name = "toxin out" + }, +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/cave) +"zc" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"zd" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"ze" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"zf" = ( +/obj/structure/rack, +/obj/item/pickaxe/drill, +/obj/item/pickaxe/drill{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"zg" = ( +/obj/structure/barricade/sandbags, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"zh" = ( +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"zi" = ( +/obj/structure/barricade/sandbags, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"zj" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/fence/corner{ + dir = 9 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"zk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/fence/corner, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"zl" = ( +/obj/structure/lattice/catwalk, +/obj/structure/window/plasma/reinforced/spawner/north, +/obj/structure/window/plasma/reinforced/unanchored, +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"zm" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"zn" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"zo" = ( +/obj/machinery/door/poddoor/shutters{ + id = "snowdingarage2"; + name = "garage door" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"zp" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"zq" = ( +/obj/vehicle/ridden/atv{ + icon_state = "atv"; + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"zr" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"zs" = ( +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"zt" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall/mineral/wood, +/area/awaymission/snowdin/igloo) +"zu" = ( +/turf/closed/wall/mineral/wood, +/area/awaymission/snowdin/igloo) +"zv" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/emcloset, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"zw" = ( +/obj/structure/rack, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"zx" = ( +/obj/machinery/light/small, +/obj/machinery/button/door{ + id = "snowdingarage2"; + name = "garage door toggle"; + pixel_x = -7; + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"zy" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"zz" = ( +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"zA" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"zB" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"zC" = ( +/obj/structure/rack, +/obj/item/grown/log/tree, +/obj/item/grown/log/tree{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/grown/log/tree{ + pixel_x = -2; + pixel_y = 3 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"zD" = ( +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"zE" = ( +/obj/structure/rack, +/obj/item/stack/sheet/mineral/wood{ + amount = 15 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"zF" = ( +/mob/living/simple_animal/hostile/skeleton/eskimo, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"zG" = ( +/obj/machinery/space_heater, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"zH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + piping_layer = 3 + }, +/obj/machinery/space_heater, +/obj/structure/sign/warning/xeno_mining{ + pixel_x = 32 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"zI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3 + }, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/mining_dock) +"zJ" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/post/mining_dock) +"zK" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"zL" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Garage" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"zM" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"zN" = ( +/obj/structure/rack, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"zO" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"zP" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/snowdin/dungeonmisc, +/obj/effect/spawner/lootdrop/snowdin/dungeonmisc, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"zQ" = ( +/obj/item/hatchet{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"zR" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"zS" = ( +/obj/machinery/door/airlock/external/glass, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"zT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/fence/corner{ + dir = 6 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"zU" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"zV" = ( +/obj/structure/filingcabinet, +/turf/open/floor/plasteel/neutral/side{ + dir = 9 + }, +/area/awaymission/snowdin/post/minipost) +"zW" = ( +/obj/structure/filingcabinet, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"zX" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post/minipost) +"zY" = ( +/obj/effect/turf_decal/bot, +/obj/structure/ore_box, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"zZ" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall/mineral/snow, +/area/awaymission/snowdin/igloo) +"Aa" = ( +/turf/closed/wall/mineral/snow, +/area/awaymission/snowdin/igloo) +"Ab" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/mob/living/simple_animal/hostile/skeleton/eskimo, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"Ac" = ( +/obj/structure/table/wood, +/obj/item/hatchet{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"Ad" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/fence/corner{ + dir = 10 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Ae" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Af" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/sign/nanotrasen{ + pixel_y = 32 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Ag" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Ah" = ( +/obj/structure/window/reinforced/fulltile/ice, +/obj/structure/grille, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"Ai" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/minipost) +"Aj" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/minipost) +"Ak" = ( +/obj/structure/table, +/obj/item/paper_bin, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post/minipost) +"Al" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/cave) +"Am" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"An" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"Ao" = ( +/obj/structure/mineral_door/wood, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"Ap" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/fence, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Aq" = ( +/mob/living/simple_animal/hostile/skeleton/plasmaminer, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"Ar" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/fence/corner{ + dir = 10 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"As" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/fence/door, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"At" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Au" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Av" = ( +/obj/machinery/door/airlock/external/glass, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"Aw" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/minipost) +"Ax" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"Ay" = ( +/obj/structure/table, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/minipost) +"Az" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"AA" = ( +/mob/living/simple_animal/hostile/skeleton/eskimo, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"AB" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"AC" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"AD" = ( +/turf/open/floor/plating, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"AE" = ( +/obj/item/pen, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/minipost) +"AF" = ( +/obj/structure/table, +/obj/item/flashlight/lamp, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/minipost) +"AG" = ( +/mob/living/simple_animal/hostile/bear/snow, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/post/minipost) +"AH" = ( +/obj/structure/bed, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/post/minipost) +"AI" = ( +/obj/structure/bonfire{ + burning = 1; + icon_state = "bonfire_warm" + }, +/obj/effect/light_emitter{ + light_color = "#FAA019"; + light_power = 1; + light_range = 4; + name = "fire light" + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"AJ" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"AK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/fence/door, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"AL" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/fence/corner, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"AM" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"AN" = ( +/obj/item/key, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/minipost) +"AO" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/minipost) +"AP" = ( +/obj/machinery/door/airlock{ + id_tag = "snowdindormabandoned1"; + name = "Private Quarters" + }, +/turf/open/floor/wood, +/area/awaymission/snowdin/post/minipost) +"AQ" = ( +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/post/minipost) +"AR" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/post/minipost) +"AS" = ( +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"AT" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"AU" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"AV" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"AW" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"AX" = ( +/obj/structure/window/reinforced/fulltile/ice, +/obj/structure/grille, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"AY" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/open/floor/plasteel/neutral/side{ + dir = 9 + }, +/area/awaymission/snowdin/post/minipost) +"AZ" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/awaymission/snowdin/post/minipost) +"Ba" = ( +/obj/item/wrench, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/minipost) +"Bb" = ( +/obj/machinery/button/door{ + id = "snowdindormabandoned1"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/post/minipost) +"Bc" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"Bd" = ( +/mob/living/simple_animal/hostile/skeleton/eskimo, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"Bf" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/minipost) +"Bg" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/mob/living/simple_animal/hostile/skeleton/eskimo, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"Bh" = ( +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"Bi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/fence/door, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Bj" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"Bk" = ( +/obj/item/clothing/neck/stethoscope, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post/minipost) +"Bl" = ( +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post/minipost) +"Bm" = ( +/obj/structure/table, +/obj/item/storage/firstaid/fire, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post/minipost) +"Bn" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"Bo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Bp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/fence/door{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Bq" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Recon Post APC"; + pixel_x = 1; + pixel_y = 25 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"Br" = ( +/obj/machinery/computer/monitor, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"Bs" = ( +/obj/structure/table, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post/minipost) +"Bt" = ( +/obj/structure/table, +/obj/machinery/light/small, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post/minipost) +"Bu" = ( +/obj/structure/table, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/plasteel/cmo, +/area/awaymission/snowdin/post/minipost) +"Bv" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"Bw" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"Bx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"By" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Bz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"BA" = ( +/obj/machinery/power/smes, +/obj/structure/cable/yellow, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"BB" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/machinery/light/small, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"BC" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/port_gen/pacman, +/obj/item/stack/sheet/mineral/plasma{ + amount = 3 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"BD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/fence/corner{ + dir = 10 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"BE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"BF" = ( +/obj/structure/lattice/catwalk, +/obj/structure/fence/door, +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"BG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"BH" = ( +/obj/structure/fence, +/turf/closed/mineral/snowmountain/cavern, +/area/awaymission/snowdin/cave/cavern) +"BI" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"BJ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"BK" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"BL" = ( +/obj/effect/turf_decal/weather/snow/corner, +/mob/living/simple_animal/hostile/skeleton/eskimo, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"BM" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/awaymission/snowdin/igloo) +"BN" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"BO" = ( +/obj/effect/turf_decal/stripes/end{ + icon_state = "warn_end"; + dir = 1 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"BP" = ( +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/lava/plasma, +/area/awaymission/snowdin/cave/cavern) +"BQ" = ( +/obj/effect/turf_decal/stripes/end{ + icon_state = "warn_end"; + dir = 8 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"BR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"BS" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"BT" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"BU" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"BV" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"BW" = ( +/obj/item/clothing/head/cone, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"BX" = ( +/obj/machinery/light/small, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"BY" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"BZ" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"Ca" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + icon_state = "crateopen"; + name = "explosives ordinance" + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"Cb" = ( +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Cc" = ( +/obj/structure/fence/door, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Cd" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Ce" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + name = "explosives ordinance" + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"Cf" = ( +/obj/machinery/power/port_gen/pacman, +/obj/item/stack/sheet/mineral/plasma{ + amount = 3 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"Cg" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/cave) +"Ch" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"Ci" = ( +/obj/item/stack/ore/iron, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"Cj" = ( +/obj/structure/fence{ + dir = 4 + }, +/obj/structure/sign/mining, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"Ck" = ( +/obj/structure/fence/door, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"Cl" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/cave/cavern) +"Cm" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"Cn" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mob_spawn/human/corpse/syndicatesoldier, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"Co" = ( +/obj/item/stack/rods, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Cp" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"Cq" = ( +/obj/item/stack/sheet/mineral/plastitanium, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Cr" = ( +/obj/item/shard, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Cs" = ( +/obj/structure/girder, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"Ct" = ( +/turf/closed/wall/mineral/plastitanium, +/area/awaymission/snowdin/outside) +"Cu" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"Cv" = ( +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Cw" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Cx" = ( +/turf/open/floor/plating/asteroid/snow/ice, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Cy" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"Cz" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/cave) +"CA" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"CB" = ( +/obj/item/shard, +/turf/open/floor/plating/ice/smooth, +/area/awaymission/snowdin/cave) +"CC" = ( +/turf/closed/wall/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"CD" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/awaymission/snowdin/cave) +"CE" = ( +/obj/structure/girder, +/obj/item/stack/sheet/mineral/plastitanium, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"CF" = ( +/obj/item/stack/rods, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"CG" = ( +/obj/item/shard, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"CH" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"CI" = ( +/obj/item/reagent_containers/food/drinks/beer{ + list_reagents = null + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"CJ" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"CK" = ( +/obj/structure/closet/syndicate{ + desc = "It's a storage unit for a Syndicate boarding party." + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"CL" = ( +/obj/structure/closet/syndicate{ + desc = "It's a storage unit for a Syndicate boarding party." + }, +/obj/effect/turf_decal/bot_white, +/obj/item/gun/ballistic/automatic/pistol, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"CM" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"CN" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"CO" = ( +/obj/machinery/recharge_station, +/turf/open/floor/circuit/red, +/area/awaymission/snowdin/cave) +"CP" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater"; + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"CQ" = ( +/obj/structure/shuttle/engine/propulsion/left{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"CR" = ( +/obj/effect/gibspawner/generic, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"CS" = ( +/obj/effect/light_emitter{ + name = "cave light"; + set_cap = 3; + set_luminosity = 6 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"CT" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"CU" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mob_spawn/human/corpse/syndicatesoldier, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"CV" = ( +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"CW" = ( +/obj/item/shard, +/obj/item/stack/cable_coil/red{ + amount = 1 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"CX" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"CY" = ( +/obj/item/aicard, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"CZ" = ( +/obj/structure/frame/machine, +/obj/item/stack/cable_coil/red{ + amount = 1 + }, +/turf/open/floor/circuit/red, +/area/awaymission/snowdin/cave) +"Da" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"Db" = ( +/obj/structure/fence, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"Dc" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"Dd" = ( +/obj/item/shard, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"De" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/built{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"Df" = ( +/obj/item/stack/rods, +/obj/item/reagent_containers/food/drinks/beer{ + list_reagents = null + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"Dg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/item/shard, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"Dh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/item/reagent_containers/food/drinks/beer{ + list_reagents = null + }, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"Di" = ( +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"Dj" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Dk" = ( +/obj/item/stack/cable_coil/red{ + amount = 1 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Dl" = ( +/obj/structure/shuttle/engine/propulsion/right{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"Dm" = ( +/obj/effect/light_emitter{ + name = "cave light"; + set_cap = 3; + set_luminosity = 6 + }, +/obj/structure/fence/door{ + dir = 4 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"Dn" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"Do" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/stack/rods, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"Dp" = ( +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Dq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/item/reagent_containers/food/drinks/beer{ + list_reagents = null + }, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"Dr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/stack/rods, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"Ds" = ( +/obj/item/grenade/plastic/c4, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"Dt" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Du" = ( +/obj/structure/girder, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"Dv" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/cave) +"Dw" = ( +/obj/item/stack/rods, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"Dx" = ( +/obj/machinery/light/built, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"Dy" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/bot_white, +/obj/item/chair, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Dz" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/bot_white, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"DA" = ( +/obj/item/stack/rods, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"DB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"DC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"DD" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"DE" = ( +/obj/item/stack/sheet/mineral/plastitanium, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/outside) +"DF" = ( +/obj/machinery/light/small, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"DG" = ( +/obj/machinery/door/airlock/external{ + name = "Ready Room"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"DH" = ( +/obj/structure/window/plastitanium, +/obj/structure/grille, +/turf/open/floor/plating, +/area/awaymission/snowdin/cave) +"DI" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/awaymission/snowdin/cave) +"DJ" = ( +/obj/machinery/door/airlock/hatch{ + req_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"DK" = ( +/obj/structure/grille, +/obj/item/shard, +/turf/open/floor/plating, +/area/awaymission/snowdin/cave) +"DL" = ( +/obj/item/stack/rods, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"DM" = ( +/mob/living/simple_animal/hostile/bear/snow, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"DN" = ( +/obj/effect/gibspawner/human, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"DO" = ( +/obj/item/shard, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"DP" = ( +/obj/item/stack/rods, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"DQ" = ( +/obj/item/paper/crumpled/ruins/snowdin/misc1, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"DR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/item/shard, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"DS" = ( +/turf/open/floor/plasteel/vault, +/area/awaymission/snowdin/cave) +"DT" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/snowdin/cave) +"DU" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater"; + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/cave) +"DV" = ( +/obj/structure/shuttle/engine/propulsion/left{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"DW" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"DX" = ( +/obj/item/shard, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"DY" = ( +/obj/effect/turf_decal/weather/snow, +/mob/living/simple_animal/hostile/bear/snow, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"DZ" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Ea" = ( +/obj/item/reagent_containers/food/drinks/beer{ + list_reagents = null + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"Eb" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mob_spawn/human/corpse/syndicatesoldier, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"Ec" = ( +/obj/item/shard, +/obj/item/stack/cable_coil/red{ + amount = 1 + }, +/turf/open/floor/plasteel/vault, +/area/awaymission/snowdin/cave) +"Ed" = ( +/obj/machinery/telecomms/allinone/indestructable, +/turf/open/floor/circuit/red, +/area/awaymission/snowdin/cave) +"Ee" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"Ef" = ( +/obj/item/reagent_containers/food/drinks/beer{ + list_reagents = null + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Eg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"Eh" = ( +/obj/structure/shuttle/engine/propulsion/right{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave) +"Ei" = ( +/obj/item/shard, +/mob/living/simple_animal/hostile/bear/snow, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"Ej" = ( +/obj/structure/grille/broken, +/obj/item/stack/rods, +/turf/open/floor/plating, +/area/awaymission/snowdin/cave) +"Ek" = ( +/obj/structure/door_assembly/door_assembly_hatch, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"El" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/bot_white, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"Em" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/bot_white, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"En" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"Eo" = ( +/obj/effect/turf_decal/weather/snow, +/obj/item/reagent_containers/food/drinks/beer{ + list_reagents = null + }, +/turf/open/floor/plasteel/dark/snowdin, +/area/awaymission/snowdin/cave) +"Ep" = ( +/obj/item/shard, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"Eq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/shard, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"Er" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Es" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Et" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mob_spawn/human/corpse/syndicatesoldier, +/turf/open/floor/plasteel/vault/snowdin{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Eu" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/beer{ + list_reagents = null + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"Ev" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/stack/rods, +/obj/item/reagent_containers/food/drinks/beer{ + list_reagents = null + }, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"Ew" = ( +/obj/machinery/iv_drip, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"Ex" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced, +/obj/effect/spawner/lootdrop/snowdin/dungeonlite, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"Ey" = ( +/obj/structure/girder, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plating/asteroid/snow{ + floor_variance = 0; + icon_state = "snow_dug"; + slowdown = 1 + }, +/area/awaymission/snowdin/cave) +"Ez" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"EA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/item/shard, +/obj/item/reagent_containers/food/drinks/beer{ + list_reagents = null + }, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"EB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"EC" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/circular_saw, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"ED" = ( +/obj/item/toy/plush/nukeplushie, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"EE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/suit_storage_unit{ + state_open = 1 + }, +/turf/open/floor/mineral/plastitanium{ + initial_gas_mix = "o2=22;n2=82;TEMP=180"; + planetary_atmos = 1; + temperature = 180 + }, +/area/awaymission/snowdin/cave) +"EF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/suit_storage_unit/syndicate, +/turf/open/floor/mineral/plastitanium{ + initial_gas_mix = "o2=22;n2=82;TEMP=180"; + planetary_atmos = 1; + temperature = 180 + }, +/area/awaymission/snowdin/cave) +"EG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/suit_storage_unit{ + state_open = 1 + }, +/turf/open/floor/mineral/plastitanium{ + initial_gas_mix = "o2=22;n2=82;TEMP=180"; + planetary_atmos = 1; + temperature = 180 + }, +/area/awaymission/snowdin/cave) +"EH" = ( +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"EI" = ( +/obj/item/stack/rods, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"EJ" = ( +/obj/item/reagent_containers/dropper, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"EK" = ( +/obj/structure/bed/roller, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"EL" = ( +/obj/item/shard, +/obj/item/retractor, +/obj/item/cautery, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"EM" = ( +/obj/structure/table/optable, +/obj/effect/turf_decal/bot_white, +/obj/item/surgical_drapes, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"EN" = ( +/obj/machinery/sleeper/syndie{ + icon_state = "sleeper_s"; + dir = 1 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"EO" = ( +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"EP" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/sleeper/syndie{ + icon_state = "sleeper_s"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"EQ" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/awaymission/snowdin/cave) +"ER" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"ES" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/built, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/cave) +"ET" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 10 + }, +/turf/closed/wall/mineral/plastitanium, +/area/awaymission/snowdin/cave) +"EU" = ( +/obj/item/stack/ore/iron, +/turf/closed/mineral/iron/ice, +/area/awaymission/snowdin/cave/cavern) +"EV" = ( +/obj/structure/mecha_wreckage/ripley, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"EW" = ( +/obj/structure/ore_box, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"EX" = ( +/obj/item/pickaxe/drill{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"EY" = ( +/obj/item/shard, +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"EZ" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Fa" = ( +/obj/structure/flora/grass/both, +/obj/structure/flora/bush, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Fb" = ( +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"Fc" = ( +/obj/structure/fence/corner{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"Fd" = ( +/obj/structure/statue/snow/snowman{ + anchored = 1; + name = "Officer Snowlby" + }, +/obj/item/clothing/head/helmet{ + pixel_y = 8 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Fe" = ( +/obj/structure/fence, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"Ff" = ( +/obj/structure/fence/corner{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"Fg" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"Fh" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/loading_area, +/obj/vehicle/ridden/atv, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"Fi" = ( +/obj/structure/flora/bush, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Fj" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"Fk" = ( +/obj/item/shard, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"Fl" = ( +/obj/structure/fence{ + dir = 4 + }, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Fm" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Fn" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Fo" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Fp" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Fq" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Fr" = ( +/obj/structure/statue/snow/snowman{ + anchored = 1; + name = "Officer Norm" + }, +/obj/item/gun/energy/e_gun/mini{ + pixel_y = -5 + }, +/obj/item/clothing/head/helmet{ + pixel_y = 8 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Fs" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 8 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Ft" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Fu" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Fv" = ( +/obj/machinery/light/small, +/obj/structure/sign/nanotrasen{ + pixel_y = -32 + }, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/post/mining_dock) +"Fw" = ( +/obj/item/shard, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"Fx" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Fy" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Fz" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"FA" = ( +/obj/effect/mob_spawn/human/corpse/assistant{ + brute_damage = 150; + oxy_damage = 50 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"FB" = ( +/obj/structure/statue/snow/snowman{ + anchored = 1; + name = "Officer Norm" + }, +/obj/item/clothing/head/helmet{ + pixel_y = 8 + }, +/obj/item/melee/baton{ + pixel_x = 4 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"FC" = ( +/obj/effect/baseturf_helper/asteroid/snow{ + baseturf = /turf/open/floor/plating/asteroid/snow/ice; + name = "asteroid snowice baseturf editor" + }, +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/mining_dock) +"FD" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/holosign/barrier/atmos, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"FE" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/structure/lattice/catwalk, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"FF" = ( +/obj/structure/statue/snow/snowman{ + name = "Snow-Luc Price" + }, +/obj/item/clothing/head/HoS{ + pixel_y = 10 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"FG" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/shard, +/obj/item/stack/rods{ + amount = 2 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"FH" = ( +/obj/item/shard, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"FI" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"FJ" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/item/stack/rods{ + amount = 2 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"FK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + piping_layer = 3 + }, +/obj/structure/sign/warning/xeno_mining{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"FL" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/post/mining_dock) +"FM" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"FQ" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/obj/machinery/light/small, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/post/mining_main) +"FR" = ( +/obj/machinery/light/small, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/post/mining_main) +"FS" = ( +/obj/structure/fence/door{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"FT" = ( +/obj/structure/ore_box, +/turf/closed/mineral/snowmountain/cavern, +/area/awaymission/snowdin/cave/cavern) +"FU" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_dock) +"FV" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_dock) +"FW" = ( +/obj/structure/sign/nanotrasen{ + pixel_y = -32 + }, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"FZ" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/mining_main) +"Ga" = ( +/obj/structure/window/reinforced/fulltile/ice, +/obj/structure/grille, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Gb" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Gc" = ( +/obj/structure/statue/snow/snowman{ + anchored = 1; + name = "snowman" + }, +/obj/item/pickaxe/mini{ + pixel_x = 5; + pixel_y = 3 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Gd" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/mining_main/robotics) +"Ge" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/robotics) +"Gf" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/robotics) +"Gg" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/robotics) +"Gh" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_dock) +"Gi" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/mining_dock) +"Gj" = ( +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_dock) +"Gk" = ( +/turf/closed/wall/ice, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Gl" = ( +/obj/machinery/door/poddoor/shutters{ + id = "snowdingarageunder"; + name = "garage door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Gm" = ( +/obj/machinery/door/poddoor/shutters{ + id = "snowdingarageunder2"; + name = "garage door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Gn" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 2; + id = "snowdin_belt_mine" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Go" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/mining_main) +"Gp" = ( +/obj/machinery/space_heater, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Gq" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Gr" = ( +/obj/structure/flora/stump, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Gs" = ( +/obj/machinery/light/small, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Gt" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 1 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Gu" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Gv" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Gw" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/turf/open/floor/plating/snowed, +/area/awaymission/snowdin/outside) +"Gx" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/mining_main/robotics) +"Gy" = ( +/obj/structure/table, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/glasses/welding, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/robotics) +"Gz" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/robotics) +"GA" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/robotics) +"GB" = ( +/obj/machinery/mecha_part_fabricator, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/robotics) +"GC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/robotics) +"GD" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_dock) +"GE" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/disk/holodisk/snowdin/ripjacob, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"GF" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"GG" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_dock) +"GH" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/mining_main/mechbay) +"GI" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"GJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"GK" = ( +/obj/machinery/button/door{ + id = "snowdingarageunder2"; + name = "right garage door toggle"; + pixel_x = 7; + pixel_y = 24 + }, +/obj/machinery/button/door{ + id = "snowdingarageunder"; + name = "left garage door toggle"; + pixel_x = -7; + pixel_y = 24 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/mining_main/mechbay) +"GL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) +"GM" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"GN" = ( +/turf/closed/wall, +/area/awaymission/snowdin/post/mining_main/mechbay) +"GO" = ( +/obj/machinery/mineral/unloading_machine{ + dir = 1; + icon_state = "unloader-corner"; + input_dir = 1; + output_dir = 2 + }, +/obj/machinery/conveyor{ + dir = 2; + id = "snowdin_belt_mine" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"GP" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/mining_main) +"GQ" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"GR" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_main) +"GS" = ( +/obj/structure/window/reinforced/fulltile/ice, +/obj/structure/grille, +/turf/open/floor/plating, +/area/awaymission/snowdin/outside) +"GT" = ( +/obj/structure/window/reinforced/fulltile/ice, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/plating, +/area/awaymission/snowdin/outside) +"GU" = ( +/turf/closed/wall/rust, +/area/awaymission/snowdin/post/mining_main/robotics) +"GV" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/robotics) +"GW" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/robotics) +"GX" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_main/robotics) +"GY" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/robotics) +"GZ" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/mining_dock) +"Ha" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_dock) +"Hb" = ( +/mob/living/simple_animal/hostile/netherworld/migo, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_dock) +"Hc" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Hd" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"He" = ( +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Hf" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Hg" = ( +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Hh" = ( +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Hi" = ( +/obj/effect/turf_decal/bot, +/obj/structure/mecha_wreckage/ripley, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Hj" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/ice, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Hk" = ( +/obj/machinery/conveyor{ + dir = 2; + id = "snowdin_belt_mine" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Hl" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/wall, +/area/awaymission/snowdin/post/mining_main) +"Hm" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Hn" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/cave/mountain) +"Ho" = ( +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/outside) +"Hp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 1; + frequency = 1442; + id_tag = "snowdin_toxins_mine_1"; + name = "toxin out" + }, +/turf/open/floor/engine/vacuum, +/area/awaymission/snowdin/outside) +"Hq" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"Hr" = ( +/obj/structure/fence, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/asteroid/snow, +/area/awaymission/snowdin/outside) +"Hs" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/robotics) +"Ht" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_main/robotics) +"Hu" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel/white, +/area/awaymission/snowdin/post/mining_main/robotics) +"Hv" = ( +/obj/structure/closet/wardrobe/robotics_black, +/obj/machinery/power/apc{ + dir = 4; + name = "Robotics APC"; + pixel_x = 26 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/white, +/area/awaymission/snowdin/post/mining_main/robotics) +"Hw" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"Hx" = ( +/obj/machinery/holopad, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"Hy" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Mech Lab"; + req_access_txt = "29" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Hz" = ( +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"HA" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) +"HB" = ( +/obj/machinery/mineral/processing_unit_console, +/turf/closed/wall, +/area/awaymission/snowdin/post/mining_main/mechbay) +"HC" = ( +/obj/machinery/mineral/processing_unit{ + dir = 1; + output_dir = 2 + }, +/obj/machinery/conveyor{ + dir = 2; + id = "snowdin_belt_mine" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"HD" = ( +/obj/structure/table, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_main) +"HE" = ( +/obj/structure/table, +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_main) +"HF" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_main) +"HG" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_main) +"HI" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6 + }, +/turf/open/floor/plating/snowed/smoothed, +/area/awaymission/snowdin/outside) +"HJ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/robotics) +"HK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/robotics) +"HL" = ( +/turf/open/floor/plasteel/white, +/area/awaymission/snowdin/post/mining_main/robotics) +"HM" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/awaymission/snowdin/post/mining_main/robotics) +"HN" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_main/mechbay) +"HO" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"HP" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"HQ" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_main/mechbay) +"HR" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"HS" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"HT" = ( +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/mining_main) +"HU" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/mining_main) +"HV" = ( +/obj/machinery/door/airlock{ + name = "Private Quarters" + }, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/mining_main) +"HW" = ( +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main) +"HX" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_main) +"HY" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/neutral/side{ + dir = 9 + }, +/area/awaymission/snowdin/post/mining_main) +"HZ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_main) +"Ia" = ( +/obj/machinery/door/poddoor/shutters{ + id = "snowdingarage3"; + name = "garage door" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Ib" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/white, +/area/awaymission/snowdin/post/mining_main/robotics) +"Ic" = ( +/obj/machinery/door/airlock/research{ + name = "Robotics Lab"; + req_access_txt = "29" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white, +/area/awaymission/snowdin/post/mining_main/robotics) +"Id" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_dock) +"Ie" = ( +/obj/structure/barricade/sandbags, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_dock) +"If" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_y = -32 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/mining_dock) +"Ig" = ( +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/mining_dock) +"Ih" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 6 + }, +/area/awaymission/snowdin/post/mining_dock) +"Ii" = ( +/obj/machinery/mech_bay_recharge_port, +/obj/machinery/light, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Ij" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/mech_bay_recharge_floor, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Ik" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Il" = ( +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Im" = ( +/obj/machinery/mech_bay_recharge_port, +/turf/open/floor/plasteel/dark, +/area/awaymission/snowdin/post/mining_main/mechbay) +"In" = ( +/obj/mecha/working/ripley/mining{ + icon_state = "ripley"; + dir = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/mech_bay_recharge_floor, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Io" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Ip" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main/mechbay) +"Iq" = ( +/obj/structure/bed, +/obj/item/bedsheet/grey, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/mining_main) +"Ir" = ( +/obj/structure/closet, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/mining_main) +"Is" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/mining_main) +"It" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Iu" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_main) +"Iv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Iw" = ( +/obj/machinery/button/door{ + id = "snowdingarage3"; + name = "garage door toggle"; + pixel_x = 7; + pixel_y = 24 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Ix" = ( +/obj/vehicle/ridden/atv{ + icon_state = "atv"; + dir = 1 + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Iy" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Iz" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel/white, +/area/awaymission/snowdin/post/mining_main/robotics) +"IA" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = 6 + }, +/obj/item/storage/belt/utility, +/turf/open/floor/plasteel/white, +/area/awaymission/snowdin/post/mining_main/robotics) +"IB" = ( +/obj/structure/table, +/turf/open/floor/plasteel/white, +/area/awaymission/snowdin/post/mining_main/robotics) +"IC" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_dock) +"ID" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"IE" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) +"IF" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_main) +"IG" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_main) +"IH" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Garage" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"II" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_main) +"IJ" = ( +/obj/structure/sign/warning/electricshock{ + pixel_x = 32 + }, +/turf/closed/wall, +/area/awaymission/snowdin/post/mining_main/robotics) +"IK" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_dock) +"IL" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/awaymission/snowdin/post/mining_dock) +"IM" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"IN" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"IO" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"IP" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Main Outpost APC"; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"IQ" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Mechbay APC"; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main/mechbay) +"IR" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 10 + }, +/area/awaymission/snowdin/post/mining_main) +"IS" = ( +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/mining_main) +"IT" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/awaymission/snowdin/post/mining_main) +"IU" = ( +/obj/machinery/light, +/obj/structure/table, +/obj/item/storage/box/donkpockets, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/mining_main) +"IV" = ( +/obj/structure/table, +/obj/structure/showcase/machinery/microwave, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/mining_main) +"IW" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 6 + }, +/area/awaymission/snowdin/post/mining_main) +"IX" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 10 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"IY" = ( +/obj/machinery/light, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/awaymission/snowdin/post/mining_main) +"IZ" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Ja" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Jb" = ( +/obj/machinery/door/airlock/maintenance{ + name = "SMES Storage"; + req_access_txt = "32" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Jc" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 10 + }, +/area/awaymission/snowdin/post/mining_dock) +"Jd" = ( +/obj/item/shard, +/turf/open/floor/plasteel/neutral/side, +/area/awaymission/snowdin/post/mining_dock) +"Je" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Jf" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 8; + id = "snowdin_belt_mine" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Jg" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "snowdin_belt_mine" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Jh" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "snowdin_belt_mine" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Ji" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Jj" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Misc Storage"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Jk" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Jl" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Dock"; + req_access_txt = "48" + }, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_dock) +"Jm" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille/broken, +/obj/item/stack/rods{ + amount = 2 + }, +/obj/item/shard, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Jn" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Jo" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Jp" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/storage/toolbox/emergency, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Jq" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"Jr" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Dock"; + req_access_txt = "48" + }, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_main) +"Js" = ( +/obj/structure/door_assembly/door_assembly_min{ + anchored = 1; + name = "broken airlock" + }, +/turf/open/floor/plasteel/neutral, +/area/awaymission/snowdin/post/mining_main) +"Jt" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Ju" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Jv" = ( +/obj/structure/table, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_main) +"Jw" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plasteel/brown{ + dir = 9 + }, +/area/awaymission/snowdin/post/mining_main) +"Jx" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/brown, +/area/awaymission/snowdin/post/mining_main) +"Jy" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1 + }, +/turf/open/floor/plasteel/brown, +/area/awaymission/snowdin/post/mining_main) +"Jz" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/brown{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_main) +"JA" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"JB" = ( +/turf/open/floor/plasteel/brown{ + dir = 9 + }, +/area/awaymission/snowdin/post/mining_dock) +"JC" = ( +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_dock) +"JD" = ( +/turf/open/floor/plasteel/brown{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_dock) +"JE" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/storage/toolbox/emergency, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"JF" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_dock) +"JG" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plasteel/brown{ + dir = 9 + }, +/area/awaymission/snowdin/post/mining_dock) +"JH" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/brown, +/area/awaymission/snowdin/post/mining_dock) +"JI" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1 + }, +/turf/open/floor/plasteel/brown, +/area/awaymission/snowdin/post/mining_dock) +"JJ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/brown{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_dock) +"JK" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/awaymission/snowdin/post/mining_main) +"JL" = ( +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_main) +"JM" = ( +/turf/open/floor/plasteel/brown{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_main) +"JN" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"JO" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"JP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_main) +"JU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_main) +"JV" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"JW" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"JX" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable/yellow, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"JY" = ( +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_dock) +"JZ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Misc Storage"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Ka" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"Kb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_dock) +"Kc" = ( +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_main) +"Kg" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_dock) +"Kh" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/sign/warning/docking{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/brown{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_dock) +"Ki" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Kj" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Kk" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/computer/monitor, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Kl" = ( +/obj/structure/sign/warning/docking{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/brown{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_main) +"Km" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 8 + }, +/turf/open/floor/plasteel/brown{ + dir = 5 + }, +/area/awaymission/snowdin/post/mining_main) +"Kn" = ( +/obj/docking_port/stationary{ + area_type = /area/awaymission/snowdin/post/mining_main; + dir = 4; + dwidth = 2; + height = 5; + id = "snowdin_mining_top"; + name = "snowdin mining top"; + roundstart_template = /datum/map_template/shuttle/snowdin/mining; + width = 5 + }, +/turf/open/floor/plasteel/elevatorshaft, +/area/awaymission/snowdin/post/mining_main) +"Ko" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_main) +"Kp" = ( +/obj/machinery/holopad, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Kq" = ( +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"Kr" = ( +/obj/structure/door_assembly/door_assembly_min{ + anchored = 1; + name = "broken airlock" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_dock) +"Ks" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Kt" = ( +/obj/docking_port/stationary{ + area_type = /area/awaymission/snowdin/post/mining_dock; + dir = 4; + dwidth = 2; + height = 5; + id = "snowdin_mining_down"; + name = "snowdin mining bottom"; + width = 5 + }, +/turf/open/floor/plasteel/elevatorshaft, +/area/awaymission/snowdin/post/mining_dock) +"Ku" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/awaymission/snowdin/post/mining_dock) +"Kv" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Kw" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Kx" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Ky" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"Kz" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Mining Post APC"; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"KA" = ( +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_main) +"KB" = ( +/obj/structure/door_assembly/door_assembly_min{ + anchored = 1; + name = "broken airlock" + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_main) +"KD" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/brown{ + dir = 10 + }, +/area/awaymission/snowdin/post/mining_dock) +"KE" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/brown, +/area/awaymission/snowdin/post/mining_dock) +"KF" = ( +/turf/open/floor/plasteel/brown, +/area/awaymission/snowdin/post/mining_dock) +"KG" = ( +/obj/structure/sign/warning/docking{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"KH" = ( +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"KI" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"KJ" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/stack/rods, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"KK" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering"; + req_access_txt = "32" + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"KL" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/brown, +/area/awaymission/snowdin/post/mining_main) +"KM" = ( +/turf/open/floor/plasteel/brown, +/area/awaymission/snowdin/post/mining_main) +"KN" = ( +/obj/structure/sign/warning/docking{ + pixel_x = 32 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/awaymission/snowdin/post/mining_main) +"KO" = ( +/obj/machinery/computer/shuttle/snowdin/mining{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_main) +"KP" = ( +/turf/open/floor/plasteel/elevatorshaft, +/area/awaymission/snowdin/post/mining_main) +"KQ" = ( +/obj/machinery/computer/shuttle/snowdin/mining{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_dock) +"KR" = ( +/turf/open/floor/plasteel/brown{ + dir = 10 + }, +/area/awaymission/snowdin/post/mining_main) +"KS" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/brown{ + dir = 6 + }, +/area/awaymission/snowdin/post/mining_main) +"KT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_main) +"KU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_main) +"KV" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 6 + }, +/area/awaymission/snowdin/post/mining_main) +"KW" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/brown{ + dir = 6 + }, +/area/awaymission/snowdin/post/mining_dock) +"KX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_dock) +"KY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/awaymission/snowdin/post/mining_dock) +"KZ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 6 + }, +/area/awaymission/snowdin/post/mining_dock) +"La" = ( +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plating/asteroid/snow/ice, +/area/awaymission/snowdin/cave/cavern) +"Lw" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/minipost) +"Lx" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"ND" = ( +/turf/open/floor/plasteel/elevatorshaft, +/area/awaymission/snowdin/post/mining_dock) +"OF" = ( +/obj/machinery/door/airlock/external{ + name = "Ready Room"; + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"PR" = ( +/obj/machinery/door/airlock/external{ + name = "Ready Room"; + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/awaymission/snowdin/cave) +"QX" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/awaymission/snowdin/post/mining_main) +"SX" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_main) +"VW" = ( +/obj/machinery/door/airlock/external/glass, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/mining_dock) +"Yn" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/snowdin/post/garage) + +(1,1,1) = {" +aa +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(2,1,1) = {" +ab +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(3,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(4,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(5,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(6,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(7,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(8,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(9,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(10,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +tI +tI +aj +aj +aj +aj +aj +aj +aj +ae +aj +aj +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(11,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +ag +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +tI +tI +tQ +tI +aj +tI +tQ +tI +tI +tI +aj +aj +aj +tI +tI +tI +tI +aj +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(12,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +tI +tI +tx +tx +tx +tx +tx +tx +tx +tx +tI +tI +tI +aj +tI +vJ +tI +tI +ud +tI +tI +tI +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(13,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +am +af +ak +af +af +af +fq +af +am +af +af +ag +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +aj +tQ +tx +tx +tx +tx +tx +tx +tx +tx +tQ +tI +tI +tI +tI +tQ +tI +tI +tI +tI +tI +tI +aj +aj +ae +aj +aj +aj +aj +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(14,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +am +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tI +aj +aj +tx +tx +tx +tI +tQ +aj +aj +aj +tx +tx +tx +tx +tx +tx +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(15,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +eM +af +af +al +af +af +jc +af +af +af +af +af +af +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +ud +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +vJ +aj +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(16,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ag +aK +aK +aK +aK +af +af +af +af +af +af +ak +af +af +af +fq +af +am +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +tQ +aj +aj +tx +tx +tx +tx +tx +tx +tx +aj +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(17,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +af +ag +af +ak +af +af +af +aK +dz +dY +aK +af +af +af +ag +af +af +am +af +af +af +af +af +af +al +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +aj +aj +aj +aj +tx +tx +tx +tx +tx +tI +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(18,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +av +af +af +af +af +ag +af +af +aK +dA +aV +aK +aK +aK +aK +aK +aK +af +af +af +al +af +af +af +af +af +af +af +ag +af +ak +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +tI +tI +tI +tx +tx +tx +tx +tx +aj +aj +aj +aj +aj +aj +ae +aj +aj +aj +tI +tI +tI +tI +tQ +tI +tI +tQ +tI +tI +tI +tI +tx +tx +tI +tI +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(19,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +af +af +am +af +af +aK +aK +aK +aK +dB +dZ +eN +dC +fH +gX +hG +aK +af +fq +af +af +ak +af +af +af +am +af +af +af +af +fq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +tQ +tI +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +tI +ud +tI +tI +vJ +tI +vJ +tI +tI +tI +tI +tI +tI +tI +tI +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ag +af +fq +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(20,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ag +af +af +af +af +aK +bO +cm +aV +dC +ea +eO +fs +eO +eO +hH +aK +ag +af +af +af +af +ag +af +af +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +tI +aj +aj +tI +tI +tI +aj +aj +aj +tI +tI +tI +tI +tI +aj +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +ag +af +am +af +ag +af +af +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(21,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +af +af +af +am +ag +aK +bP +cn +aS +dC +eb +eP +eP +gh +gY +hI +aK +aK +aK +aK +aK +aK +aK +af +af +af +af +fq +am +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +aj +tI +vJ +tI +aj +aj +tI +tQ +tQ +aj +aj +tI +tI +tI +tI +ud +tI +aj +tI +tI +tI +tI +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ku +ae +ae +ae +af +af +af +am +af +af +af +af +af +af +am +af +af +af +af +am +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(22,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +af +af +aJ +aK +aK +aK +aS +co +aV +aS +aS +aS +aV +aV +aS +hJ +aV +jd +aS +kv +le +lU +aK +af +af +af +af +af +af +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tG +tI +ja +tx +tx +tS +tx +tx +tS +tx +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +tQ +tI +tI +tI +tI +tI +tI +tI +tI +tI +tQ +aj +tI +tI +tI +aj +aj +aj +tQ +tQ +tI +tI +aj +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +ag +fq +ko +af +ag +am +af +af +af +fq +af +af +af +af +fq +af +am +af +af +fq +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +fq +af +tN +af +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(23,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +af +af +aK +aQ +bi +bx +bQ +cp +cV +cv +ec +eQ +ft +eQ +eQ +hK +eQ +je +aS +kw +lf +lV +aK +af +af +ak +af +af +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +tJ +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +tI +tI +tI +tI +vK +tI +tI +tI +tI +vJ +aj +aj +aj +tI +tI +aj +ae +aj +aj +aj +aj +tI +tI +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +ko +af +ak +af +af +af +af +af +am +af +af +af +af +af +af +al +af +af +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +tN +fq +af +af +am +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(24,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +af +ag +aK +aR +bj +by +aV +cq +cW +dD +ed +eR +fu +gi +gZ +hL +io +jf +aV +kx +lg +lW +aK +ag +af +am +af +af +af +af +af +fq +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ag +af +af +af +sf +af +tN +tN +tN +tN +tN +tN +tN +tN +af +mZ +af +af +af +af +ae +ae +ae +aj +aj +aj +aj +tI +tI +tI +tI +tI +aj +tI +tQ +tI +tI +tI +tI +tI +tI +aj +ae +ae +ae +ae +aj +aj +tI +ud +wx +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ak +af +al +af +af +ko +af +af +af +fq +af +af +af +fq +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +ag +af +af +ak +ag +af +af +af +ag +af +af +af +af +tN +af +am +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(25,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +af +af +aK +aS +aV +aS +aV +cr +cX +dE +ee +eS +fv +gj +ha +dE +ip +jg +aV +ky +aV +aV +aK +aK +af +af +al +am +af +af +af +af +af +se +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +ak +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +fq +af +am +ae +ae +ae +ae +aj +aj +aj +aj +aj +aj +aj +aj +aj +tI +tI +tI +tI +tI +tI +tI +aj +aj +ae +ae +ae +ae +ae +aj +aj +tI +tI +tI +tI +aj +tI +tI +tI +tI +tI +tx +tx +tx +tx +tx +tx +tx +tx +tx +uq +tN +ae +ae +ae +tN +uq +tN +tN +tN +uq +af +af +ag +ag +fq +af +ag +af +af +am +af +af +af +af +ko +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +am +af +am +af +af +am +af +af +af +af +fq +af +am +af +af +fq +af +tN +af +af +af +fq +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(26,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +af +af +af +ak +af +aK +aT +bi +bx +bR +cs +cY +aS +aS +eT +aS +aS +hb +aS +iq +jf +aV +kz +lh +lX +mD +aK +af +af +af +af +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +af +fq +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +uq +af +af +af +am +uX +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +tI +tI +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +tI +tI +tI +tI +tI +tI +tQ +tI +tI +aj +aj +tx +tx +tx +tx +tx +tx +tN +tN +tN +ae +ae +tN +tN +tN +tN +tN +tN +tN +tN +am +af +af +af +am +fq +af +af +af +af +af +af +ko +af +af +af +af +am +af +af +af +af +fq +af +ak +af +am +af +af +af +af +af +af +af +fq +af +af +fq +af +fq +af +af +af +fq +af +af +af +af +tN +tN +af +af +af +ag +af +af +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(27,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +af +ao +af +af +af +aK +aU +bk +bz +aS +cq +cZ +aS +ef +eU +aV +gk +hc +aV +ir +jh +jP +kA +li +aV +aV +aK +ag +af +af +af +af +af +fq +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +am +af +af +ak +af +jc +af +af +fq +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +aj +aj +aj +aj +aj +tI +tI +tI +tx +tx +tx +tx +xR +tN +tN +tN +tN +tN +uq +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +am +af +af +af +af +fq +af +af +fq +ko +af +af +af +af +af +fq +af +af +af +af +tN +tN +tN +tN +tN +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +am +tN +af +af +am +af +ak +af +af +af +af +am +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(28,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ag +af +af +af +af +aK +aV +aV +aV +aS +ct +da +aV +eg +eV +aV +gl +hd +aS +iq +ji +aS +kB +lj +lX +mD +aK +af +af +ak +af +am +af +ak +af +am +af +ag +af +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +am +af +am +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +tI +aj +aj +aj +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +fq +af +af +af +af +af +af +af +af +af +tq +am +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +fq +af +af +tN +af +af +af +af +af +af +af +fq +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(29,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +af +af +af +am +af +aK +aW +bl +bA +bS +cu +db +aV +eh +eW +aS +gm +he +aV +iq +jj +aS +kC +kC +jR +jR +na +na +ag +af +af +af +af +af +af +af +af +af +af +af +fq +af +am +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ag +af +af +af +af +af +af +af +ak +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +ai +aj +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +fq +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +fq +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +fq +tN +tN +tN +tN +tN +tN +af +af +fq +af +af +am +af +af +af +af +af +af +af +af +af +tN +af +af +fq +am +af +af +af +af +af +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(30,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +af +af +af +af +ag +aK +aX +bm +bB +aS +cv +dc +aS +aS +aS +aS +aV +aS +aS +iq +jg +jQ +jR +jR +lY +mE +nb +na +na +af +fq +af +al +af +af +af +fq +am +af +af +af +af +am +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +tC +af +af +af +fq +af +af +am +af +al +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +af +af +fq +ag +af +af +af +mZ +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ko +ag +af +af +tN +tN +tN +tN +tN +tN +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +af +af +af +af +am +af +fq +af +ak +tN +tN +tN +af +af +af +af +af +af +af +af +af +af +fq +af +af +ag +af +af +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(31,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ak +af +af +af +af +aK +aS +aV +aS +aS +cr +dd +dF +ei +eX +fw +fw +fw +dK +is +jk +jR +kD +lk +lZ +mF +mF +nC +ob +ob +ob +ob +ag +af +af +af +af +af +ak +af +am +af +af +ag +tq +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +am +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +ko +af +ak +af +af +af +af +af +af +fq +af +ak +af +af +am +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +fq +af +af +am +af +af +af +fq +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +tN +af +af +af +af +af +fq +af +af +af +fq +af +af +af +af +af +am +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(32,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +af +am +af +af +af +aK +aY +bl +bx +bT +cw +cY +dF +dK +eY +fx +gn +gr +hM +it +jl +jR +kE +ll +ma +mG +mG +nD +oc +oy +ph +pH +pH +pH +pH +fq +af +sw +sH +sH +sH +sH +sH +tn +ko +af +ag +af +af +af +ag +af +af +af +af +af +af +af +fq +af +af +af +ak +af +af +af +fq +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +af +af +af +af +af +fq +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ae +ae +af +af +af +af +ko +sw +sH +sH +sH +sH +sH +tn +af +af +af +am +af +af +af +af +am +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +am +af +af +fq +af +ak +af +af +af +fq +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +fq +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(33,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ag +af +af +af +ao +aK +aZ +bm +bC +aS +cx +de +dF +dM +eY +fy +go +hf +hM +it +jm +jR +jR +lm +mb +mG +mG +nD +oc +oz +pi +pH +qn +qn +pH +af +af +sx +sI +sS +td +sS +td +sS +tq +af +am +af +af +af +am +ak +af +af +af +fq +af +af +af +af +ak +af +af +af +af +am +af +af +af +af +fq +af +af +tN +tN +tN +tN +tN +tN +tN +af +af +af +am +af +af +af +ag +af +fq +af +ag +af +af +ag +af +af +eM +af +af +af +ag +af +ae +ae +ae +ae +ae +ae +ae +af +af +af +ae +ae +af +af +af +ae +ae +af +af +af +af +tq +sS +td +sS +td +sS +sI +yU +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tq +tN +tN +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +am +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +fq +af +af +af +af +af +ak +af +af +af +fq +af +af +am +af +af +ag +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(34,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +af +af +af +af +af +aK +aS +aV +aV +aV +cx +de +dG +dM +eZ +fz +gp +hg +hN +it +jn +jS +jR +jR +mc +lY +jR +nE +oc +oA +oH +pI +qo +qp +pH +am +af +sx +sJ +sT +te +te +te +te +dX +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +af +af +af +vL +vR +vX +vR +vL +af +af +af +af +af +af +af +af +ag +af +af +af +ag +af +af +af +af +ae +af +af +af +ag +af +af +af +af +af +dX +sT +te +te +te +te +yF +yU +af +am +af +af +fq +af +af +af +af +af +af +fq +af +af +af +af +tN +tN +tN +af +af +fq +kp +am +af +af +af +af +af +af +fq +ak +af +af +af +af +af +fq +af +af +af +af +af +fq +af +af +af +fq +af +af +af +af +af +am +af +af +fq +tN +tN +tN +tN +tN +tN +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +ak +af +am +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +Go +Go +GP +Go +Go +GP +GP +Go +ae +ac +ac +ac +ac +ac +ac +ac +"} +(35,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +af +am +af +af +af +aK +ba +bl +bx +bU +cy +df +dH +dK +fa +fA +gq +hh +hO +iu +jm +jT +kF +ln +md +mH +nc +nF +od +oB +pj +pI +qp +qJ +pH +af +am +sx +sK +sT +te +te +te +te +dX +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +ua +ua +ua +ua +ua +ua +ua +tN +af +af +af +af +af +af +af +af +af +af +vM +vS +vY +wb +vM +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +ag +af +af +af +af +af +af +af +af +af +dX +sT +te +te +te +te +yG +yU +af +af +af +af +af +am +af +ak +af +af +af +af +af +am +af +af +af +tN +af +af +af +af +ko +af +af +af +af +af +am +af +af +af +af +am +af +af +af +af +af +af +fq +af +af +af +am +af +af +af +af +af +fq +af +af +af +fq +ak +af +tN +tN +fq +ak +af +tN +af +af +af +af +af +af +af +af +af +af +al +af +af +af +fq +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +GP +Gq +Gq +Gq +Gq +Gq +Gq +GP +ae +ac +ac +ac +ac +ac +ac +ac +"} +(36,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +af +am +af +af +ag +aK +bb +bn +bD +aS +cq +de +dI +dK +fb +fB +gr +gr +hM +iv +jo +jU +js +jU +me +mI +nd +nF +oe +oC +pk +pJ +qo +qK +pH +ak +af +sx +sJ +sT +te +te +te +te +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +sT +te +te +te +te +te +te +te +dX +dX +dX +dX +dX +dX +dX +dX +dX +oa +vN +vT +vY +wc +vM +oa +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +sT +te +te +te +te +yF +yU +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +ak +af +af +ks +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +tN +tN +tN +af +af +af +tN +tN +tN +tN +tN +tN +af +af +fq +af +af +af +af +af +af +af +af +af +fq +af +ko +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +Go +Gq +Gq +Gq +Gq +Gq +Gq +Go +ae +ac +ac +ac +ac +ac +ac +ac +"} +(37,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ag +af +af +am +aq +ar +ar +aK +aS +aV +aV +aS +cq +dd +dJ +dK +fc +fC +gs +hi +dK +iw +jp +jV +gt +lo +mf +mJ +ne +nG +of +oD +pl +pI +pH +pH +pH +af +fq +sx +sK +sT +te +te +te +te +dX +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +ua +ua +ua +ua +ua +ua +tN +tN +tN +af +af +af +af +af +af +af +af +vM +vU +vY +wd +vM +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +dX +sT +te +te +te +te +yG +yU +af +fq +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +fq +am +af +af +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +fq +af +af +fq +af +af +af +af +af +af +am +af +tN +tN +af +af +am +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +Fl +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +Go +GP +GP +Go +Go +GP +Go +Gq +Gq +Gq +Gq +Gq +Go +ae +ac +ac +ac +ac +ac +ac +ac +"} +(38,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +al +ag +ar +aw +aE +aL +bc +bo +bE +az +cz +dg +dK +dK +dK +dM +dM +dM +dK +ix +jq +jm +jU +lp +mg +mK +nf +nH +og +oE +pm +pK +qq +af +ak +af +sf +sx +sJ +sT +te +te +te +te +dX +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +vL +vR +vX +vR +vL +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +dX +sT +te +te +te +te +yF +yU +af +af +ak +am +af +af +af +af +af +fq +af +am +af +af +af +af +af +af +af +af +af +af +ks +af +af +af +am +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +tN +tN +am +af +af +af +fq +af +am +af +af +fq +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +ko +am +af +ae +ae +ae +ae +ae +ae +ae +ae +GP +HT +Iq +Go +HT +Iq +Go +Go +Go +GP +Gq +GP +Go +ae +ac +ac +ac +ac +ac +ac +ac +"} +(39,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +af +af +ar +ax +aF +aE +aE +bo +bE +az +bo +dh +dL +ej +fd +fD +gt +fd +hP +gt +jr +jW +jU +lq +mh +mL +nf +nI +oh +oF +pn +pL +qq +ag +rj +am +af +sx +sI +sU +tf +tl +tf +tl +tq +af +am +af +af +af +af +af +fq +af +am +tB +af +af +fq +af +af +af +al +af +af +af +af +af +am +af +af +fq +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +al +ag +af +af +ag +am +af +ag +fq +af +af +af +af +af +ak +af +af +af +af +af +af +af +al +af +af +af +af +af +af +am +af +af +af +ak +tq +tl +tf +tl +tf +sU +sI +yU +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +ko +af +af +fq +am +af +af +fq +af +fq +af +af +af +af +af +fq +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +af +af +af +af +af +af +af +af +af +af +am +am +af +af +af +af +af +af +af +am +af +af +af +fq +af +ko +af +af +af +ae +ae +ae +ae +ae +ae +ae +GP +HU +Ir +GP +HU +Ir +Go +ae +Go +Kj +Kv +KH +GP +ae +ac +ac +ac +ac +ac +ac +ac +"} +(40,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +af +ak +ar +ay +aG +aM +bc +bp +bE +az +br +di +dM +ek +fe +fE +gu +hj +dK +iy +js +jX +kG +lr +mi +mM +nf +nF +oi +oG +po +pM +qq +am +af +af +af +sy +sL +sL +sL +sL +sL +to +ko +fq +af +af +af +af +af +af +af +af +af +am +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +fq +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +fq +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +kp +sy +sL +sL +sL +sL +sL +to +am +am +af +af +af +am +af +af +af +af +af +am +dX +af +fq +ao +af +af +ag +af +fq +af +kp +ag +af +af +af +ag +af +af +af +ag +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +am +am +af +af +af +tN +tN +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +ko +af +am +ag +ae +ae +ae +ae +ae +ae +ae +GP +HT +Is +Go +HT +Is +Go +ae +GP +Kk +Kw +KI +GP +ae +ac +ac +ac +ac +ac +ac +ac +"} +(41,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +af +af +ar +az +aC +aC +az +bq +bF +bV +cA +dj +dM +el +ff +fg +fg +fh +fh +fh +fg +fg +kH +ls +mj +jo +ng +nF +oc +oH +oH +oc +ob +qL +qL +qL +ak +am +af +dX +dX +dX +af +af +kp +af +af +af +ak +fq +af +af +af +al +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +am +af +af +af +af +af +af +af +af +ak +af +af +af +af +ak +af +am +af +af +af +af +af +am +af +af +af +af +af +af +af +fq +af +af +af +al +af +tN +ko +af +af +af +dX +dX +dX +dX +dX +af +dX +dX +dX +dX +af +ag +af +am +af +af +af +af +af +ag +ae +ae +ae +ae +ae +ae +ku +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +fq +ag +af +af +af +fq +ag +af +af +ag +af +af +fq +ak +af +af +af +af +fq +af +al +tN +af +af +af +fq +am +af +af +af +af +fq +am +af +af +af +af +af +af +af +fq +af +af +af +af +af +lS +iY +sN +ao +af +af +af +af +ae +ae +ae +ae +Hl +Go +HV +Go +Go +HV +Go +GP +Go +GP +Go +Kx +KJ +GP +ae +ac +ac +ac +ac +ac +ac +ac +"} +(42,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +af +ag +ar +aw +aE +aE +bd +br +bG +bW +cB +bo +dK +em +fg +fF +gv +fF +hQ +iz +jt +fh +kI +lt +mk +mL +nh +nJ +hM +oI +pp +pN +dK +qM +rk +rG +af +am +dX +dX +dX +af +fq +af +ko +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +am +af +af +af +af +af +af +af +ak +af +fq +af +af +al +af +af +af +af +af +tN +tN +tN +tN +tN +tN +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +am +af +fq +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +ks +af +ak +af +af +fq +af +dX +dX +dX +af +dX +te +te +AC +yW +af +af +ak +eM +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +af +af +af +af +af +tN +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +ak +af +af +af +af +ak +af +af +fq +ko +af +af +ak +af +af +am +af +af +ae +ae +ae +GP +HD +GR +It +Iu +IR +Go +Is +Ir +Iq +Go +Ky +Gq +GP +ae +ac +ac +ac +ac +ac +ac +ac +"} +(43,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ag +af +af +af +ar +aA +aH +aN +aE +bs +bH +bX +cB +bE +az +en +fh +fF +fG +fG +gw +hl +hR +jY +kJ +lu +ml +mN +ni +nK +oj +oJ +pq +pO +qr +qN +js +rH +dX +dX +dX +dX +dX +dX +af +af +ks +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +af +fq +am +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +am +af +af +af +af +af +ao +af +af +af +af +ko +af +af +af +af +am +af +am +am +af +zK +oa +te +Au +AD +yW +af +ag +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +am +af +af +af +af +tN +tN +tN +tN +af +am +af +af +ak +af +af +af +af +af +af +fq +am +af +af +af +af +af +af +af +af +af +af +af +kp +af +af +af +af +af +af +af +FQ +FZ +Go +GP +Go +HE +Gq +Gq +HW +IS +HV +HT +JK +HT +GP +Kz +Gq +Go +ae +ac +ac +ac +ac +ac +ac +ac +"} +(44,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +af +af +ar +aB +aG +aO +bc +br +bI +bY +cC +bE +dK +eo +fh +fF +fG +fG +fI +hm +hS +iA +iB +iC +js +jW +nj +nL +dK +js +pr +pP +dK +qO +rl +qL +oa +dX +dX +dX +dX +af +af +af +ko +af +af +af +af +am +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +fq +af +af +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +fq +af +af +af +am +am +af +af +af +fq +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +ks +af +af +af +fq +af +af +af +af +dX +af +zU +Ag +te +te +yW +AX +AX +yW +yW +yY +yX +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +fq +tN +af +af +af +af +af +al +af +af +fq +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +ko +am +af +am +af +af +af +af +af +Ga +Gp +GQ +Hm +HF +HW +Gq +Gq +IS +Go +GP +Go +GP +Go +Go +KK +Go +ae +ac +ac +ac +ac +ac +ac +ac +"} +(45,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +ak +af +ao +ar +aC +aC +aC +az +bt +bJ +bZ +bp +dk +dK +ep +fh +fF +fG +fG +gy +hn +hR +jY +kJ +lw +jo +js +nk +nM +ok +oK +ps +pQ +qs +pQ +rm +rH +dX +dX +dX +dX +dX +af +dX +dX +ks +af +af +af +af +af +af +al +af +af +af +af +fq +af +af +af +af +af +am +am +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +af +af +af +af +am +am +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +tN +af +tN +af +af +af +af +af +af +af +ko +af +af +af +ak +af +ao +yV +oa +dX +yW +yW +Ah +Av +Lw +yX +AY +jZ +yX +Bq +BA +yX +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +fq +af +af +af +af +tN +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +fq +af +af +af +af +af +fq +af +af +ks +af +af +af +af +af +dX +am +dX +Gb +Gq +Gq +SX +GR +HW +Gq +GR +IT +IR +Jr +Gq +Kc +Kc +Gq +Gq +Go +ae +ac +ac +ac +ac +ac +ac +ac +"} +(46,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +af +af +ar +aw +aE +aE +bc +br +bs +az +cD +dl +dM +eq +fg +fF +gz +fF +hU +iD +jw +fh +kL +lx +mm +jX +jX +jm +hM +oL +pt +pR +dK +qM +rn +rG +af +af +af +dX +af +af +af +af +ko +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +al +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +fq +tN +tN +tN +tN +tN +tN +tN +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +af +af +tN +tN +af +af +af +af +af +af +af +am +af +af +af +af +fq +af +af +af +kp +af +af +af +ag +af +af +yW +zo +zo +yW +zV +Ai +Aw +zp +AM +AZ +zp +Bj +zp +BB +yY +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +am +af +af +am +af +tN +fq +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +ko +af +af +af +dX +af +af +af +dX +Gb +Gq +GR +SX +HG +HX +HX +IF +HW +Gq +Hm +JL +HW +GR +GR +KL +GP +ae +ac +ac +ac +ac +ac +ac +ac +"} +(47,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +am +ag +ar +ax +aI +aE +aE +bp +bs +az +cE +dk +dN +dO +dO +dO +dP +dP +dO +dP +dP +dP +kM +ly +dP +dP +nl +nN +nt +nt +nt +nN +nN +nN +oW +qL +fq +am +af +af +ak +af +af +dX +kp +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +am +am +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +am +tN +tN +af +af +ao +af +af +ak +af +af +af +af +af +af +af +af +af +am +ko +af +fq +af +af +ae +ae +yX +zp +zx +yX +zW +Aj +Aj +Ai +AN +Aj +Bf +yY +Br +BC +yX +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +ag +af +af +af +ag +af +am +af +af +fq +af +af +am +af +af +af +af +af +af +af +af +af +af +ks +af +af +af +af +af +af +af +FR +FZ +FZ +Go +Go +GP +GP +Go +HF +Gq +IW +Js +JM +Gq +Gq +GR +KM +GP +ae +ac +ac +ac +ac +ac +ac +ac +"} +(48,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +af +af +af +af +ar +aD +aG +aP +bc +bo +bK +az +cF +dm +dO +er +ex +fJ +gA +hp +gA +gA +jx +ka +kb +lz +mn +dO +nm +nO +ol +oM +pu +oM +ol +qP +oW +af +af +ak +af +sV +af +af +af +af +ko +af +af +ak +af +af +af +af +af +af +af +af +am +am +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +tq +uv +tT +tW +tW +tW +tW +tW +tW +tq +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +ao +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +am +af +af +af +af +ko +af +af +am +af +ae +ae +yY +zq +zy +zL +zX +zp +Ax +AE +Ai +Ba +zp +yY +yX +yY +yX +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +CS +af +af +af +CS +af +DW +af +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +am +af +af +ko +af +am +af +af +af +af +ao +af +mZ +ae +ae +ae +FZ +HY +Iu +IG +IS +Go +GP +Go +Go +Kl +KA +KN +GP +ae +ac +ac +ac +ac +ac +ac +ac +"} +(49,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ag +af +af +af +ar +ar +ar +ar +ar +az +az +az +aC +aC +dP +es +fi +fK +gB +hq +gA +gA +jy +gA +kN +lA +gA +dO +nn +nP +om +oN +om +pS +qt +qQ +ro +rI +dX +dX +dX +af +af +am +af +af +ko +af +af +af +af +af +am +af +af +af +am +af +af +af +am +af +af +af +af +af +af +am +af +af +af +am +af +af +af +am +af +dX +te +te +te +te +te +te +te +te +dX +af +af +af +ak +af +am +af +af +af +af +tN +am +af +af +af +am +af +af +am +af +af +af +af +af +am +af +af +af +fq +af +af +af +af +af +af +af +af +fq +af +ko +ag +af +af +ae +ae +ae +yZ +yX +yY +yX +yX +Ak +Ay +AF +AO +AO +zp +Bk +Bs +yX +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +ai +Db +Dm +Db +ai +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +af +af +af +af +Fd +af +kp +ao +af +af +af +af +am +af +af +af +af +af +am +Ga +HF +HW +HW +IU +Go +Jt +JN +GP +Go +KB +Go +Go +GP +ac +ac +ac +ac +ac +ac +ac +"} +(50,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +af +af +af +af +af +af +af +be +bu +bL +ca +cG +dn +dO +et +ex +fL +gC +hr +gA +iE +hp +gC +gD +lB +gC +mO +no +nQ +nQ +nQ +nQ +nQ +op +qR +rp +rp +rp +sz +rp +af +af +af +dX +dX +ko +af +af +af +ao +af +af +af +af +af +af +af +af +af +am +af +ao +af +af +ak +af +am +af +af +af +af +af +af +ao +af +af +dX +te +te +te +te +te +te +te +te +dX +af +af +af +af +af +am +af +af +af +af +af +af +af +am +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +ag +ku +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +yX +yY +yY +yX +AP +yX +yX +Bl +Bt +yX +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +ii +ii +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +am +af +ak +af +af +af +am +af +af +af +fq +af +al +af +ko +af +af +am +af +af +af +af +af +Gc +af +am +Hn +Ga +HF +GR +HW +IV +Go +Ju +Gq +GP +Gq +Gq +Kc +KR +Go +ac +ac +ac +ac +ac +ac +ac +"} +(51,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +af +af +af +ao +am +af +ag +bf +bv +bM +cb +cH +do +dP +eu +ex +fM +gD +gA +hV +iF +gD +kb +kO +lC +mo +mP +np +nR +on +oO +pv +pT +qu +qS +rp +rJ +rp +sA +rp +rp +rp +ag +dX +dX +ko +af +af +am +af +af +af +af +ak +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +dX +te +te +te +te +te +te +te +te +dX +af +af +af +af +af +af +af +ao +af +am +af +af +af +af +af +af +fq +af +af +af +af +am +af +fq +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +yW +AG +AQ +Bb +yX +Bm +Bu +yY +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +ii +tI +ii +aj +aj +aj +aj +ai +aj +aj +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +ko +af +af +af +af +ao +af +af +ao +af +af +af +ae +FZ +HZ +HX +QX +IW +Jj +Gq +JO +Go +Gq +Gq +HW +KL +Go +ac +ac +ac +ac +ac +ac +ac +"} +(52,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +af +af +af +af +af +af +af +bf +bw +bN +cc +cI +cb +dP +ev +ex +fN +gA +hs +gA +iG +hs +gD +kP +lB +gA +mO +nq +nS +oo +oP +pw +pw +oP +qT +rq +rK +sg +sB +sM +sW +tg +dX +dX +dX +ko +af +af +af +af +af +af +af +af +af +af +ao +af +am +af +af +af +af +af +am +af +af +af +ao +af +af +af +af +ak +af +af +dX +te +te +te +te +te +te +te +te +dX +af +am +af +af +af +am +am +af +af +af +af +ak +af +fq +af +af +af +af +af +af +af +af +af +af +ak +af +af +af +af +af +am +af +af +af +af +af +af +ak +af +ae +ae +ae +ae +ai +ai +ai +ai +ai +ai +ai +ae +ae +yW +AH +AQ +AQ +yW +yY +yX +yY +ae +ae +ai +ai +ai +ai +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wS +ii +tI +tI +aj +aj +tI +tI +tI +Ch +tI +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +af +ag +af +af +af +af +af +af +af +af +af +af +af +ko +af +af +af +af +af +af +af +af +af +Gr +ae +ae +GP +Go +Iv +IH +Iv +GP +GP +GP +Go +JL +HW +Gq +KM +GP +ac +ac +ac +ac +ac +ac +ac +"} +(53,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +af +af +af +af +af +ak +ao +bf +bf +bf +cd +cJ +dp +dp +ew +ex +fJ +gA +ht +hW +iH +jz +kc +iH +lD +hV +dO +nr +nT +op +oP +px +pU +nS +qU +rr +rL +rr +sC +rp +rp +rp +dX +af +af +ko +af +af +af +af +af +am +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +am +af +af +tq +tU +tX +tX +tX +tX +tX +tX +tX +tq +af +af +af +af +am +am +am +fq +af +am +af +af +af +af +af +am +af +af +am +am +af +am +af +af +af +af +af +af +fq +af +af +af +af +af +af +ak +af +af +ag +ae +ae +ae +ae +ai +yg +yg +yg +yg +yg +ai +ae +ae +yW +yW +AR +AQ +yW +ae +ae +ae +ae +ae +ai +yg +yg +ai +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wS +tI +aj +aj +aj +aj +tI +tI +tI +tI +tI +tI +tI +wS +wQ +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +fq +af +lS +sN +af +af +af +ak +af +af +af +af +af +af +af +ae +ae +FZ +Iw +Gq +IX +GP +Jv +Jv +Jv +Gq +HW +HW +KM +GP +ac +ac +ac +ac +ac +ac +ac +"} +(54,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ag +af +af +af +af +af +af +af +ag +bf +ce +cK +dq +dQ +ex +ex +fO +gA +hu +gA +gA +hp +kd +gA +lB +mp +dO +ns +nU +oq +oQ +py +pV +nS +qV +rp +rp +rp +rp +rp +af +af +af +am +dX +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +am +am +af +af +af +af +fq +af +af +af +af +fq +af +af +af +af +af +af +al +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +ae +aj +aj +aj +ai +yg +yg +yg +yg +yg +ai +ae +ae +ae +aj +tI +tI +aj +aj +ae +ae +wQ +wQ +ai +yg +za +ai +wS +wQ +aj +aj +ai +aj +aj +aj +aj +wS +wQ +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wS +tI +ii +ii +ii +ii +tI +tI +ii +ii +tI +tI +tI +wS +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +ag +am +af +af +af +af +af +ko +Fg +Fj +am +ao +af +am +af +af +af +dX +af +af +dX +dX +Ia +Gq +Gq +Ix +GP +Jw +JP +JP +Km +JP +KO +KS +GP +ac +ac +ac +ac +ac +ac +ac +"} +(55,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +af +am +af +af +af +af +af +af +af +bf +cf +cL +dr +cd +cd +dp +dP +dO +hv +hv +hv +hv +dO +dP +lE +mq +dO +nt +nN +nN +nN +nN +pW +qv +qW +rs +rM +sh +oW +af +fq +af +af +af +af +ko +am +af +af +af +af +af +af +af +ak +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +fq +af +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +am +af +af +af +af +af +am +af +af +af +af +ae +ae +ae +aj +an +xS +ai +yf +yf +za +yg +yg +ai +aj +ai +aj +aj +AS +tI +Bc +aj +ae +wS +wS +wS +ai +yf +yt +ai +wS +wS +aj +tI +Ch +tI +tI +tI +tI +wS +ai +wS +wS +aj +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +ii +ii +Dn +tI +tI +wS +wS +tI +tI +tI +tI +wS +wS +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +ag +af +am +af +ko +Fh +Fj +af +af +af +af +af +af +af +ak +af +dX +dX +oa +Ia +Gq +II +IY +Go +Jx +KP +KP +Kn +KP +KP +KT +Go +ac +ac +ac +ac +ac +ac +ac +"} +(56,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +af +af +af +ao +af +af +af +af +af +bf +cg +cM +ds +dR +ey +cd +fP +gE +hw +hX +iI +jA +ke +kQ +lF +mr +mQ +nu +nV +or +oR +nt +pX +qw +qX +rt +rN +si +oW +am +af +am +af +dX +dX +ko +af +af +af +af +af +af +af +af +af +af +af +ak +af +af +af +af +af +am +af +af +af +af +af +af +ak +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +fq +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +ag +ae +ae +ae +aj +ii +ii +yb +an +yf +yt +yf +ai +ai +aj +Al +tx +aj +aj +Bc +Bc +wS +ae +wS +wS +wS +BJ +xL +ys +BU +an +wS +aj +wS +wS +wS +tI +tI +tI +tI +Ch +tI +tI +aj +wQ +wQ +ae +ae +wQ +wQ +wQ +ae +ae +ae +ae +ae +aj +aj +aj +wS +ai +wS +aj +wS +wS +tI +tI +ii +ii +tI +tI +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +ko +Fg +Fj +af +af +af +af +af +af +am +af +af +af +dX +dX +Ia +Ix +Gq +Gq +Go +Jx +KP +KP +KP +KP +KP +KT +GP +ac +ac +ac +ac +ac +ac +ac +"} +(57,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +af +af +af +af +af +af +ao +af +af +bf +ch +cN +dt +dS +ez +fj +fQ +gF +fQ +hY +hY +fQ +hY +hY +lG +hx +mt +nv +nV +os +os +nt +pY +pV +qY +nN +nN +nN +oW +ag +af +af +af +dX +dX +ko +af +af +af +af +af +af +fq +af +af +am +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +al +af +af +tN +tN +tN +tN +tN +tN +tN +af +af +af +fq +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +ag +af +ae +ae +ae +ae +wQ +wS +tI +tI +yc +yn +yH +zc +an +an +zM +ii +tx +tx +tx +aj +tI +AS +wS +wS +wS +tI +wS +Bv +BN +BS +BV +an +BZ +Ce +wS +wS +wS +wS +tI +tI +tI +tI +tI +tI +aj +wS +ai +wS +wS +wS +wS +wS +wQ +wQ +wQ +ae +ae +ae +ae +ae +wQ +wQ +wQ +ae +wQ +wS +aj +aj +tI +tI +tI +tI +tI +tI +wS +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ko +Fh +Fj +af +af +af +ao +af +af +af +am +af +af +af +ae +FZ +Iy +Iy +Iy +Go +Jy +KP +KP +KP +KP +KP +KU +GP +ac +ac +ac +ac +ac +ac +ac +"} +(58,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +af +af +af +ak +af +af +af +af +af +bf +ci +cO +du +dT +eA +cd +fR +gG +hx +gI +iJ +ia +hZ +kR +lH +ms +mt +nw +nW +os +oS +nt +pZ +qx +qZ +ru +rO +sh +oW +am +am +af +af +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +ak +af +af +am +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +wS +wS +ii +tI +yd +yo +yI +zd +an +ii +ij +tI +tI +tI +tx +tx +tI +wS +wS +wS +tI +tx +tI +ii +ii +ii +ii +ii +Ca +Ca +aj +aj +wS +wS +tx +tx +tx +tI +tI +tI +Cj +tI +Cm +tI +tI +tI +tI +aj +wS +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +AT +tI +tI +ii +ii +tI +wS +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +ko +Fh +Fj +am +af +af +af +af +af +af +af +af +ae +ae +ae +Go +Go +GP +GP +GP +Jx +KP +KP +KP +KP +KP +KT +GP +ac +ac +ac +ac +ac +ac +ac +"} +(59,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ag +af +af +af +af +af +af +af +ag +bf +cj +cP +dv +ch +eB +fk +fR +gH +gH +hZ +hZ +gJ +kf +iJ +lI +mt +hx +nx +nW +ot +oT +nN +qa +qy +ra +rt +rP +si +oW +am +am +af +af +dX +af +ko +af +af +af +ao +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +am +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +vH +am +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +fq +af +af +ae +ae +ae +ae +ae +ae +wS +wS +an +ii +tI +wS +wS +yJ +zd +an +ii +tI +tI +tI +tI +tI +tI +tI +wS +ai +wS +tI +tx +tx +tI +tI +tI +BW +tI +aj +aj +aj +aj +wS +wS +tx +tx +tx +tx +tI +tI +Ck +BW +Cn +Cp +tI +Cp +tI +tI +wS +wQ +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +ai +wS +wS +ii +ii +BX +ai +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ko +af +af +af +am +af +af +af +am +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +Go +Jx +KP +KP +KP +KP +KP +KT +GP +ac +ac +ac +ac +ac +ac +ac +"} +(60,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +af +af +af +af +af +af +af +af +af +bf +cj +cQ +dw +dU +dr +fl +fS +gI +gH +ia +gJ +gG +kg +kS +lH +kR +iJ +ny +nV +os +oU +nN +qb +qz +qY +nN +nN +nN +oW +am +am +af +dX +dX +fq +ko +af +af +af +af +af +af +af +fq +af +af +af +af +fq +af +af +af +am +af +af +am +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +am +am +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +fq +af +af +af +af +mZ +ae +ae +ae +ae +ae +wQ +wS +an +an +ii +ii +wS +wS +yK +ze +an +ii +tI +ii +ii +ii +ii +ii +tI +ii +yb +ii +ii +tI +ii +ii +ii +ii +tI +BX +ai +wS +wS +aj +aj +aj +tx +tx +tx +tx +tx +tI +Ck +ii +tI +BW +ii +ii +tI +Cp +aj +aj +wS +wQ +wQ +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wS +tI +tI +tI +wS +wS +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +Fi +af +af +af +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +Go +Jz +JU +JU +Ko +JU +JU +KV +GP +ac +ac +ac +ac +ac +ac +ac +"} +(61,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +af +af +am +af +af +ak +bf +ck +cR +ds +dV +eC +cd +fT +gJ +hy +gH +iK +hZ +hz +hy +lJ +mu +mR +nz +nX +ou +oV +nt +qc +qA +qZ +ru +rQ +sh +oW +af +af +af +af +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +ak +af +af +af +af +fq +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +am +am +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +am +ae +ae +ae +ae +tG +aj +aj +an +an +an +an +an +ii +tx +ii +ii +ii +ii +ii +tI +ii +ii +ii +ii +tI +tI +tI +ii +ii +ii +ii +ii +ii +ii +tI +tI +wS +wS +aj +aj +aj +tx +tx +tx +tx +tx +ii +Cj +ii +wS +wS +wS +wS +ai +Cu +tI +tI +wS +wQ +wQ +wQ +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wQ +wS +tI +tI +tI +tI +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tq +af +dX +dX +af +af +af +dX +dX +dX +ae +ae +ae +ae +ae +ae +ae +Go +Go +GP +GP +GP +Go +GP +Go +Go +ac +ac +ac +ac +ac +ac +ac +"} +(62,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +af +af +af +af +af +af +bf +cl +cS +dr +dW +eD +cd +fU +gK +hz +gG +iJ +ia +hz +ia +lK +ms +kf +nA +nY +ov +oV +nN +qd +qB +rb +rt +rR +si +oW +ag +af +af +af +lS +iY +sN +af +af +af +af +af +af +af +am +af +af +af +fq +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +fq +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +am +af +af +af +af +ae +ae +ae +ae +aj +an +xk +xk +xC +xC +xk +xk +ii +tx +tI +tI +tI +tI +tx +tx +tI +tI +tI +tI +tI +tI +tx +tI +tI +tI +tx +tI +tI +ii +ii +tI +Cf +aj +aj +aj +aj +tx +tx +tx +tI +tI +ii +wS +wS +aj +wS +wS +wS +wS +tI +Cp +Cp +ai +aj +wS +wS +wS +wS +ae +ae +ae +wQ +wQ +wQ +ae +ae +wQ +wQ +wS +tI +ii +ii +tI +wS +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tq +Fm +te +dX +dX +ak +am +dX +te +Gs +tq +tq +tq +tq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(63,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +af +af +af +af +af +af +bf +bf +bf +bf +bf +bf +bf +fV +gL +hA +ib +iL +jB +iL +iL +lL +mv +hx +nA +fW +fW +oW +nt +qe +qC +oW +oW +oW +oW +oW +af +af +dX +af +ko +af +af +dX +af +af +af +al +af +af +af +af +af +af +am +af +af +af +af +af +af +af +fq +af +af +af +am +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +uq +ae +ae +ae +ae +ae +ae +ae +aj +xa +xl +xl +xl +xK +xl +xl +an +ii +ii +wS +tI +tx +tx +tx +tI +tI +tI +tI +ii +ii +ii +ii +ii +tI +tI +tI +tI +tI +tI +ii +tI +tI +ii +tI +ii +ii +tI +tI +ii +tI +BX +ai +wS +aj +tx +tx +tI +tI +tI +tI +ii +Cy +ii +ii +tI +tI +wS +ae +ae +ae +wS +wS +wS +ai +aj +wS +wS +wS +aj +ii +ii +tI +wS +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tq +Fn +Fs +Fx +FE +FI +FI +FE +Fx +Fy +GS +Ho +Ho +tq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(64,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ag +af +af +af +af +af +af +af +af +ag +af +af +fm +fW +fW +fW +fW +fW +fW +fW +fW +fW +fW +fW +fW +fW +jC +oX +pz +qf +qD +oW +af +ag +af +af +af +dX +lS +iY +sN +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +al +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +ae +aj +xa +xl +xl +xl +xl +xl +xl +yp +ii +wS +wS +tI +tx +tx +tx +tI +tI +AT +tI +ii +an +an +an +ii +ii +ii +ij +tI +tI +tI +tI +tx +tx +tx +tI +ii +ii +AT +tI +tI +tI +tI +wS +wS +aj +tx +tx +tx +tx +tI +tI +tI +tI +tI +Cz +tx +tI +wS +aj +ai +aj +aj +tI +tI +Ch +ii +tI +tI +tI +ii +ii +tI +tI +wS +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tq +Fo +Ft +te +dX +af +af +dX +te +Gt +GT +Hp +Ho +tq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(65,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +af +af +af +af +af +ak +af +af +af +af +af +af +ag +af +af +af +af +am +jC +iM +kT +hB +mw +kT +iM +iM +jD +oW +oW +oW +oW +oW +af +ao +af +af +af +dX +ko +af +af +af +af +af +af +af +af +af +am +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +wQ +ai +xb +xl +xl +xl +xl +xl +xl +yq +ii +wS +wS +wS +tI +tx +Am +Az +wS +ai +wS +wS +wS +Bv +xT +an +xE +xL +xT +Az +Am +Am +tx +Cg +tx +tI +tI +tI +tI +ai +aj +wS +wS +wS +aj +ae +aj +aj +aj +wS +wS +wS +aj +tx +tx +tI +tI +CB +Cz +tx +tx +Al +aj +aj +tI +ii +tI +aj +aj +tI +tI +ii +Dn +tI +tI +wS +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tq +Fp +Ft +te +dX +dX +af +dX +te +Gu +tq +tq +tq +tq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(66,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +af +ak +af +af +gM +hB +hB +iM +jD +ak +am +am +af +am +af +af +am +ag +ao +af +af +af +af +af +am +af +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +am +af +af +af +af +af +af +af +af +af +af +af +af +am +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +wQ +ai +xb +xl +xl +xl +xl +xl +xl +yq +an +ii +tI +tI +tI +tI +Am +Az +wS +wQ +wQ +wQ +wS +Bw +ys +ye +BI +BK +xM +Az +Az +Am +wS +ai +wS +wS +wS +aj +wS +wS +wS +wQ +wQ +wQ +ae +ae +ae +ae +ae +wQ +wQ +wQ +aj +tx +tx +tx +tI +vQ +CF +tx +tx +tx +aj +tI +tI +ii +tI +aj +aj +tI +tI +tI +ai +aj +aj +wS +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tq +Fq +Ft +te +te +dX +ao +dX +te +Gv +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(67,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +af +af +ak +af +ao +af +af +af +al +af +af +af +af +af +gN +ak +af +af +af +ag +am +am +af +ag +af +af +af +af +af +af +af +af +af +af +af +dX +dX +dX +ko +af +af +fq +af +ao +af +af +am +af +af +af +fq +af +am +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +af +af +tN +tN +tN +tN +tN +af +af +af +fq +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +uq +ae +ae +ae +ae +ae +ae +wQ +wS +xa +xl +xl +xl +xl +xl +xl +yr +an +ii +ii +ii +ii +tI +Am +Az +wS +wQ +wQ +wQ +wS +ai +yt +yf +ai +aj +aj +aj +wS +wS +wS +wS +wQ +wQ +wQ +ae +wQ +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wQ +wS +wS +wS +ai +CA +tI +CG +vQ +Dc +ii +ii +ii +tI +wS +wS +aj +aj +aj +wS +wS +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tq +Fn +Fu +Fy +te +dX +af +dX +te +Gu +tq +tq +tq +tq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(68,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +ao +af +af +af +af +gN +ag +fY +fY +fY +fY +fY +fY +fY +fY +fY +dX +af +af +dX +dX +dX +dX +af +dX +dX +dX +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +am +am +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +af +af +tN +tN +tN +tN +tN +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +wQ +wS +xa +xl +xl +xl +xl +xl +xl +yp +an +an +an +an +an +zY +aj +wS +wS +ae +ae +wQ +wQ +ai +yu +yg +ai +ae +ae +ae +wQ +wQ +wQ +wQ +wQ +wQ +wQ +ae +wQ +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wQ +wS +wS +wS +wS +aj +aj +wS +wS +ai +Do +ii +Dd +tI +wS +ae +wQ +ae +ae +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tq +tq +Fp +Ft +te +dX +af +dX +te +Gw +GS +Ho +Ho +tq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(69,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +af +af +af +fX +gO +hC +ic +iN +hT +kh +kU +lM +mx +mS +Yn +dX +dX +af +af +dX +af +af +dX +af +af +af +af +lS +sN +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +al +af +af +af +af +fq +af +af +af +af +af +af +af +al +af +tN +tN +tN +tN +af +af +tN +tN +tN +tN +tN +af +af +af +af +fq +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +wQ +wS +an +xp +xp +xD +xD +xp +xp +an +gT +an +an +an +an +zY +aj +wQ +wQ +ae +ae +ae +ae +ai +yg +yg +ai +ae +ae +ae +ae +wQ +wQ +wQ +wQ +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wQ +wS +tI +wS +wS +aj +tI +tI +tI +tI +tI +Dv +DF +ai +aj +aj +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tq +Fp +Fz +Fx +FE +FI +FE +Fx +Fu +GT +Hp +Ho +tq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(70,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +af +ag +af +af +af +af +af +af +af +af +af +af +af +fY +gP +hD +id +iO +iW +ki +kV +lN +my +mT +Yn +dX +dX +af +af +dX +dX +af +af +af +af +af +af +ko +am +am +af +af +af +af +af +af +af +am +af +af +tA +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +tN +tN +tN +af +fq +af +tN +tN +tN +tN +tN +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +wQ +wS +aj +aj +an +an +an +an +an +an +an +zf +zf +zz +zN +aj +aj +ae +ae +ae +ae +ae +ae +ai +ai +ai +ai +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wQ +wS +tI +tI +tI +tI +tI +tI +tI +Dd +Cp +tI +Dd +tI +CF +tI +wS +vQ +vQ +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tq +tq +tq +af +dX +af +dX +te +Gs +tq +tq +tq +tq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(71,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +af +af +am +af +af +af +ao +af +am +af +af +fY +gQ +hE +ie +iP +jF +kj +kW +id +ld +mU +fY +dX +af +af +af +fq +af +af +dX +af +af +af +af +ko +af +af +af +af +fq +af +af +am +af +af +af +af +am +af +af +af +af +af +fq +af +af +af +jc +af +af +af +am +af +af +af +af +tN +tN +tN +tN +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +uq +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wS +wS +xE +xL +xT +an +xE +yL +wS +wS +ai +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +aj +aj +aj +aj +aj +tI +an +vQ +DL +vQ +Dw +Ei +Dw +wS +wS +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +dX +dX +dX +dX +Fj +HI +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(72,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +af +fY +gR +hE +if +iQ +jG +kk +kX +ie +mz +mz +fY +af +af +ak +af +af +af +af +af +am +af +af +af +ko +af +af +af +af +af +am +am +af +af +af +af +af +af +af +af +af +af +af +af +af +ak +af +af +af +af +af +af +af +af +fq +af +tN +tN +tN +tN +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wS +wS +xF +xM +xU +ye +ys +yM +wS +wQ +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +Dw +CG +an +Dw +an +Dw +an +vQ +an +CC +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +mZ +af +ak +af +af +af +Fj +Hq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(73,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +af +af +af +ak +af +af +af +af +ao +af +ag +fY +gS +hE +id +iR +jH +ie +kY +id +ju +mV +fY +ag +af +fq +af +af +dX +af +dX +af +af +af +lS +sN +af +af +af +af +af +am +am +af +af +fq +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +fq +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +wS +wS +ai +yf +yt +ai +aj +ae +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +CC +vQ +vQ +DM +wS +vQ +vQ +vQ +an +CC +CC +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +am +af +Hq +Hq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(74,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +af +fY +fY +fY +fY +iS +jI +id +kZ +lO +mB +mW +fY +af +af +af +af +af +af +af +af +af +af +am +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wQ +ai +yg +yu +ai +ae +ae +wQ +wQ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +CC +CC +an +DN +an +vQ +an +wS +aj +CC +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +iY +iY +FS +iY +FS +iY +Hr +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(75,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +af +af +ao +af +af +af +af +af +af +dX +fY +iT +jJ +ie +la +lP +mC +mX +fY +af +am +af +fq +dX +af +af +af +af +al +af +ko +af +fq +af +am +af +af +ak +af +af +af +af +af +af +fq +af +af +af +ak +af +af +af +af +fq +am +af +af +af +af +af +am +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +uq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ai +yg +yg +ai +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +CC +CC +Dp +an +an +an +wS +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +am +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(76,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +af +af +af +ao +af +af +af +ak +af +eE +eE +eE +eE +af +fY +iU +jH +id +id +lQ +id +ie +fY +nZ +af +af +af +af +af +dX +af +af +af +af +ko +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ai +ai +ai +ai +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +CC +DO +an +DP +CC +aj +aj +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +ak +af +am +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(77,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +eE +fn +fZ +eE +af +fY +iV +jK +jK +lb +lR +hE +mY +nB +dX +af +af +af +af +af +af +af +af +am +lS +sN +af +af +af +af +af +al +af +af +af +af +af +ak +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +CC +CC +CC +DP +DX +DO +CC +an +an +an +an +CC +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +fq +af +af +ak +af +fq +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(78,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +dX +eF +fo +ga +eE +ag +fY +iW +jL +kl +lc +hE +jL +iW +nB +dX +dX +af +af +dX +af +af +af +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +am +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +am +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +an +CC +an +DY +Dp +CC +an +an +an +an +CC +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +al +am +af +af +af +mZ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(79,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +am +af +af +eE +fp +gb +eE +af +fY +iW +iW +iW +iW +iW +hE +hE +nB +oa +dX +dX +af +af +af +dX +am +af +af +ko +af +af +af +af +fq +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +ak +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +am +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +uq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +wQ +wQ +wS +aj +an +CC +Dp +DZ +an +CC +El +an +an +EE +CC +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +ag +af +af +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(80,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +eE +eE +eE +eE +af +fY +iX +jM +km +ld +iW +hE +hE +nB +dX +af +af +af +af +af +af +af +af +af +ko +af +af +af +af +af +am +af +af +af +af +af +af +fq +af +af +af +af +al +af +af +af +af +af +af +af +ak +af +af +al +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +fq +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +wp +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +wS +wS +an +Dx +CC +DH +DG +DH +CC +Em +Dp +an +EF +CC +AJ +Cr +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +am +af +af +fq +af +af +af +vH +am +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(81,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +ag +af +af +af +ag +dX +af +af +ak +af +fY +fY +fY +fY +fY +fY +fY +fY +fY +nZ +af +af +af +af +af +af +ak +af +lS +kt +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +fq +am +am +af +fq +af +af +af +al +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +am +af +af +am +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +Aa +Aa +Aa +Aa +Aa +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +vH +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +wS +an +an +Dy +PR +CX +CX +CX +OF +En +Es +Dp +EE +CC +zh +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +am +af +af +af +se +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(82,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +dX +af +dX +af +af +ag +af +af +af +af +ag +af +af +af +fq +af +dX +dX +af +af +af +ko +af +af +am +af +af +af +af +af +ak +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +am +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +uq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ag +zZ +Aa +zD +zD +AU +Aa +Aa +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +am +am +af +ag +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +wS +an +Dp +Dz +DH +CX +Ea +Ef +DH +Eo +Et +Dp +EG +CC +zh +af +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +ag +ak +af +af +af +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(83,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +fq +af +af +fq +dX +af +af +af +dX +am +af +af +dX +af +af +af +af +dX +dX +af +af +af +ko +af +af +af +af +af +af +fq +af +af +fq +af +af +af +af +fq +af +am +af +af +af +am +af +af +af +am +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +ak +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +fq +mZ +am +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +Aa +zD +AA +zD +zD +zD +Aa +af +af +Aa +Aa +Aa +Aa +Aa +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +am +af +af +af +af +am +af +af +af +ag +am +af +ag +af +ae +ae +ae +CC +CC +CC +CC +CC +CC +CC +CV +CJ +CX +CC +CC +CC +CC +CC +CC +ET +zh +af +af +Cq +af +ae +ae +ae +Ct +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +vH +af +af +am +af +am +af +ak +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(84,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +am +af +af +af +af +fq +af +af +af +af +af +af +am +af +af +af +af +af +am +af +ko +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +jc +af +ak +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +fq +am +af +af +af +fq +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +fq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +Aa +zD +zD +AI +zD +zD +Aa +af +zZ +Aa +zD +zD +AV +Aa +Aa +ae +ae +ae +ae +eM +af +af +mZ +af +af +af +af +af +fq +af +af +am +af +af +af +am +af +af +Co +af +af +AJ +CC +CH +CH +De +CH +CH +DH +CX +Eb +Ef +DH +CH +Eu +Ez +EH +EN +CC +zh +af +af +af +af +ag +zh +Cv +Cv +EZ +Ct +ae +ae +ae +ae +ae +af +ag +af +af +af +am +af +af +fq +am +fq +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(85,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +fq +af +af +af +af +fq +af +af +af +fq +af +af +af +af +af +af +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +fq +af +af +af +fq +af +af +fq +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +am +af +ak +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +al +am +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +Aa +zD +zD +zD +zD +zD +Aa +am +Aa +zD +zD +zD +zD +zD +Aa +af +af +ao +yv +af +af +ak +af +af +af +fq +af +af +af +af +af +af +fq +ak +am +af +fq +af +af +af +af +zh +CC +CI +CT +Df +Di +DA +DI +DQ +Ea +CX +Ej +Ep +Di +Di +Di +EO +CC +AJ +af +Cw +af +af +af +zh +zh +Cv +Ct +Ct +ae +ae +ae +ae +af +af +af +am +af +af +am +af +af +af +af +af +am +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(86,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +dX +af +af +am +ko +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +al +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +fq +am +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +fq +mZ +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +Aa +Aa +zD +zD +zD +Aa +Aa +af +Aa +zD +zD +AI +zD +zD +Aa +ag +af +af +yv +af +af +af +af +am +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +zh +CC +CJ +CU +Dg +Dq +DB +DJ +DR +Dq +Eg +Ek +DR +DB +EA +EI +EP +CC +zh +af +af +af +af +af +zh +zh +zh +zh +zh +af +af +ag +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +fq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(87,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +dX +af +af +af +ko +af +af +af +al +af +af +af +af +af +fq +af +af +af +ak +af +af +af +af +am +fq +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +fq +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +Aa +Aa +zD +Aa +Aa +af +af +Aa +zD +zD +zD +AA +zD +Aa +af +af +af +yv +am +af +fq +af +af +af +af +af +af +am +af +fq +Co +af +af +af +af +Co +af +af +am +af +AJ +CC +CK +CV +Dh +Dr +DC +DK +DC +DC +DC +Ej +Eq +Ev +EB +EJ +EH +CC +zh +af +Co +Co +af +af +af +zh +zh +zh +zh +af +af +ak +af +af +fq +am +af +af +af +al +ak +am +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(88,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +am +af +af +af +af +af +am +af +af +af +af +af +af +ko +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +af +af +am +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +am +af +ae +ae +ae +ae +ae +af +yv +ae +ae +af +ag +af +Aa +zD +Aa +af +af +ag +Aa +Aa +zD +zD +zD +Aa +Aa +af +af +am +yv +af +af +af +af +fq +af +af +af +fq +af +af +af +af +am +af +af +am +af +af +af +af +af +zh +CC +CL +CW +Di +Ds +Di +CC +DS +Ec +DS +CC +Di +Ew +Ep +EK +EQ +CC +ag +af +af +af +af +af +af +zh +zh +zh +zh +af +am +af +af +am +af +af +af +fq +af +af +af +af +af +eM +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(89,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +af +af +af +af +af +af +fq +af +dX +dX +af +af +af +af +ko +fq +af +af +af +af +am +af +af +af +af +af +af +af +fq +af +am +af +af +af +af +af +af +af +af +al +af +af +fq +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +fq +af +af +af +af +am +af +af +fq +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +ag +af +af +af +ag +am +yv +af +ag +af +af +af +Aa +Ao +Aa +af +af +af +af +Aa +Aa +zD +Aa +Aa +af +af +af +af +yv +yv +af +am +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +Cw +af +af +af +af +CC +CM +CX +Dj +Dt +DD +CC +DT +Ed +DT +CC +Er +Ex +EC +Dk +ER +CC +af +af +ao +af +af +af +af +af +zh +zh +zh +af +af +af +af +am +af +af +af +af +af +af +af +vH +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(90,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +fq +af +af +am +af +af +af +af +dX +dX +af +af +af +af +ko +af +af +fq +af +af +af +af +ak +af +af +af +af +af +af +af +af +af +af +af +al +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +am +af +af +af +af +af +af +af +af +af +fq +am +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +fq +af +am +af +af +af +af +af +yv +af +af +fq +af +am +AB +AJ +zs +af +am +af +af +af +Aa +zD +Aa +af +ag +af +fq +af +af +yv +af +af +af +am +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +Ct +af +af +CC +CN +CY +Dk +CC +CC +CC +DU +DU +DU +CC +CC +CC +ED +EL +ES +CC +af +af +Ct +Ct +af +af +af +af +zh +zh +zh +af +af +af +fq +af +af +af +fq +af +am +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(91,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ah +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +ko +af +af +af +af +af +ak +af +af +af +af +fq +af +af +af +af +fq +af +af +af +af +af +af +fq +af +af +fq +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +fq +af +af +al +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +ao +af +yv +yv +af +af +af +af +af +AB +zh +zs +af +af +af +am +af +Aa +Ao +Aa +af +af +af +af +ao +af +yv +yv +af +af +af +af +fq +ak +af +af +am +af +af +af +af +af +Cq +af +af +af +zh +af +ag +CC +CO +CZ +CZ +CD +AJ +CC +DV +Ee +Eh +CC +AJ +CC +CH +EM +CH +CC +zh +af +Cv +zh +af +ao +af +af +af +zh +zh +af +am +af +af +am +af +af +af +af +af +af +af +af +af +fq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(92,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ai +aj +aj +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ae +ae +ig +iY +iY +kn +af +af +af +af +af +af +af +dX +dX +dX +af +af +af +af +ko +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +tN +tN +tN +tN +tN +tN +tN +tN +fq +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +am +af +af +af +yv +af +af +am +af +ak +ao +AB +zh +zh +zA +zA +zr +af +af +AB +AJ +zs +af +af +am +ak +af +af +af +yv +fq +am +af +af +af +af +am +af +af +fq +af +af +vH +af +af +am +af +af +zh +af +ao +CD +CP +CP +CP +Du +DE +zh +zh +AJ +zh +zh +zh +CD +CP +CP +CP +CC +AJ +af +zh +zh +af +Ct +af +af +af +zh +zh +af +af +af +fq +af +af +am +af +af +af +af +fq +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(93,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +aj +aj +aj +ap +as +ap +ap +aj +aj +ap +ap +ap +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +af +ko +af +af +af +af +af +af +af +dX +dX +dX +af +af +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +fq +af +af +fq +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +am +af +af +af +af +af +af +af +fq +ak +am +af +af +fq +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +am +af +yv +zg +zr +af +af +af +An +zh +zh +zB +zB +Bg +zh +zA +zA +zh +zh +zs +af +af +af +zF +af +fq +af +yv +af +am +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +zh +af +af +CE +CQ +Da +Dl +AJ +zh +DE +zh +zh +zh +DE +AJ +Ey +CQ +Da +Dl +CC +zh +Cq +zh +zh +af +zh +Cr +af +ao +zh +zh +af +af +af +af +af +af +af +af +am +af +af +af +ag +am +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(94,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +aj +aj +an +ap +aj +ap +ap +ap +ap +ap +ap +aj +as +dx +dx +eG +eG +ap +ai +ai +ai +ai +af +kp +af +af +af +af +af +dX +af +af +dX +dX +dX +dX +af +lS +kt +af +al +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +tF +tF +tF +tF +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +yN +yN +zh +zA +zA +Ab +zB +zB +zO +af +af +af +Bn +zB +zh +zh +zh +BL +af +am +af +af +af +af +af +yv +af +tF +tF +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +zh +af +af +AJ +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +AJ +zh +zh +af +zh +zh +af +zh +af +af +af +zh +af +af +af +af +af +am +af +af +fq +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(95,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +aj +aj +aj +an +an +an +aj +aj +an +an +aj +an +ap +ap +ap +eG +eG +ap +ap +as +ih +iZ +dX +ko +af +dX +af +af +af +af +af +af +af +af +dX +dX +af +kp +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +tF +tF +tN +af +af +tN +tN +tN +tN +tN +tN +tN +fq +tF +tF +tF +tF +af +ak +af +af +af +af +af +af +af +af +fq +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +yN +zh +zh +zB +zO +af +af +af +af +af +af +tF +af +af +Bn +zh +zh +zs +af +af +af +af +am +af +af +tF +tF +tF +af +af +fq +af +af +af +fq +af +af +ao +af +Cr +Ct +Ct +Ct +af +Cq +Co +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +zh +zh +af +zh +af +af +af +af +af +am +af +af +fq +af +af +af +af +af +af +am +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(96,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +aj +aj +aj +aj +at +an +an +an +an +an +aj +an +cT +an +an +eH +an +ap +gT +an +ii +ii +dX +kq +dX +dX +af +dX +af +af +dX +af +af +af +af +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +fq +af +am +af +af +af +af +af +tF +tF +tF +tF +tN +tN +tN +tN +tN +tN +tN +af +af +tN +af +tF +tF +tF +tF +tF +af +af +af +af +fq +af +am +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +ao +af +am +af +yN +yN +zs +af +af +af +af +af +af +fq +af +tF +tF +tF +af +AB +zh +zs +af +fq +tF +tF +af +af +tF +tF +af +af +af +af +af +af +af +af +am +af +af +af +af +af +Ct +Cv +zh +af +af +af +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +zh +zh +af +zh +af +af +af +af +af +af +af +af +af +af +am +af +af +af +fq +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(97,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +aj +aj +aj +an +an +an +an +an +aj +aj +aj +aj +aj +at +an +an +cT +an +an +an +ij +ja +dX +ko +af +dX +af +af +af +af +af +af +af +af +af +dX +af +ks +af +af +am +af +af +af +am +af +af +al +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tF +tF +tF +tF +tF +tN +tN +af +af +af +tN +af +af +tN +tN +tF +tF +tF +tF +tF +af +fq +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +ao +af +yv +zi +zh +tF +tF +ag +am +af +af +af +am +tF +tF +tF +af +AB +zh +zs +af +af +tF +tF +tF +tF +tF +tF +tF +af +am +af +af +af +fq +af +af +af +Co +af +af +af +zh +zh +zh +Cr +af +af +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +zh +zh +af +zh +af +af +am +af +af +af +af +af +af +af +vH +af +af +af +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(98,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +aj +aj +aj +aj +aj +an +an +aj +aj +aj +aj +aj +aj +an +an +eI +an +an +an +an +ij +jb +dX +kr +dX +af +af +dX +dX +af +af +af +af +af +af +af +af +ko +af +af +af +af +ao +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +fq +af +af +fq +af +tF +tF +tF +tF +tF +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tF +tF +tF +tF +tF +af +af +am +af +af +af +af +ak +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +am +af +af +yv +ag +zt +zu +zu +zu +zu +af +af +tF +tF +tF +tF +tF +tF +tF +zh +zs +af +am +tF +tF +tF +tF +tF +tF +tF +af +af +af +af +af +af +af +ak +af +af +af +af +ao +zh +zh +zh +af +af +ao +Co +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +zh +zh +af +zh +af +af +af +am +af +af +am +af +af +af +af +af +am +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(99,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +aj +aj +aj +aj +an +an +an +at +an +an +aj +an +an +an +cT +an +eH +an +gT +an +ii +ii +dX +ks +af +af +af +af +dX +af +af +af +af +af +af +fq +af +kq +af +af +ak +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tF +tF +tF +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +tF +tF +tF +af +af +af +af +af +af +af +fq +af +af +af +af +fq +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +yv +yv +af +zu +zC +zP +Ac +zu +ag +af +tF +tF +tF +tF +tF +tF +tF +zh +zs +af +tF +tF +tF +tF +tF +tF +tF +tF +af +fq +af +am +af +af +af +af +am +af +af +af +af +zh +zh +zh +af +af +af +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +Cw +zh +zh +af +zh +af +Co +af +af +ak +af +af +fq +af +ak +af +af +af +af +fq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(100,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +aj +aj +aj +an +an +aj +an +aj +aj +an +an +an +ap +ap +ap +eG +eG +ap +ap +au +ik +iZ +dX +kr +dX +af +dX +af +af +af +af +af +af +af +af +af +af +ko +af +am +am +af +af +af +af +af +am +af +af +af +af +am +af +af +af +am +af +af +af +af +af +af +af +af +af +af +tF +tF +tF +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +fq +af +am +af +af +af +af +af +af +af +am +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +am +yv +af +tF +zu +zD +zD +zD +zu +af +af +af +tF +tF +tF +tF +tF +zh +zh +zs +af +tF +tF +tF +tF +tF +tF +tF +tF +af +am +af +af +fq +af +am +af +af +af +am +af +af +zh +zh +zh +af +af +Ct +af +zh +CR +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +ao +af +zh +zh +af +zh +af +af +af +af +Cw +af +af +af +af +Fa +af +af +fq +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(101,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +aj +aj +aj +ap +aj +ap +ap +aj +aj +ap +ap +aj +cU +dy +ap +eG +eG +ap +ai +ai +ai +ai +af +kp +af +af +af +af +ak +af +am +af +af +af +al +af +af +kp +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +af +af +ak +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +fq +af +af +af +af +af +af +af +af +af +af +af +fq +af +fq +af +af +af +fq +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +am +af +ao +af +yv +af +tF +zu +zE +zQ +zD +Ao +ag +af +ao +tF +tF +tF +tF +tF +zh +zh +tF +tF +tF +tF +tF +tF +tF +tF +tF +tF +af +af +af +af +af +af +af +fq +af +af +af +af +af +zh +zh +zh +af +af +zh +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +af +zh +zh +af +zh +af +af +Cq +af +af +af +af +af +fq +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(102,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +aj +aj +aj +ap +au +ap +ap +ap +ap +ap +ap +aj +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +jN +ko +af +fq +af +af +af +af +af +fq +af +af +lS +iY +iY +kt +af +fq +am +af +af +af +af +ao +af +af +af +ao +af +af +af +af +af +af +af +af +af +ao +af +af +af +fq +af +af +af +af +fq +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +fq +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +fq +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +am +af +yv +tF +tF +zu +zu +zu +zu +zu +af +af +af +tF +tF +tF +tF +zh +zh +zh +tF +tF +tF +tF +tF +tF +tF +tF +tF +af +af +af +af +af +af +af +af +af +af +af +af +af +af +zh +zh +zh +af +af +zh +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +af +zh +zh +af +zh +af +af +af +af +af +af +af +af +am +am +af +af +af +am +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(103,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ai +ai +aj +ai +ai +ai +aj +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ae +ae +ae +ig +iY +kt +af +af +af +af +af +af +af +af +af +af +ko +af +af +am +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +ao +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +am +af +af +af +ak +af +af +af +af +af +af +af +af +af +ak +af +af +af +af +af +af +af +af +fq +tN +tN +tN +tN +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +tF +tF +tF +ag +af +af +ag +af +af +fq +af +af +af +af +af +AB +zh +zh +tF +tF +tF +tF +tF +tF +tF +tF +tF +tF +tF +af +am +af +af +af +af +af +af +af +Cq +am +af +zh +zh +zh +af +af +zh +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +Cs +af +zh +zh +af +zh +af +af +af +am +am +af +af +af +af +fq +af +af +af +fq +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(104,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ai +ai +ai +ai +aj +aj +ai +ai +ai +ai +ai +ai +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +fq +af +af +af +af +am +af +af +af +af +af +af +ko +am +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +ak +am +af +af +af +af +am +af +af +af +af +af +af +af +am +af +af +af +af +tq +tT +tW +tW +tW +ua +ua +ua +tT +uv +tq +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +am +af +af +am +af +af +af +af +af +am +af +af +af +af +fq +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +fq +af +af +yv +af +af +af +am +af +af +af +af +af +af +An +zA +zA +zA +Bd +zh +zh +tF +tF +tF +tF +tF +tF +tF +tF +tF +af +af +af +ao +af +af +am +af +af +am +af +af +af +af +zh +zh +zh +ao +af +zh +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +zh +zh +af +zh +af +af +af +af +af +af +af +af +af +am +af +am +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(105,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +al +af +af +af +fq +af +af +am +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +ak +af +ao +af +af +am +af +af +dX +te +te +te +te +ua +ua +ua +te +dX +dX +af +af +af +am +af +af +af +am +af +af +ao +af +af +af +af +ao +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +am +af +yv +yv +af +fq +af +af +af +am +af +An +zA +Bd +zh +zh +zB +zB +zh +zh +tF +tF +tF +tF +tF +tF +tF +tF +tF +af +am +af +af +af +af +af +ao +af +af +af +af +af +af +zh +zh +zh +af +af +zh +Cs +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +zh +zh +af +zh +af +af +af +af +am +af +af +fq +af +af +af +af +af +af +fq +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(106,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +af +af +af +fq +af +af +af +af +af +ko +af +af +af +fq +af +af +af +al +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +fq +af +af +af +am +af +af +af +af +af +af +af +af +dX +te +te +te +ua +ua +ua +te +te +te +dX +af +af +ao +af +af +af +af +af +af +am +af +af +af +af +af +af +am +af +am +af +af +af +fq +am +af +af +af +af +af +am +af +af +af +fq +af +af +tN +tN +tN +tN +tN +af +al +af +am +af +af +af +af +af +af +yv +af +af +af +am +ao +af +An +zh +zh +zB +zB +zO +am +af +AB +zh +zh +zr +af +tF +tF +tF +am +af +yv +af +af +af +af +af +af +af +af +af +ak +af +af +af +af +zh +af +af +af +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +zh +zh +af +af +Co +am +af +af +af +af +af +af +af +al +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(107,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ak +af +af +af +af +af +af +af +af +af +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +fq +af +af +af +af +af +af +af +af +af +am +af +af +ao +af +dX +te +te +te +ua +ua +te +te +te +te +dX +af +am +af +af +af +af +af +ao +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +am +af +af +fq +af +af +fq +af +am +af +af +am +am +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +am +yv +af +af +af +af +af +af +AB +AJ +zs +af +af +af +af +af +AB +AJ +zh +zh +zA +zr +af +af +af +fq +yv +yv +af +ao +af +am +af +am +af +af +af +af +af +Cs +af +af +af +af +af +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +af +zh +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +fq +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(108,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +lS +iY +iY +kt +af +af +af +af +af +af +af +af +am +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +dX +te +te +te +ua +ua +ua +ua +te +te +dX +af +af +af +af +am +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +am +af +af +af +af +af +af +af +af +af +fq +af +af +af +fq +af +af +af +fq +af +af +af +af +ao +af +yv +yv +af +af +am +af +af +Aa +Ao +Aa +ag +af +fq +ak +ag +Aa +Ao +Aa +zB +zB +zh +zr +af +af +An +yN +yv +af +af +af +af +af +af +am +af +af +af +af +zh +af +af +Ct +af +af +af +zh +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +CR +zh +zh +zh +af +af +af +af +af +af +af +af +af +af +fq +af +am +af +af +af +af +af +af +af +am +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(109,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +fq +af +af +af +af +ko +af +af +al +af +af +am +ak +af +af +af +af +af +af +af +af +af +af +ak +af +af +af +fq +af +am +af +af +af +af +af +af +am +af +af +af +fq +af +af +af +tq +tU +tX +tX +ua +ua +ua +ua +tU +uC +tq +af +ak +af +af +af +af +af +af +af +af +af +ak +af +af +af +fq +af +af +fq +af +ag +af +af +ag +af +fq +af +af +fq +af +am +af +af +af +fq +af +af +am +af +af +af +af +am +af +af +af +af +am +af +af +af +af +yv +af +zF +af +ag +af +Aa +zD +Aa +af +af +af +am +af +Aa +zD +Aa +af +af +Bn +zB +zA +zA +zh +yN +yN +af +af +ak +af +af +af +af +af +af +am +af +zh +Cq +af +zh +af +af +af +zh +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +af +af +ao +af +af +af +ak +af +af +af +am +af +af +vH +af +am +af +af +fq +af +af +af +ag +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(110,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +fq +af +af +af +am +lS +iY +iY +kt +af +af +af +ak +af +af +af +af +af +al +af +af +af +af +af +fq +af +af +af +af +af +af +al +af +am +af +af +af +af +af +af +ak +af +af +af +am +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +fq +af +af +af +am +af +af +ae +ae +ae +ae +ae +af +af +ag +af +af +af +mZ +af +af +af +af +af +jc +af +sf +af +af +af +af +af +am +af +af +af +af +af +af +am +yv +af +af +af +af +Aa +Aa +zD +Aa +Aa +af +ag +af +Aa +Aa +zD +Aa +Aa +ag +af +af +Bn +zh +zh +zh +yN +af +af +ao +am +af +ao +af +af +af +af +af +zh +af +af +zh +af +af +af +zh +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +Co +af +af +af +af +af +ao +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +fq +am +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(111,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +af +af +ak +af +ko +af +af +af +af +af +af +af +af +af +af +af +ak +af +am +am +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +am +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +fq +af +af +af +af +fq +am +af +af +af +af +af +af +af +am +am +af +ag +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +mZ +af +af +af +sf +wF +af +af +af +fq +af +af +af +af +af +af +fq +af +yv +yv +af +af +af +zZ +Aa +zD +zD +zD +Aa +Aa +af +zZ +Aa +zD +zD +zD +Aa +Aa +af +am +af +Bn +zh +yN +yN +af +af +af +af +af +af +af +af +af +af +af +af +af +af +zh +af +af +af +af +Cr +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +af +af +af +af +af +am +af +af +af +af +af +fq +af +af +af +af +af +af +am +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(112,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +am +af +lS +iY +iY +kt +af +af +fq +af +af +af +af +af +am +af +af +af +af +am +am +af +af +af +af +af +af +af +fq +am +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +fq +af +af +af +af +af +af +fq +am +af +vO +af +af +ai +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +wB +wC +af +af +am +af +af +af +am +af +fq +af +af +af +af +yv +af +am +af +ag +Aa +zD +zD +zD +zD +zD +Aa +af +Aa +zD +AA +zD +zD +zD +Aa +af +af +ak +af +Bn +yN +yv +af +ao +af +am +af +af +af +af +ao +af +af +am +af +af +zh +af +Co +af +af +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +af +af +af +af +af +af +af +am +af +af +af +af +af +am +am +af +af +fq +am +af +af +fq +am +af +al +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(113,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +ko +fq +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +fq +af +af +af +af +af +ak +af +tN +tN +tN +tN +tN +tN +tN +am +af +af +af +af +af +af +af +af +af +af +af +af +ag +tG +vV +vV +vV +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +ag +af +af +af +ag +af +af +af +ag +af +yv +af +af +af +af +Aa +zD +AA +AI +zD +zD +Aa +am +Aa +zD +zD +AI +zD +zD +Aa +ag +af +fq +am +af +yv +yv +af +af +af +af +af +af +am +af +af +af +af +am +af +af +zh +af +af +af +Cq +af +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +ao +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +ak +af +ak +af +af +af +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(114,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +ko +af +af +af +af +af +af +af +af +af +af +af +af +af +af +fq +af +af +af +fq +af +af +ak +af +af +af +af +af +af +ak +af +af +af +fq +af +af +af +af +af +af +af +af +af +fq +af +am +af +af +tN +tN +tN +tN +tN +tN +tN +af +fq +am +af +af +af +fq +af +am +ag +ae +ae +ae +ae +aj +tI +vZ +tI +tI +tI +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +yv +af +af +fq +af +Aa +zD +zD +zD +zD +zD +Aa +am +Aa +zD +zD +zD +zD +zD +Aa +af +af +af +ag +af +yv +af +af +af +af +af +af +af +af +af +af +af +Cr +af +af +af +zh +af +af +af +af +af +AJ +zh +zh +zh +AJ +zh +zh +zh +AJ +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +Ct +af +af +EY +af +af +af +fq +af +af +af +af +af +af +af +af +af +am +fq +am +af +am +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(115,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ku +iY +kt +af +al +af +af +af +af +al +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +af +af +al +af +ag +ae +ae +ae +ae +ae +ae +ae +aj +tI +tI +tI +wa +vZ +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +am +af +yv +ag +af +af +af +Aa +Aa +zD +zD +AV +Aa +Aa +af +Aa +Aa +zD +zD +BM +Aa +Aa +ae +ae +ae +ae +ae +yv +af +af +af +af +ao +af +af +af +af +ag +af +af +af +ag +af +zh +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +zh +zh +zh +zh +zh +zh +zh +zh +zh +af +zh +af +af +af +af +af +af +af +af +am +am +af +fq +af +af +fq +af +af +af +am +sf +FF +af +am +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(116,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +am +af +af +af +al +af +af +af +af +af +af +af +tr +af +af +ag +af +af +af +fq +af +af +af +af +af +ag +af +af +af +af +af +af +af +ag +af +af +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +eM +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tI +wa +tI +tI +tQ +tI +tI +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +Aa +Aa +Aa +Aa +Aa +af +ag +af +Aa +Aa +Aa +Aa +Aa +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +zh +AJ +zh +zh +AJ +zh +zh +zh +af +ag +zh +af +af +af +af +fq +af +af +fq +af +af +af +af +am +af +af +am +am +Fr +am +FA +sf +am +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(117,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +af +af +am +af +af +af +af +af +af +af +af +af +fq +af +af +af +af +af +ae +ae +ae +ae +ae +af +af +ag +af +ak +af +af +ae +ae +ae +ae +ae +ag +ae +ae +ae +ae +ae +ag +af +af +tN +tN +tN +tN +tN +tN +tN +tN +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +vZ +tI +vJ +tI +tI +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +mZ +am +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +zh +af +af +ag +af +af +af +ag +af +af +af +ag +af +am +af +af +af +af +af +sf +FB +am +ag +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(118,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +fq +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +ak +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +ja +af +tN +tN +tN +tN +tN +tN +ag +am +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +wg +wh +tI +tI +wk +wk +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ak +af +af +af +af +vH +af +af +fq +ak +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(119,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +ak +af +af +af +af +af +af +fq +af +af +af +af +am +af +af +af +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tx +tx +tx +tx +tS +tx +tx +tx +tS +tG +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +aj +aj +aj +vQ +wh +wk +wk +wm +tI +wl +vQ +aj +ae +aj +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +fq +af +am +af +af +af +af +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(120,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +af +af +af +am +af +af +af +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +vP +vQ +vP +aj +aj +aj +vQ +wi +wk +wm +ii +tI +wq +wj +aj +aj +aj +wt +vQ +vQ +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +af +af +af +af +af +fq +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(121,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +mZ +af +af +af +af +af +af +af +af +af +af +af +af +ag +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +aj +aj +aj +aj +ae +ae +aj +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +vQ +vQ +vQ +vQ +aj +aj +aj +aj +aj +tI +tI +tI +tI +tI +tI +tI +aj +wu +vQ +ww +wv +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +fq +af +ag +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(122,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +al +af +am +af +af +af +af +fq +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tx +tx +tx +tx +tx +tx +aj +ae +ae +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +vP +vW +vQ +vQ +wf +aj +aj +aj +aj +aj +aj +aj +tI +aj +tI +tI +aj +vQ +ww +wy +ww +vQ +wA +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(123,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +af +af +af +af +af +af +ag +af +af +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +aj +tx +tx +tx +tx +tx +tx +aj +ae +ae +aj +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +vQ +vQ +vQ +vQ +aj +aj +aj +aj +aj +aj +aj +tI +aj +aj +tI +aj +wv +vQ +ww +vQ +vQ +wA +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(124,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +am +af +af +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +aj +aj +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +vQ +vQ +vP +aj +aj +aj +aj +aj +aj +aj +aj +aj +tI +tI +tI +wq +vQ +vQ +vQ +vQ +wA +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(125,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +af +ag +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +vQ +vQ +vQ +vQ +vQ +vQ +aj +aj +aj +aj +aj +aj +aj +aj +tx +tI +wl +vQ +aj +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(126,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +vF +vF +vF +ae +ae +ae +aj +aj +we +vQ +vQ +vQ +wj +vQ +wn +wn +aj +aj +aj +aj +aj +tx +tI +wl +vQ +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(127,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tx +ty +tx +tx +tx +tx +tx +tx +tx +tx +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +vF +vF +vF +vI +vF +ae +ae +ae +ae +aj +aj +vQ +vQ +wi +tI +wl +vQ +vQ +aj +aj +aj +aj +aj +aj +tI +wl +vQ +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(128,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +tx +tx +tx +tx +tx +aj +aj +aj +aj +aj +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +vF +vF +vF +vF +vF +vF +ae +ae +ae +ae +ae +aj +aj +aj +aj +tI +wl +vQ +wo +tI +tI +aj +aj +aj +aj +tI +wl +wz +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(129,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +aj +aj +aj +ae +ae +ae +ae +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +vF +vI +vF +vF +vF +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +tI +tI +tI +tI +tx +tI +tI +tI +wl +wz +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(130,1,1) = {" +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +aj +tx +tx +tx +tx +tx +tx +tx +tx +tx +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +vF +vF +vF +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aj +aj +aj +wr +ws +tx +tx +tI +tI +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +"} +(131,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +tE +tE +tE +tE +tE +tE +tE +tE +tE +tE +tE +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +tE +tE +tE +tE +tE +tE +tE +tE +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(132,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(133,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(134,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(135,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(136,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(137,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(138,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bg +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(139,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(140,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(141,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(142,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(143,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(144,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(145,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(146,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eK +eK +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(147,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eK +eK +eJ +eK +eK +eK +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tH +tH +oZ +oZ +tV +oZ +oZ +tH +tH +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eL +eJ +eJ +eJ +eJ +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(148,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eK +eK +gc +il +gc +gd +eK +eJ +gc +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +tH +tH +eJ +eJ +oZ +tH +oZ +oZ +oZ +tH +tH +vl +tO +tH +tH +tH +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +eJ +eJ +eJ +eL +eJ +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(149,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +gc +gc +gV +gV +gc +gc +eK +eK +eJ +eK +eK +eK +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eK +eJ +eJ +eK +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tH +oZ +oZ +tV +tH +tH +oZ +oZ +oZ +tL +oZ +oZ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oY +oZ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +eJ +eJ +eJ +eJ +fr +eJ +eL +eJ +eJ +eJ +eJ +fr +eJ +eJ +eJ +eJ +eJ +eL +fr +eJ +eJ +eJ +eJ +eJ +fr +fr +eJ +eJ +eL +eJ +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(150,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eK +eJ +gU +hF +im +gc +gc +gc +eK +gc +eK +eK +eK +eK +eK +eJ +eJ +eJ +eJ +eJ +eJ +oZ +gc +oZ +oZ +sX +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +tH +tO +oZ +tH +eJ +eJ +oZ +oZ +oZ +tO +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +tL +oZ +tH +oZ +oZ +oZ +eJ +ge +ge +ge +eJ +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +fr +fr +fr +eJ +eL +eJ +fr +fr +fr +eJ +eJ +eJ +eL +fr +eL +fr +eJ +eJ +eJ +eJ +fr +eL +eJ +eJ +eL +eL +fr +fr +fr +eJ +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +ge +eJ +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(151,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eK +eK +gd +gc +gc +gV +gU +gV +gc +eJ +eK +gc +eK +eK +eK +eK +eJ +eJ +eJ +eK +eJ +eK +oZ +oZ +gc +oZ +gc +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +tK +tH +eJ +eJ +eJ +eJ +eJ +eJ +oZ +tH +tH +oZ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +gW +eJ +ge +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +eJ +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +eJ +fr +eL +eJ +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +eJ +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +gW +oZ +oZ +gW +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(152,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eK +eK +gc +gc +gV +gc +gc +jO +gc +gc +gc +gc +gc +eK +eK +gc +eK +eK +eJ +gc +gV +oZ +gc +oZ +oZ +gc +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +tL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tH +tH +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +eJ +oY +oZ +tm +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eJ +fr +fr +eJ +eL +fr +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +eJ +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(153,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eK +eK +gc +gc +gc +gc +gc +gc +gV +gc +gc +gV +gc +gc +gc +eJ +eK +gc +gc +gV +oZ +gU +gc +gc +oZ +oZ +oZ +oZ +tm +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +tH +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +tO +oZ +tH +tH +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +eJ +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eL +eJ +eJ +eJ +eJ +fr +eJ +eJ +fr +fr +fr +eJ +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eL +eJ +fr +eJ +eJ +eJ +eJ +eJ +fr +eJ +eJ +eL +eJ +eJ +eJ +fr +eJ +eJ +eL +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eL +eL +eJ +eJ +eJ +eJ +eJ +tp +tp +tp +tp +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +gW +gW +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(154,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eK +eK +gc +gc +gd +gV +gc +gc +eK +ge +gc +gc +gU +gV +gV +gc +gc +gV +gc +oZ +oZ +gc +oZ +oZ +gc +sY +sY +oZ +oZ +oZ +oZ +fr +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tH +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +uw +oZ +oZ +uP +eJ +eJ +eJ +tH +tH +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eL +eJ +eL +eL +eJ +fr +eL +eL +eJ +fr +fr +eL +eL +eL +eJ +fr +eJ +eJ +eL +eJ +eJ +fr +fr +fr +fr +fr +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +eL +eJ +eJ +eJ +eJ +fr +fr +eJ +eL +eL +eJ +eJ +tp +tw +qi +qi +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +ge +gW +oZ +oZ +tm +oZ +gW +oZ +tm +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(155,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eK +ge +gc +gc +in +gc +gc +ge +ge +eK +gc +gc +ge +gc +gc +gc +gc +gV +gc +gc +gc +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +fr +fr +fr +fr +sY +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +sX +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oY +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +fr +eL +eL +fr +fr +fr +fr +fr +fr +fr +eL +eL +eL +fr +fr +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +eL +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +eL +eJ +tp +qi +tt +qi +tp +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +Ci +eJ +eJ +Ci +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +ge +ge +ge +ge +gW +oZ +oZ +oZ +gW +gW +gW +oZ +oZ +oZ +gW +ge +ge +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(156,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +gc +gV +gU +gc +gc +gc +eK +ge +gc +gc +gV +eK +eK +gc +eJ +gc +gc +gU +gV +gc +oZ +gc +eK +oY +eJ +eJ +eJ +oZ +oZ +oZ +oZ +fr +fr +fr +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tH +oZ +tH +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +eL +eL +fr +fr +fr +fr +eL +eL +eJ +eJ +eL +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +fr +fr +eJ +eL +tp +tp +tp +tp +tp +tv +tp +tp +tp +tp +tp +eJ +eJ +ge +ge +eJ +eJ +ge +ge +ge +oZ +ge +eJ +Ci +ge +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +gW +oZ +oZ +oZ +gW +gW +gW +oZ +oZ +oZ +oZ +ge +ge +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(157,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +gf +gc +gc +gV +gc +gc +gc +eK +lT +eK +eK +ge +gc +gc +gc +eK +qg +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eL +eL +oZ +oZ +oZ +fr +fr +fr +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +fr +fr +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +fr +fr +fr +fr +fr +fr +eJ +eL +fr +fr +eJ +eL +tp +qi +qi +tp +qi +qi +qi +tp +qi +tD +tp +eJ +eJ +eJ +ge +eJ +eJ +ge +ge +ge +Ci +ge +eJ +oZ +eJ +eJ +oZ +ge +eJ +EU +Ci +ge +eJ +eJ +oZ +eJ +eJ +eJ +eJ +ge +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +gW +oZ +oZ +oZ +gW +gW +gW +oZ +oZ +oZ +gW +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(158,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eK +eK +eJ +gc +hF +im +gV +gc +eK +gc +eK +eK +eK +eK +ge +eK +ge +eJ +gc +oZ +gc +oZ +gc +eK +eJ +eJ +eJ +eJ +fr +eL +eL +eJ +eJ +eL +oZ +fr +fr +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +sX +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eL +eL +eJ +eJ +eJ +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eL +eJ +eJ +eL +fr +eL +eJ +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +tp +qi +tt +tv +qi +tt +qi +tv +tt +qi +tp +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +oZ +eJ +eJ +oZ +eJ +eJ +oZ +ge +eJ +ge +oZ +ge +ge +ge +oZ +ge +eJ +eJ +ge +ge +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +tm +oZ +oZ +oZ +gW +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(159,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eK +eJ +gc +gc +gc +gU +eK +eK +eK +eK +eK +ge +eK +eK +ge +eK +oZ +gc +oZ +oZ +oZ +eJ +eJ +eJ +eL +fr +fr +fr +fr +eJ +eJ +eJ +oZ +fr +fr +fr +fr +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +tH +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +fr +eJ +eJ +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +tp +ts +qi +tp +qi +qi +qi +tp +qi +qi +tp +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +oZ +eJ +Cl +oZ +eJ +eJ +oZ +eJ +eJ +eJ +oZ +eJ +eJ +ge +oZ +ge +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +ge +ge +ge +ge +eJ +eJ +gW +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(160,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eK +eK +eK +gc +gc +gc +eK +eK +eK +eJ +eK +eK +ge +ge +eK +eJ +eJ +oZ +gc +oZ +gc +oZ +oZ +eL +eL +oZ +oZ +eL +fr +eL +eJ +oZ +oZ +fr +fr +fr +fr +oZ +oY +sY +oZ +oZ +sX +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +gW +eJ +eJ +eJ +tH +oZ +tH +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oY +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +oZ +eL +eJ +oZ +oZ +fr +fr +fr +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +eJ +eJ +fr +fr +fr +fr +eL +eJ +eJ +eL +eJ +tp +tp +tp +tp +tp +tv +tp +tp +tp +tp +tp +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +oZ +oZ +qi +oZ +oZ +oZ +oZ +eJ +eJ +Cl +oZ +eJ +ge +ge +oZ +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +oZ +oZ +oZ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(161,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eK +eK +eK +eJ +gc +gd +eK +eK +eK +eJ +ge +ge +ge +ge +ge +eJ +eJ +eK +eJ +gc +oZ +gc +oZ +fr +fr +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +oZ +oZ +oZ +oZ +oZ +oZ +tm +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +tH +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +tm +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +fr +fr +fr +fr +fr +fr +eL +eL +eL +eL +eL +fr +fr +fr +eL +eL +eJ +eJ +eJ +gW +eJ +eJ +fr +fr +eL +eJ +eJ +eL +eJ +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +tp +qi +tt +qi +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +oZ +oZ +qi +oZ +oZ +oZ +oZ +oZ +oZ +qi +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +gW +gW +ge +eJ +ge +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(162,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eK +eK +eK +eJ +ge +ge +eJ +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +oZ +gc +oZ +fr +fr +fr +fr +oZ +oZ +fr +fr +fr +fr +oZ +fr +oZ +fr +oZ +oZ +eL +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +sY +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +eJ +eJ +eJ +fr +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +ge +eL +ge +eL +eJ +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +eJ +eJ +eJ +eJ +fr +fr +eJ +eJ +fr +eJ +eJ +eL +eJ +eJ +tp +tw +qi +qi +tp +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +eJ +eJ +ge +oZ +eJ +Cl +oZ +eJ +eJ +oZ +oZ +qi +qi +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +ge +ge +ge +ge +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(163,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eK +eK +eJ +eJ +ge +eJ +eJ +ge +ge +eJ +eJ +eJ +eJ +eJ +eK +eJ +oZ +oZ +oZ +oZ +oZ +fr +fr +fr +fr +fr +fr +oZ +oZ +oZ +oZ +fr +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +ge +ge +ge +ge +eL +eL +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +eL +eJ +fr +fr +fr +eJ +eJ +eJ +tp +tp +tp +tp +tp +eJ +gW +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +Ci +eJ +eJ +oZ +eJ +ge +oZ +eJ +Cl +eJ +oZ +ge +ge +Cl +qi +qi +Cl +eJ +eJ +ge +eJ +eJ +eJ +ge +ge +eJ +ge +ge +ge +eJ +ge +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(164,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eL +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +fr +fr +fr +fr +fr +oZ +oZ +oZ +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oY +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tH +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +eJ +eJ +eL +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +oZ +oZ +eL +ge +eL +ge +eL +eL +eL +fr +fr +fr +fr +fr +eJ +eJ +eL +fr +eJ +eL +eJ +eJ +eJ +eJ +fr +eJ +eL +fr +eJ +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +oZ +eJ +eJ +oZ +eJ +ge +oZ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +ge +ge +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(165,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +fr +fr +fr +eJ +eJ +fr +eL +eJ +eJ +ge +ge +eJ +eJ +gW +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +fr +fr +fr +fr +fr +eL +fr +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +tH +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +eL +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +oZ +eL +eL +eL +eL +eL +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +eJ +fr +fr +fr +fr +eJ +eJ +eJ +fr +eJ +eJ +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +oZ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +ge +oZ +eJ +ge +eJ +oZ +oZ +oZ +oZ +oZ +oZ +Ci +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(166,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +fr +fr +fr +eJ +eL +fr +eL +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +eJ +oZ +rv +oZ +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +sY +sY +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tH +tH +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +sY +oZ +oZ +eJ +oZ +eJ +eJ +eL +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +oZ +oZ +oZ +eL +eL +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +oZ +ge +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(167,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eL +eL +eL +fr +eL +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +pA +fr +fr +fr +fr +fr +eL +eL +eJ +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tp +tp +tp +tp +tp +tp +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +tH +tH +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +oZ +eJ +eJ +eL +fr +eL +eL +eL +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +eL +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +Cl +qi +qi +Cl +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +Ci +ge +eJ +eJ +oZ +eJ +ge +ge +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(168,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eL +eL +eL +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +rS +sl +sD +sO +fr +fr +fr +fr +fr +fr +fr +eL +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tp +qi +qi +tz +qi +tp +oZ +oZ +oZ +oZ +tm +oZ +oZ +oZ +sX +oZ +oZ +eJ +eJ +eJ +eJ +tH +tH +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +sY +sY +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +fr +fr +fr +fr +fr +eL +eL +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +Ci +eJ +eJ +eJ +oZ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +FT +eJ +eJ +eJ +ge +ge +ge +ge +ge +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(169,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +fr +fr +eJ +eL +eJ +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +qi +rT +rV +sE +sO +fr +fr +fr +fr +fr +fr +fr +eL +eL +eL +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +tp +tp +tp +tw +qi +qi +qi +tp +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +uY +tH +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +oZ +oZ +eJ +gW +eJ +eL +fr +fr +eL +fr +eJ +eL +fr +fr +fr +fr +eL +eL +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +ge +oZ +oZ +oZ +oZ +oZ +Ci +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +Cl +qi +qi +Cl +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(170,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eL +eL +fr +fr +eJ +eJ +fr +fr +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +oZ +qi +rT +rV +sE +sO +fr +fr +fr +fr +fr +fr +fr +eL +eL +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tp +qi +tp +tp +tp +tp +tv +tp +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +uY +uY +eJ +eJ +oZ +oZ +oZ +oZ +tm +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +fr +fr +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +oZ +eJ +eJ +eJ +ge +Ci +oZ +oZ +oZ +oZ +eJ +eJ +ge +eJ +eJ +eJ +eJ +oZ +eJ +eJ +ge +eJ +ge +oZ +oZ +eJ +eJ +eJ +oZ +oZ +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(171,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eL +eL +fr +eL +fr +fr +fr +eJ +eL +fr +fr +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +pA +rw +rU +sm +sF +sP +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +tp +qi +qi +qi +tp +tz +qi +tp +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +sY +sY +oZ +oZ +oZ +oZ +uQ +tH +tH +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oY +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eL +eJ +eL +eL +fr +eJ +fr +fr +eJ +eJ +eL +eL +fr +eL +eJ +eJ +eJ +eJ +eJ +fr +eJ +eJ +eL +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +ge +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +Ci +ge +eJ +oZ +eJ +ge +oZ +eJ +eJ +eJ +ge +oZ +oZ +oZ +oZ +Ci +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(172,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eL +oZ +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +eJ +eJ +eJ +eJ +eJ +gW +gW +eJ +tp +qi +qi +tt +qi +qi +qi +tp +tp +tP +oZ +oZ +oZ +oY +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +tH +oZ +oZ +oZ +oZ +sY +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eL +fr +eJ +fr +fr +eL +eJ +eJ +eJ +fr +fr +fr +fr +eL +eJ +eL +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +Ci +ge +eJ +eJ +eJ +eJ +eJ +Cl +qi +qi +Cl +eJ +eJ +eJ +eJ +eJ +ge +oZ +ge +eJ +oZ +eJ +eJ +oZ +ge +eJ +eJ +ge +oZ +oZ +eJ +eJ +eJ +ge +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +Gd +Gx +GU +Gx +GU +GU +Gx +Gx +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(173,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +fr +eL +eJ +fr +fr +fr +fr +fr +eL +eJ +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tp +tp +qi +qi +tz +qi +qi +qi +qi +gx +gx +oZ +oZ +oZ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +sY +sY +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +sY +oZ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +eL +eL +eL +eJ +eJ +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +fr +eJ +eJ +eJ +fr +eJ +eJ +eJ +eL +fr +eJ +eJ +eL +eL +eL +fr +fr +fr +eL +eJ +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +ge +eJ +eJ +oZ +oZ +ge +eJ +eJ +eJ +eJ +eJ +ge +oZ +eJ +eJ +oZ +eJ +eJ +oZ +ge +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +Ge +Gy +GV +Hs +HJ +HL +Iz +GU +wE +wE +wE +wD +wD +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(174,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +eJ +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tp +qi +tz +tp +tv +tp +tp +tp +tp +tp +tp +oZ +oZ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +sY +sY +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eL +eL +eJ +eJ +eL +eL +fr +eJ +fr +eL +eL +eJ +eJ +eJ +eJ +eJ +eL +fr +eL +eJ +fr +fr +fr +eJ +eJ +eJ +eL +eJ +fr +fr +fr +fr +eJ +eJ +eL +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +Ci +eJ +eJ +ge +oZ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +ge +eJ +eJ +eJ +eJ +oZ +eJ +eJ +oZ +Cl +eJ +oZ +eJ +eJ +eJ +Cl +oZ +oZ +oZ +oZ +oZ +oZ +Ci +Ci +Ci +Ci +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +Gf +Gz +GW +Ht +HK +HL +IA +GU +IZ +Jk +wL +JV +wE +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(175,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +tp +qi +qi +tp +qi +qi +tz +qi +tp +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +eJ +fr +eJ +eJ +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +oZ +Cl +eJ +eJ +oZ +Cl +eJ +eJ +eJ +eJ +Cl +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +qi +oZ +oZ +oZ +oZ +oZ +qi +oZ +oZ +eJ +eJ +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +Gf +GA +GX +Hu +HL +HL +IB +Gx +IO +wL +wL +JW +wE +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(176,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eL +fr +eL +eJ +eJ +fr +fr +fr +eL +eJ +eJ +eL +fr +eL +eJ +eJ +oZ +oZ +oZ +oZ +oZ +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +eJ +eJ +eJ +eJ +tp +qi +qi +tp +qi +qi +qi +tD +tp +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +uR +oZ +oZ +oZ +vz +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +gW +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +fr +fr +eJ +eJ +eL +fr +eJ +eJ +eJ +eJ +fr +fr +fr +eL +eL +eL +fr +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +qi +qi +oZ +oZ +qi +qi +oZ +oZ +oZ +qi +qi +oZ +oZ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +qi +oZ +oZ +oZ +oZ +oZ +qi +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +Gg +GB +GY +Hv +HM +Ib +IB +IJ +Ja +wM +JA +JX +wE +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(177,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +fr +fr +fr +eJ +eL +fr +fr +fr +fr +fr +eJ +eL +fr +eL +eJ +oY +oZ +oZ +oZ +oZ +oZ +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +eJ +eJ +eJ +eJ +tp +ts +tu +tp +tp +tp +tp +tp +tp +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +uI +uZ +vm +uZ +uI +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +tm +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eL +eL +fr +fr +fr +eJ +eL +eJ +eJ +fr +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +ge +ge +eJ +oY +oZ +oZ +qi +oZ +oZ +oZ +Cx +qi +oZ +oZ +oZ +qi +oZ +eJ +eJ +eJ +eJ +eJ +Cl +qi +qi +eJ +eJ +ge +oZ +Cl +eJ +oZ +eJ +ge +oZ +Cl +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +Gd +GC +GC +GU +GC +Ic +GU +GU +Jb +wD +wD +wE +wE +wD +wD +wD +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(178,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eL +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +oZ +oZ +oZ +fr +fr +fr +fr +rV +fr +fr +fr +eL +eL +oZ +eL +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +tp +tp +tp +tp +eJ +eJ +eJ +eJ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tY +tZ +tY +tY +uF +vi +vt +vA +vG +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eL +fr +eJ +eL +fr +fr +eJ +fr +eJ +fr +eL +fr +eL +eJ +eL +eL +fr +fr +fr +eL +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +oZ +Ci +oZ +oZ +oZ +oZ +eJ +Cl +eJ +eJ +oZ +eJ +Cl +eJ +oZ +eJ +Cl +eJ +eJ +eJ +ge +ge +eJ +eJ +oY +qi +Cl +eJ +eJ +oZ +eJ +eJ +oZ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +xW +xW +xW +wT +Gh +wL +Gh +Id +IC +IK +Jc +Jl +JB +JY +Kg +Kg +KD +wD +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(179,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +fr +eJ +oZ +oZ +oZ +fr +fr +fr +fr +rV +fr +fr +oZ +eL +eL +eL +eL +fr +fr +fr +fr +fr +fr +fr +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tZ +ul +uJ +tY +va +vi +ul +uI +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +eJ +eL +fr +eJ +eJ +eJ +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +ge +eJ +oZ +ge +eJ +Ci +ge +eJ +oZ +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +Fv +FC +xW +xW +xW +wL +Gh +GD +GZ +xy +Gj +wL +wL +IL +Jd +Jm +JC +GZ +Gj +xy +xy +wD +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(180,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eL +eJ +fr +fr +fr +eJ +fr +fr +fr +fr +fr +eJ +eJ +eL +eL +oZ +oZ +fr +fr +fr +fr +fr +rV +fr +fr +oZ +eL +ge +eL +oZ +eL +fr +fr +fr +fr +fr +fr +eL +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +tY +tY +tZ +tZ +tY +tY +uD +tZ +tZ +vb +vn +vb +tY +tZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eL +eJ +eL +fr +eL +eJ +eJ +eJ +oZ +oZ +sY +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eL +fr +eJ +eJ +eJ +eJ +fr +eL +eJ +fr +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +oZ +ge +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +oZ +oZ +oZ +oZ +oZ +oZ +ge +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +Fw +FD +FG +FJ +FM +FU +Gi +GE +Ha +Hw +Hw +Hw +ID +IM +Ih +Jl +JD +wL +xy +Gj +xy +wD +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(181,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +fr +fr +fr +eJ +eL +fr +fr +fr +fr +fr +eL +fr +eJ +eJ +oZ +oZ +fr +fr +fr +fr +fr +rV +fr +fr +oZ +eL +gW +ge +eL +oZ +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +tZ +ub +ue +ue +tY +ul +uE +uE +uE +vc +vo +ul +vB +tY +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eL +eL +fr +fr +eJ +fr +fr +eJ +fr +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +eL +eJ +eL +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +ge +Ci +oZ +oZ +oZ +oZ +eJ +eJ +ge +eJ +oZ +ge +eJ +ge +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +Ci +ge +ge +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oY +oZ +oZ +Fk +oZ +oZ +VW +FH +wL +Lx +xy +Gj +xy +Hb +Hx +xy +Ie +wD +IN +wE +wD +wD +wD +JC +GZ +KE +wD +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(182,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +fr +fr +fr +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +eL +fr +fr +fr +fr +pA +rV +pA +fr +eL +eL +ge +eL +eL +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +tZ +uc +uf +uk +ur +ux +uF +ul +ul +vd +uF +vu +vC +tY +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +eL +fr +eJ +eL +fr +eJ +eJ +oZ +oZ +oZ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +sY +sY +oZ +oZ +sX +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +oZ +qi +Cl +eJ +eJ +eJ +oZ +ge +eJ +ge +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +Ci +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +sY +oZ +oZ +oZ +VW +wL +FK +Lx +xy +xy +wL +Gj +GZ +Gj +If +wD +IO +wE +Jn +Jn +wE +JC +Kp +KF +wD +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(183,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eL +fr +fr +eJ +fr +eJ +eL +fr +fr +fr +fr +fr +fr +fr +eJ +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +eL +eL +eL +eL +eL +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oY +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tZ +tY +tZ +tY +tZ +uy +uG +ul +uS +ve +tY +tZ +tZ +tY +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +oZ +fr +fr +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +fr +oZ +oZ +oZ +oZ +sY +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eL +fr +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +fr +eJ +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +Cl +qi +qi +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +ge +oZ +ge +ge +eJ +Cl +eJ +eJ +oZ +oZ +Cl +eJ +eJ +eJ +eJ +Cl +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +eJ +Cl +oZ +oZ +oZ +oZ +oZ +oZ +Fv +xW +xW +zI +xW +FV +ya +GF +xy +wL +xy +Ig +wD +IO +wD +Jo +wL +JZ +JC +GZ +xy +wD +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(184,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eL +fr +eL +eJ +eJ +eL +eL +fr +fr +fr +fr +fr +fr +fr +eJ +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +eL +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eL +eL +tY +ug +ul +tZ +ux +uF +uK +uF +un +vp +vv +vD +tZ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +eL +eJ +eJ +oZ +oZ +fr +oZ +oZ +oZ +sY +oZ +oZ +oZ +oZ +fr +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +AW +sY +oZ +oZ +oZ +AW +oZ +oZ +oZ +oZ +qi +oZ +oZ +eJ +ge +ge +eJ +eJ +Cl +oZ +oZ +oZ +sY +oZ +oZ +qi +sY +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +FL +xW +xW +xW +GG +wL +ya +ya +Ih +wD +IP +wD +Jp +JE +wD +Kh +Kq +KG +wD +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(185,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eL +fr +eL +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eL +eJ +eL +fr +tZ +ug +um +us +uz +uH +uL +uT +vf +tY +vw +vE +tZ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eL +eL +fr +eJ +eL +eJ +fr +eJ +eJ +eJ +eL +eJ +oZ +fr +fr +oZ +oZ +oZ +oZ +oZ +oZ +oZ +fr +fr +oZ +eJ +eJ +eJ +eJ +eJ +oZ +sY +sY +oZ +oZ +oZ +eJ +pA +eJ +eJ +eJ +eJ +fr +fr +fr +fr +eL +fr +fr +fr +fr +fr +fr +BO +BT +qi +qi +pA +eJ +eJ +eJ +oZ +oZ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +Cl +qi +AW +oZ +Ci +oZ +oZ +qi +oZ +oZ +oZ +oZ +qi +oZ +oZ +oZ +oZ +AW +oZ +oZ +oZ +oZ +oZ +oZ +sY +qi +qi +oZ +oZ +oZ +oZ +oZ +qi +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oY +Gk +GH +GN +Hy +GN +GH +GH +IO +wE +wD +wE +wE +wD +Kr +wD +wD +wE +wE +bh +bh +bh +bh +bh +bh +bh +"} +(186,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +fr +fr +eJ +fr +eL +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eL +fr +fr +fr +eJ +fr +tY +uh +un +tY +tZ +tZ +tZ +tY +vg +tZ +tY +tZ +tY +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +eL +eJ +eL +fr +fr +fr +fr +fr +fr +fr +oZ +oZ +oY +fr +fr +fr +fr +eJ +eJ +eL +fr +fr +eL +oZ +oZ +oZ +oZ +oZ +oZ +qi +sO +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +Bo +sD +qi +Cb +oZ +oZ +oZ +oZ +oZ +oZ +oZ +sY +oZ +ge +ge +eJ +sY +sY +oZ +eJ +ge +oZ +eJ +eJ +eJ +oZ +eJ +eJ +oZ +qi +Cl +eJ +ge +eJ +Cl +eJ +eJ +oZ +eJ +Cl +eJ +oZ +eJ +eJ +Cl +ge +EW +oZ +oZ +oZ +oZ +oZ +oZ +qi +eJ +ge +eJ +ge +eJ +Cl +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +FW +Gk +GI +Hc +Hg +HN +Ii +GN +IO +wL +wD +JF +JF +Ki +wL +GZ +wL +Gj +wD +bh +bh +bh +bh +bh +bh +bh +"} +(187,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +fr +fr +fr +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eL +eJ +eL +fr +eL +fr +tY +ui +uo +ut +uA +tY +uy +uE +vh +vq +vx +tY +eJ +eL +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +oZ +oZ +oZ +fr +eJ +eL +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +oZ +fr +fr +fr +fr +fr +fr +eJ +eL +eJ +fr +eJ +eJ +eJ +eJ +oZ +oZ +oZ +qi +zj +zk +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +BP +BP +Bo +BY +Cc +Aq +oZ +oZ +sY +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +qi +Cl +eJ +oZ +eJ +eJ +eJ +oZ +ge +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +Cl +qi +qi +Cl +eJ +eJ +Cl +eJ +ge +eJ +eJ +eJ +eJ +EW +oZ +oZ +oZ +oZ +oZ +oY +oZ +oZ +oZ +oZ +oZ +Gl +GJ +Hd +Hg +HO +Ij +GH +IO +wL +wD +JG +Ka +xO +Ks +Ka +KQ +KW +wE +bh +bh +bh +bh +bh +bh +bh +"} +(188,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eL +fr +eJ +eJ +fr +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eL +eJ +fr +fr +fr +fr +fr +tY +uj +up +uu +uB +tY +uM +uU +vi +ul +uF +tY +eL +eJ +eL +eJ +eJ +eJ +eL +fr +eL +eJ +oZ +oZ +oZ +oZ +oZ +fr +fr +fr +eL +eJ +fr +fr +fr +fr +fr +fr +eL +oZ +oZ +eJ +eL +eL +eJ +fr +fr +eL +fr +fr +fr +eJ +eL +fr +eJ +pA +yi +yi +yO +zk +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +pA +BD +fr +fr +fr +rV +rV +rV +Bo +Cd +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +qi +qi +eJ +eJ +oZ +ge +Cl +ge +oZ +eJ +Cl +oZ +oZ +oZ +oZ +oZ +eJ +ge +eJ +eJ +oZ +eJ +eJ +eJ +oZ +ge +eJ +eJ +eJ +eJ +eJ +oZ +oZ +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +EW +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +Gl +GJ +He +He +HP +Ik +GH +IO +wL +wE +JH +ND +ND +Kt +ND +ND +KX +wE +bh +bh +bh +bh +bh +bh +bh +"} +(189,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +fr +fr +eL +fr +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eL +eL +fr +fr +fr +fr +eJ +eL +tZ +tY +tY +tZ +tZ +tY +uN +uV +vj +vr +ul +uI +eL +fr +fr +eL +eL +eJ +fr +fr +fr +oZ +oZ +fr +oZ +fr +fr +fr +fr +fr +oZ +oZ +fr +fr +fr +fr +eL +eL +eJ +eJ +oZ +fr +fr +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +Ad +Ap +Ap +pA +oZ +rS +BE +fr +fr +rV +sn +rV +rV +rV +pA +eJ +eJ +eL +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +Cl +qi +oZ +sY +oZ +oZ +sY +Cx +oZ +oZ +sY +AW +oZ +oZ +ge +ge +ge +ge +ge +oZ +eJ +eJ +eJ +eJ +eJ +oZ +ge +eJ +eJ +eJ +eJ +eJ +oZ +oZ +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +Gl +GJ +Hf +He +HQ +Il +GH +IQ +wL +wE +JH +ND +ND +ND +ND +ND +KX +wE +bh +bh +bh +bh +bh +bh +bh +"} +(190,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +fr +fr +eJ +eJ +eJ +eL +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +sn +rV +fr +fr +fr +fr +fr +fr +fr +eL +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tm +oZ +eJ +eJ +oZ +oZ +eL +fr +eJ +fr +fr +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +uI +uO +uW +vk +vs +vy +uI +fr +fr +fr +eJ +eJ +eL +fr +fr +fr +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +oZ +oZ +eJ +oZ +eL +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +sn +rV +sn +rV +fr +fr +fr +fr +Ae +qi +qi +oZ +sY +Bx +BF +rV +rV +rW +fr +sG +rV +rV +eJ +eJ +eJ +fr +eJ +fr +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +oZ +oZ +oY +oZ +oZ +Cx +oZ +oZ +oZ +qi +oZ +ge +ge +ge +ge +ge +ge +oZ +ge +eJ +oZ +eJ +eJ +oZ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +Ci +oZ +oZ +oZ +ge +ge +ge +ge +eJ +eJ +ge +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +Gk +GK +Hg +Hz +HO +Im +GN +wL +wL +wE +JI +ND +ND +ND +ND +ND +KY +wE +bh +bh +bh +bh +bh +bh +bh +"} +(191,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +pA +rW +fr +sG +pA +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +oZ +oZ +fr +fr +fr +fr +fr +eL +eJ +fr +eL +eL +oZ +oZ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +fr +fr +fr +eJ +eJ +oZ +oZ +fr +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +oZ +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +fr +fr +fr +fr +pA +rV +rW +fr +zl +fr +sG +rV +rV +rV +rV +AK +AW +oZ +oZ +oZ +By +BG +fr +fr +rV +so +rV +fr +fr +fr +eJ +eL +fr +eL +fr +eL +eJ +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +oZ +Cl +ge +ge +oZ +Cl +eJ +ge +ge +ge +oZ +eJ +ge +Ci +ge +eJ +oZ +eJ +eJ +ge +ge +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +ge +ge +ge +ge +ge +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +tm +oZ +oZ +oZ +oZ +oZ +Gm +GJ +He +HA +HO +In +GH +wL +wL +wE +JH +ND +ND +ND +ND +ND +KX +wE +bh +bh +bh +bh +bh +bh +bh +"} +(192,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +so +rV +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +oZ +oZ +oZ +eL +fr +eJ +fr +fr +fr +fr +fr +eL +eL +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eL +fr +eJ +eJ +eJ +oZ +fr +fr +fr +fr +fr +fr +fr +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eL +eL +eJ +fr +fr +fr +fr +rV +so +rV +so +rV +fr +Ad +Ap +Ap +AL +oZ +oZ +oZ +oZ +oZ +At +fr +fr +fr +rV +fr +fr +fr +fr +eJ +fr +fr +fr +fr +eL +eJ +fr +eJ +eJ +eJ +eJ +eJ +eJ +ge +oZ +ge +eJ +oZ +eJ +eJ +eJ +oZ +eJ +eJ +ge +ge +ge +oZ +ge +eJ +oZ +eJ +eJ +oZ +ge +eJ +ge +ge +eJ +ge +ge +eJ +Cl +qi +qi +Cl +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +Cl +oZ +oY +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +Gm +GL +Hh +Hf +HO +Ik +GN +wL +wL +wD +JH +ND +ND +ND +ND +ND +KX +wD +bh +bh +bh +bh +bh +bh +bh +"} +(193,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eL +eL +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eL +eJ +eJ +eJ +eJ +oZ +oZ +oZ +eJ +eJ +eJ +oZ +oZ +oZ +eJ +eJ +eL +fr +fr +eL +eL +eJ +eL +eJ +fr +sX +oZ +oZ +oZ +oZ +oZ +oY +oZ +oZ +eL +eL +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eL +xV +fr +fr +fr +rV +fr +fr +fr +Ae +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +pA +fr +fr +fr +rV +fr +fr +fr +fr +eL +eJ +fr +eJ +eJ +eJ +eJ +fr +eL +eJ +eJ +eJ +fr +eJ +ge +oZ +ge +eJ +oZ +eJ +eJ +eJ +oZ +eJ +eJ +ge +ge +ge +oZ +ge +eJ +oZ +Cl +eJ +oZ +ge +Cl +ge +ge +ge +ge +ge +eJ +eJ +oZ +oZ +eJ +ge +ge +ge +ge +eJ +eJ +eJ +eJ +oZ +Fb +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +Gm +GJ +Hh +Hg +HR +Io +IE +wL +Je +wD +JJ +Kb +Kb +Ku +Kb +Kb +KZ +wD +bh +bh +bh +bh +bh +bh +bh +"} +(194,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +fr +fr +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +oZ +oZ +eL +eJ +eJ +eL +fr +fr +fr +fr +fr +eJ +eJ +eL +fr +oZ +oZ +oZ +oZ +oZ +oZ +fr +oZ +oZ +oZ +eL +fr +fr +eJ +oZ +fr +fr +fr +fr +fr +fr +oZ +eJ +eL +eJ +eL +fr +eJ +eL +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +fr +eL +wD +wD +wE +wE +wD +wD +xW +xW +xW +xW +eJ +eJ +eJ +eJ +pA +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eL +fr +fr +fr +rV +fr +fr +fr +fr +eJ +eJ +fr +eL +eJ +eL +fr +fr +fr +eJ +eJ +eJ +fr +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +oZ +oZ +oZ +oZ +oZ +qi +oZ +oZ +oZ +qi +oZ +oZ +oZ +oZ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +Ci +Ci +oZ +eJ +eJ +oZ +Fb +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +sX +oZ +FW +Gk +GM +Hi +Hh +HS +Ip +GN +wD +Jf +wE +wD +wE +wD +wD +wE +wE +wD +wD +bh +bh +bh +bh +bh +bh +bh +"} +(195,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +eL +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +fr +fr +fr +eJ +eL +oZ +fr +fr +eJ +oZ +oZ +oZ +fr +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +eL +eL +eJ +fr +oZ +fr +fr +fr +fr +oZ +fr +fr +fr +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eL +fr +eL +eJ +fr +fr +fr +eL +eL +eL +eJ +fr +fr +fr +fr +fr +fr +eJ +eL +eJ +fr +eJ +wE +xc +xq +xx +wL +wL +xX +yj +yw +xW +eJ +eJ +eJ +eJ +eJ +oZ +oZ +sX +oZ +oZ +eJ +eJ +eJ +fr +fr +fr +fr +rV +fr +fr +fr +fr +eJ +eL +fr +eL +fr +fr +fr +fr +fr +eJ +eJ +fr +fr +fr +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +oZ +oZ +oZ +oZ +oZ +oZ +qi +oZ +oZ +oZ +qi +oZ +ge +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +ge +ge +eJ +eJ +eJ +eL +eJ +oZ +Fb +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +hk +sl +Gk +GN +Hj +HB +GN +GH +GH +wL +Jg +wD +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(196,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +eJ +eL +fr +fr +fr +fr +fr +fr +eL +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +fr +fr +fr +oZ +oY +oZ +eJ +fr +fr +eL +fr +fr +fr +fr +fr +fr +fr +eL +sX +fr +fr +fr +oZ +oZ +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +fr +fr +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +eJ +eL +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eL +wD +xd +xr +xy +xG +xy +xX +yk +yx +wD +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eL +fr +fr +fr +fr +BQ +oZ +eJ +fr +fr +fr +eJ +fr +eJ +eJ +eJ +eJ +eJ +fr +eJ +eL +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +oZ +oZ +Cl +eJ +ge +eJ +Cl +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +eJ +oZ +Fc +Fe +Ff +oZ +oZ +oZ +oZ +oZ +oZ +oZ +ho +kK +Gn +GO +Hk +HC +Hk +Hk +Hk +Hk +Jh +wE +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(197,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +eL +eL +eJ +eL +fr +fr +fr +fr +fr +rV +fr +fr +oZ +eJ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +fr +oZ +oZ +fr +oZ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eL +fr +eL +eJ +eJ +fr +fr +fr +eJ +eL +fr +eJ +eL +fr +fr +fr +fr +fr +eJ +eL +eJ +eJ +wD +wE +wE +wE +xz +xH +xH +xY +wD +wE +wE +wE +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eL +eJ +eL +fr +fr +fr +fr +BR +eJ +eL +oZ +fr +fr +fr +fr +fr +fr +eL +eL +eJ +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +Cl +qi +qi +Cl +eJ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +fr +fr +eJ +oZ +oZ +oZ +oZ +Fc +Fe +Ff +oZ +oZ +oZ +oZ +oZ +By +xW +xW +xW +xW +xW +xW +xW +xW +xW +xW +xW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(198,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eL +fr +fr +fr +fr +fr +fr +eJ +oZ +pA +qh +qh +qh +qh +qh +sp +qh +pA +oZ +eJ +oZ +oZ +eL +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +oZ +oZ +oZ +eJ +eJ +eL +eJ +eL +fr +fr +fr +fr +fr +fr +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +fr +eL +eJ +eJ +fr +eJ +eJ +eL +fr +fr +fr +fr +fr +eJ +eJ +eJ +fr +fr +fr +eL +fr +eL +eJ +eJ +eJ +wD +wT +xe +xs +xA +xI +xN +wL +yl +xN +yP +wD +eJ +eJ +eJ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +oZ +sE +eJ +eL +eL +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +fr +fr +eJ +eJ +eL +eJ +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +oZ +oZ +ge +eJ +eJ +ge +eJ +eJ +Cl +eJ +ge +eJ +Cl +qi +qi +Cl +eJ +eJ +eJ +eJ +eJ +eL +fr +eJ +oZ +oY +oZ +fr +oZ +oZ +Fc +Fe +Ff +oZ +oZ +oZ +oZ +Cb +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(199,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eL +fr +fr +fr +fr +fr +fr +eL +oZ +oZ +qi +qi +qi +qi +qi +qi +qi +oZ +oZ +oZ +oZ +oZ +oZ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +oZ +oZ +oZ +oZ +eL +fr +fr +fr +fr +fr +fr +eL +fr +eL +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +eL +eJ +fr +eL +eL +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +eL +fr +eJ +eJ +eJ +eJ +wE +wU +xf +xt +xB +xJ +xO +xZ +ym +yy +yQ +wE +eJ +eJ +eJ +oZ +Aq +qi +pA +eJ +eJ +eL +eJ +eJ +fr +fr +fr +oZ +sE +eL +eL +eL +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +ge +eJ +eJ +eJ +ge +eJ +oZ +oZ +eJ +eJ +oZ +oZ +ge +eJ +eJ +oZ +oZ +oZ +qi +oZ +Aq +oZ +EX +oZ +oZ +eL +fr +eJ +eJ +fr +eJ +eJ +fr +eL +oZ +oZ +oZ +fr +fr +oZ +oZ +oZ +Fb +oZ +oZ +oZ +oZ +Cb +fr +fr +fr +rV +sn +rV +fr +fr +fr +eJ +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(200,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +gW +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +eL +eJ +eL +eJ +oZ +eJ +qE +qi +qi +qi +sq +qi +oZ +oZ +sX +rv +oZ +oZ +fr +fr +eL +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +fr +eL +oZ +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +oZ +oZ +oZ +oZ +fr +eL +eL +eL +eJ +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +eJ +eJ +eL +eL +eJ +eJ +fr +eL +eL +eJ +eJ +eJ +eJ +eJ +wE +wV +xg +ND +ND +ND +xP +ND +ND +yz +yR +wD +wE +wD +xW +Af +qi +qi +At +fr +eJ +eJ +eJ +eL +eJ +fr +fr +fr +Bo +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +oZ +oZ +oZ +oZ +Ci +oZ +oZ +oZ +eJ +ge +oZ +oZ +eJ +eJ +oZ +oZ +oZ +oZ +qi +fr +fr +EV +qi +fr +fr +eL +fr +fr +eL +fr +eL +eJ +fr +fr +fr +oZ +oZ +fr +oZ +oZ +oZ +oZ +Fb +oZ +oZ +oZ +oZ +Cc +rV +rV +rV +rW +fr +sG +rV +rV +Ji +Jq +eL +eL +eL +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(201,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +eJ +fr +eJ +fr +eJ +eJ +eJ +eJ +oZ +oZ +pa +rc +rx +rc +pa +eJ +eJ +oZ +oZ +oZ +oZ +fr +fr +oZ +eJ +eJ +sX +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +fr +fr +eL +eL +fr +fr +fr +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +oZ +oZ +fr +fr +fr +fr +oZ +oZ +fr +fr +fr +eJ +eJ +eL +eJ +eJ +eJ +tp +tp +tp +eJ +fr +fr +fr +eJ +eL +eL +eL +eL +eL +eJ +eL +fr +fr +fr +eL +eJ +eJ +eJ +eJ +wD +wW +xg +ND +ND +ND +ND +ND +ND +yA +wM +zm +zv +zG +zR +qi +qi +Ar +zk +fr +eJ +eJ +eJ +eL +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +fr +fr +fr +fr +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +oZ +oZ +eJ +eJ +oZ +oZ +eJ +ge +Cl +eJ +fr +eJ +Cl +oZ +fr +oZ +fr +fr +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +oZ +oZ +fr +fr +Fb +oZ +oZ +oZ +oZ +Cb +qi +fr +fr +rV +so +rV +fr +fr +sE +qi +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(202,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eL +fr +eJ +fr +eL +eJ +eJ +eJ +oZ +oZ +pa +pG +ry +pG +ow +eJ +eJ +eJ +eJ +oZ +oZ +fr +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eL +eL +fr +eJ +eL +fr +fr +fr +eJ +eL +eJ +fr +fr +eJ +eL +oZ +oZ +oZ +oZ +fr +fr +oZ +oZ +oZ +fr +oZ +oZ +oZ +fr +oZ +oZ +oZ +fr +fr +fr +fr +oZ +fr +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +tp +tz +tp +eJ +fr +fr +eL +eJ +eL +eL +eL +fr +fr +fr +fr +fr +eJ +eJ +eJ +wD +wD +wE +wD +wP +wX +xg +ND +ND +ND +ND +ND +ND +yB +xy +zn +wL +wL +zS +qi +qi +At +fr +fr +eJ +eJ +eJ +rT +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +fr +eJ +eJ +eJ +eJ +ge +eJ +eJ +Cl +qi +qi +Cl +eJ +oZ +oZ +eJ +Cl +qi +qi +oZ +oZ +oZ +oZ +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +fr +fr +fr +fr +oZ +oY +fr +oZ +Fb +oZ +oZ +oZ +Cl +Cl +eJ +eL +fr +fr +rV +fr +fr +fr +sE +qi +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(203,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +eL +eL +eJ +eJ +eJ +eJ +oZ +gg +qF +rd +rz +rX +ox +eJ +eJ +eJ +eJ +eJ +eJ +eL +oZ +oZ +oZ +oZ +oZ +oZ +oZ +fr +eL +fr +eJ +eJ +eJ +fr +fr +eL +eL +eL +fr +fr +fr +oZ +oZ +oZ +oZ +fr +fr +oZ +oZ +fr +fr +fr +oZ +oZ +fr +fr +fr +oZ +oZ +oZ +fr +fr +fr +fr +fr +fr +eJ +eL +eL +eJ +eJ +eJ +eJ +tp +qi +tp +tp +fr +fr +tp +eJ +eL +eL +eL +eL +eL +eJ +eL +fr +fr +eL +eJ +wE +wG +wK +wO +wP +wW +xh +wW +ND +ND +ND +ND +ND +yB +xy +zn +wL +wL +zS +qi +Ar +zk +fr +fr +eJ +eJ +sD +rT +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +fr +eJ +fr +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +oZ +oZ +eJ +eJ +oZ +qi +Cl +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +fr +eJ +oZ +fr +fr +fr +fr +fr +fr +oZ +Fc +Fe +Fe +Fe +Cl +eJ +eJ +eL +fr +fr +rV +fr +fr +fr +sE +qi +qi +qi +eL +eJ +fr +fr +eL +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(204,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eL +eJ +eJ +ow +pa +pa +pa +pa +re +rA +re +ow +ox +ox +ow +ox +ow +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +eJ +eJ +eL +fr +eJ +eJ +eJ +eL +eL +fr +fr +oZ +oZ +oZ +oZ +fr +oZ +oZ +oZ +oZ +fr +oZ +oZ +oZ +fr +oZ +oZ +oZ +fr +fr +oZ +oZ +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +tp +qi +qi +qi +fr +fr +tp +eJ +eJ +eL +eL +eL +eL +eJ +eL +fr +eJ +eJ +eJ +wE +wH +wL +wL +wP +wW +xh +wW +wW +ND +ND +ND +ND +yC +yS +zm +zw +zH +zR +qi +As +rV +rV +rV +rV +Bh +Bo +Bz +fr +eJ +eJ +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +eJ +eJ +oZ +oZ +ge +eJ +oZ +oZ +eL +eL +fr +fr +fr +fr +oZ +oZ +eJ +fr +eL +eL +fr +eJ +eL +eL +fr +eL +oZ +oZ +fr +oZ +fr +fr +fr +oZ +oZ +sX +oZ +oZ +eJ +eJ +eJ +eJ +fr +rV +sn +rV +fr +fr +sE +qi +qi +qi +eL +eJ +eJ +fr +eL +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(205,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ox +pb +pB +qk +pE +qH +rB +rY +sr +pG +ow +sZ +sZ +ox +eJ +eJ +eJ +eJ +oZ +oZ +oZ +eJ +eJ +fr +fr +fr +eJ +eJ +eJ +eL +fr +fr +fr +eJ +eJ +eJ +fr +fr +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +fr +fr +fr +fr +oZ +oZ +oZ +oZ +oZ +oZ +oZ +sX +oZ +oZ +fr +eL +eL +eL +eJ +eL +eJ +eJ +eJ +tp +qi +qi +fr +fr +fr +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +wD +wI +wM +wM +wR +wY +xi +wW +wW +wW +ND +ND +ND +yD +yT +wE +xW +zI +xW +Af +At +fr +fr +fr +fr +fr +rV +fr +rV +sn +rV +fr +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +ge +eJ +eJ +eJ +oZ +oZ +eJ +eJ +oZ +oZ +eJ +eJ +fr +oZ +eL +fr +fr +fr +eL +Cl +qi +qi +fr +fr +eL +fr +fr +eJ +eJ +fr +fr +eL +eJ +oZ +fr +oZ +fr +fr +fr +fr +oZ +eJ +eJ +eJ +pA +rV +rV +rV +rV +rW +fr +sG +rV +rV +Bo +sl +sl +sl +sl +eJ +eJ +fr +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(206,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ox +pc +pC +pD +qG +rf +qH +qH +ss +rf +sQ +pG +rX +ox +eJ +eJ +eJ +oZ +oZ +eJ +eJ +eJ +eL +eL +fr +fr +eL +eJ +eJ +fr +fr +eJ +eL +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +fr +fr +oZ +oZ +fr +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +fr +fr +fr +fr +eJ +eJ +tp +tp +tp +tp +tp +qi +fr +fr +tp +tp +tp +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +wE +wJ +wN +wL +wP +wZ +xj +xu +xu +xu +xQ +xQ +xQ +yE +yQ +wE +eJ +zJ +zT +yi +zk +fr +fr +fr +fr +fr +rV +rV +rW +fr +sG +rV +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +Ci +Ci +oZ +oZ +oZ +oZ +oY +eJ +eJ +ge +eJ +eJ +eJ +fr +fr +fr +fr +fr +eL +eL +eJ +oZ +oZ +eJ +eJ +eJ +fr +Cl +qi +qi +Cl +fr +eJ +fr +fr +fr +oZ +oZ +fr +fr +fr +fr +fr +eJ +eJ +eL +fr +fr +fr +fr +rV +so +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eL +bh +bh +bh +bh +bh +bh +bh +"} +(207,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ow +pd +pD +pD +pE +rg +qH +rZ +ss +ql +ow +ta +th +ow +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eJ +eJ +eL +eJ +tp +tp +tp +tp +eJ +oZ +oZ +oZ +oZ +oZ +oY +oZ +oZ +oZ +oZ +oZ +oZ +fr +oZ +oZ +oZ +oZ +oZ +tm +oZ +eJ +eJ +eL +eJ +eJ +fr +eJ +eL +eJ +tp +qi +qi +tp +qi +qi +qi +qi +tp +qi +fr +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +wD +wE +wE +wP +wP +wW +wW +wW +wW +wW +wW +ya +ya +ya +wL +xW +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +rV +so +rV +fr +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +eJ +qi +qi +Cl +eJ +eJ +eJ +eJ +Cl +oZ +oZ +fr +fr +fr +fr +fr +eJ +oZ +oZ +oZ +oZ +oZ +fr +eJ +oZ +oZ +eJ +eJ +eJ +fr +oZ +fr +oZ +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +fr +fr +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(208,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +ox +ox +pE +pE +pE +pE +rC +sa +ss +ql +ox +ow +ox +ow +eJ +eJ +eJ +oZ +eJ +eJ +eJ +tp +tp +tp +tp +tp +tp +eJ +eJ +eJ +eJ +eJ +tp +tz +tD +tp +eJ +eJ +eJ +oZ +oZ +oZ +oZ +tm +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eL +eJ +eL +eL +eL +eL +eJ +tp +fr +qi +tv +qi +tz +tp +qi +tp +qi +tz +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +wE +wP +wD +wP +wP +wP +wD +wD +wE +wE +wE +xW +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +fr +fr +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +Cl +qi +oZ +oZ +oZ +oZ +oZ +qi +qi +oZ +fr +fr +fr +fr +eL +fr +eJ +oZ +oZ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eL +fr +fr +oZ +oZ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +eJ +fr +fr +eL +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(209,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ow +pe +pF +pG +qH +rh +qH +sb +ss +rf +pE +tb +ti +ow +eJ +eJ +eJ +eJ +eJ +eJ +gW +tp +tw +tw +qi +qi +tp +tp +tp +tp +eJ +gW +tp +qi +qi +tp +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +tm +oZ +oZ +oZ +oZ +oZ +oY +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +tp +qi +qi +tp +qi +fr +tp +qi +tp +qi +tp +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eK +eK +eK +eJ +eJ +eJ +eJ +eJ +eL +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +eL +fr +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +fr +fr +eJ +eJ +eJ +eJ +eJ +oZ +Aq +oZ +oZ +oZ +qi +oZ +oZ +fr +fr +eJ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +fr +oZ +oZ +oZ +fr +eJ +eL +eL +eL +eJ +eL +eJ +fr +eL +eL +fr +fr +fr +fr +eJ +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(210,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ox +pf +pG +ql +qH +qH +qH +qH +ss +pG +sR +pG +tj +ox +eJ +tp +tp +tp +tp +tp +tp +tp +qi +tz +qi +tt +qi +qi +qi +tp +tp +tp +tp +tp +tv +tp +tp +tp +tp +tp +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tp +tz +qi +tp +qi +qi +tp +qi +fr +qi +tD +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eK +eK +eK +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +rV +fr +fr +fr +eJ +fr +fr +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +fr +fr +eL +eJ +fr +eJ +eJ +eJ +oZ +ge +ge +oZ +Cl +eJ +oZ +fr +eJ +eJ +eJ +eJ +eJ +eJ +qi +qi +Cl +eJ +eJ +eJ +Cl +qi +qi +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +fr +eJ +eJ +eJ +eJ +eL +eJ +eJ +fr +eJ +eL +fr +fr +fr +eJ +eL +eJ +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(211,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ow +pg +pg +qm +qI +ri +qH +qH +st +rf +ow +tc +tk +ox +eJ +tp +ts +tu +tp +tw +tw +tp +qi +qi +qi +qi +tz +qi +qi +qi +qi +qi +qi +qi +qi +qi +qi +qi +qi +tR +tR +qi +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +tp +tp +tp +tp +tv +tp +tp +tp +tp +tp +tp +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +rV +sn +rV +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +Ad +Bp +qh +pA +eL +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +oZ +eJ +eJ +oZ +eJ +fr +fr +fr +eL +fr +eJ +eJ +eJ +Cl +qi +oZ +oZ +oZ +oZ +oZ +oZ +oZ +qi +Cl +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +oZ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +eL +eL +eJ +eL +fr +fr +fr +fr +fr +fr +fr +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(212,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ow +ox +ox +pE +pE +ow +ow +pE +su +ox +ox +ox +ow +ow +eJ +tp +qi +qi +tp +qi +qi +tp +qi +tp +tp +tp +tp +tp +tp +tp +tp +tp +tp +tv +tp +tp +tp +tv +tp +tp +tp +tp +tp +oZ +oZ +oZ +oZ +oZ +oZ +oZ +tm +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +eJ +eJ +eJ +eJ +tp +qi +qi +tD +tp +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +pA +rW +fr +sG +rV +rV +rV +rV +rV +rV +rV +rV +rV +rV +rV +Bi +qi +qi +BH +eJ +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +eL +fr +ge +oZ +eL +eJ +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +fr +oZ +oZ +oZ +eJ +eJ +eJ +eJ +fr +eL +fr +fr +fr +fr +fr +fr +eL +fr +fr +fr +fr +fr +eL +eJ +fr +eL +bh +bh +bh +bh +bh +bh +bh +"} +(213,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +pE +rD +pG +rz +ox +eJ +eJ +eJ +eJ +gW +tp +qi +tt +tp +qi +qi +tp +qi +tp +qi +qi +tw +tp +eJ +eJ +tp +qi +qi +qi +tp +eJ +tp +qi +qi +qi +tp +gW +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +eJ +eJ +tp +tz +qi +ts +tp +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eJ +eL +eL +eL +rV +so +rV +fr +fr +fr +rV +fr +fr +fr +fr +fr +fr +oZ +Ae +qi +qi +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +oZ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +sX +oZ +oZ +eJ +eJ +eL +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +eL +bh +bh +bh +bh +bh +bh +bh +"} +(214,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ox +rE +sc +sv +ow +eJ +eJ +eJ +eJ +eJ +tp +tt +qi +tp +tv +tp +tp +qi +tp +qi +qi +tz +tp +eJ +eJ +tp +qi +qi +qi +tp +gW +tp +qi +qi +qi +tp +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +tp +tp +tp +tp +tp +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +ge +ge +ge +eJ +eJ +eJ +eJ +eL +eL +eL +eL +fr +eL +fr +fr +fr +fr +eJ +eJ +eL +eL +eJ +fr +rV +fr +fr +fr +eL +fr +oZ +eJ +pA +eJ +eJ +eJ +eL +eJ +eL +fr +fr +fr +fr +eL +eJ +fr +eJ +eL +eJ +eL +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +ge +oZ +eJ +ge +oZ +eJ +eJ +Ci +ge +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +fr +oZ +fr +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(215,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +ow +rF +sd +ow +ox +eJ +eJ +eJ +eJ +eJ +tp +qi +qi +tv +qi +qi +qi +qi +tv +qi +tp +tp +tp +eJ +eJ +tp +qi +qi +tp +tp +eJ +tp +tp +qi +qi +tp +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eL +eL +eL +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +fr +fr +fr +rV +fr +fr +fr +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +fr +fr +fr +fr +eJ +fr +fr +eJ +fr +eJ +fr +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +oZ +eJ +eJ +oZ +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +fr +fr +eJ +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eJ +oZ +sX +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(216,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ox +ox +ox +ow +eJ +eJ +eJ +gW +eJ +eJ +tp +qi +qi +tp +qi +tt +qi +tp +tp +tp +tp +eJ +eJ +gW +eJ +tp +tz +tD +tp +eJ +eJ +eJ +tp +tD +tz +tp +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eL +eL +eL +eL +eJ +fr +eJ +eL +fr +fr +fr +fr +fr +fr +fr +fr +eL +eJ +fr +eL +eJ +fr +fr +fr +eJ +gW +eJ +eJ +eJ +eL +fr +eJ +fr +eJ +eJ +eL +fr +eJ +eL +fr +eJ +fr +eJ +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +ge +fr +fr +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +oZ +eJ +ge +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +fr +fr +oZ +fr +fr +eL +fr +fr +fr +fr +fr +eJ +eL +eL +eJ +eJ +oZ +oZ +oZ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(217,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tp +tp +tp +tp +qi +qi +qi +tp +eJ +gW +eJ +eJ +eJ +eJ +eJ +tp +tp +tp +tp +eJ +eJ +eJ +tp +tp +tp +tp +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +ge +eJ +eJ +eJ +eJ +eL +eL +eJ +eL +eJ +eJ +fr +eL +fr +fr +fr +eJ +fr +eL +eJ +fr +fr +eJ +eJ +fr +eJ +eJ +eJ +eJ +eJ +eL +fr +fr +fr +eL +fr +eL +fr +fr +fr +eL +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +eL +eJ +fr +fr +eJ +fr +fr +fr +fr +fr +fr +eJ +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +Ci +eJ +eJ +ge +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +oZ +fr +oZ +oZ +oZ +oZ +oZ +oZ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +Aq +La +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(218,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +tp +tp +tp +tp +tp +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +gW +eJ +eJ +gW +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +ge +ge +ge +ge +ge +ge +eJ +eJ +ge +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +fr +eL +eL +eL +eJ +eJ +fr +eJ +eJ +fr +fr +eJ +eJ +eJ +eJ +eJ +eJ +eL +eL +eJ +eJ +fr +eJ +fr +fr +fr +eJ +eJ +fr +eJ +fr +eJ +eL +eJ +fr +fr +fr +fr +fr +fr +fr +fr +eJ +eL +eJ +fr +fr +fr +eJ +eJ +eL +eL +eL +eJ +eJ +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +oZ +sX +oZ +oZ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(219,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eL +eL +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +fr +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eL +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +ge +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +bh +bh +bh +bh +bh +bh +bh +"} +(220,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(221,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(222,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(223,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(224,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(225,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(226,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +bh +"} +(227,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(228,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(229,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(230,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(231,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(232,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(233,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(234,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(235,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(236,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(237,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(238,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(239,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(240,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(241,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(242,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(243,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(244,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(245,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(246,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(247,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(248,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(249,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(250,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(251,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(252,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(253,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(254,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(255,1,1) = {" +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} diff --git a/_maps/RandomZLevels/VR/syndicate_trainer.dmm b/_maps/RandomZLevels/VR/syndicate_trainer.dmm new file mode 100644 index 0000000000..be4a8a2d53 --- /dev/null +++ b/_maps/RandomZLevels/VR/syndicate_trainer.dmm @@ -0,0 +1,19095 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/open/space, +/area/space) +"ab" = ( +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/maint) +"ac" = ( +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/cafe) +"ad" = ( +/turf/closed/indestructible/fakeglass, +/area/awaymission/centcomAway/cafe) +"ag" = ( +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"ai" = ( +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aj" = ( +/obj/machinery/vending/cigarette, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"al" = ( +/obj/machinery/vending/dinnerware, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"am" = ( +/obj/structure/closet/chefcloset, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"ao" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"ap" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aq" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"ar" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/kitchen/rollingpin, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"as" = ( +/obj/structure/table, +/obj/item/reagent_containers/glass/beaker, +/obj/item/reagent_containers/food/condiment/enzyme, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"at" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"au" = ( +/obj/machinery/hydroponics, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"av" = ( +/obj/item/reagent_containers/glass/bucket, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"ay" = ( +/obj/structure/table, +/obj/item/kitchen/knife/butcher, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"az" = ( +/obj/structure/disposalpipe/segment, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aA" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aB" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aE" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"aF" = ( +/obj/structure/table, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aG" = ( +/obj/effect/landmark/vr_spawn/syndicate, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aH" = ( +/obj/structure/closet/secure_closet/personal, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aI" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aK" = ( +/obj/effect/spawner/structure/window/hollow/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aL" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/shaker, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aM" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aP" = ( +/obj/machinery/portable_atmospherics/pump, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"aQ" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aR" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"aS" = ( +/turf/closed/indestructible/fakeglass, +/area/awaymission/centcomAway/maint) +"aV" = ( +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/hangar) +"aW" = ( +/obj/structure/table/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aY" = ( +/obj/structure/sink, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"aZ" = ( +/obj/structure/table, +/obj/machinery/processor{ + pixel_y = 10 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"ba" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/end, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bb" = ( +/obj/item/radio, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"bc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"bd" = ( +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"be" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"bg" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/peppermill, +/obj/item/reagent_containers/food/condiment/saltshaker, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bh" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"bj" = ( +/obj/structure/rack, +/obj/item/clothing/suit/fire, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"bk" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"bl" = ( +/obj/machinery/door/poddoor{ + id = "XCCHangar1"; + name = "XCC Main Hangar" + }, +/obj/effect/turf_decal/delivery, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"bn" = ( +/turf/closed/wall/mineral/titanium/interior, +/area/awaymission/centcomAway/hangar) +"bo" = ( +/obj/structure/shuttle/engine/propulsion/right{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"bp" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"bq" = ( +/obj/structure/shuttle/engine/propulsion/left{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"bs" = ( +/obj/structure/closet/crate, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"bt" = ( +/obj/machinery/door/airlock/centcom, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bu" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bw" = ( +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bx" = ( +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bz" = ( +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bA" = ( +/obj/structure/rack, +/obj/item/extinguisher/mini, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/gloves/color/black, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"bB" = ( +/turf/closed/wall/mineral/titanium, +/area/awaymission/centcomAway/hangar) +"bC" = ( +/obj/structure/window/reinforced, +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"bF" = ( +/obj/machinery/door/airlock/external{ + name = "Salvage Shuttle Dock" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"bJ" = ( +/obj/structure/chair/comfy/brown, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bK" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bL" = ( +/obj/structure/kitchenspike, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bM" = ( +/obj/machinery/gibber, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"bN" = ( +/obj/machinery/autolathe, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"bQ" = ( +/obj/structure/table, +/obj/item/clothing/glasses/welding, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"bU" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"bV" = ( +/turf/open/floor/mineral/titanium, +/area/awaymission/centcomAway/hangar) +"bW" = ( +/obj/structure/table, +/obj/item/storage/firstaid/toxin{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/storage/firstaid/toxin, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"bX" = ( +/obj/structure/table, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/fire{ + pixel_x = -2; + pixel_y = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"bY" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular{ + pixel_x = 2 + }, +/obj/item/storage/firstaid/regular{ + pixel_x = -2; + pixel_y = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"cb" = ( +/obj/item/paper_bin, +/obj/structure/table, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cc" = ( +/obj/item/clipboard, +/obj/structure/table, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cd" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"ce" = ( +/obj/effect/spawner/structure/window/hollow/reinforced, +/obj/structure/disposalpipe/segment, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cg" = ( +/obj/structure/sign/departments/botany, +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/cafe) +"ch" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_y = 3 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cj" = ( +/obj/machinery/door/airlock/external, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"ck" = ( +/obj/machinery/door/airlock/external, +/obj/structure/fans/tiny/invisible, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"cl" = ( +/turf/open/floor/plating/airless, +/area/awaymission/centcomAway/maint) +"cm" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/awaymission/centcomAway/hangar) +"cn" = ( +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"co" = ( +/obj/item/pen, +/obj/structure/table, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cq" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cv" = ( +/obj/structure/sign/warning/vacuum, +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/maint) +"cx" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/mineral/titanium, +/area/awaymission/centcomAway/hangar) +"cB" = ( +/obj/machinery/door/window/westleft, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cE" = ( +/obj/machinery/seed_extractor, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cF" = ( +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cG" = ( +/obj/machinery/vending/hydronutrients, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cH" = ( +/obj/machinery/biogenerator, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cJ" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"cK" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"cL" = ( +/obj/structure/table/reinforced, +/obj/item/pen, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"cM" = ( +/obj/structure/table/reinforced, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"cN" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"cO" = ( +/obj/machinery/sleep_console{ + icon_state = "console"; + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"cP" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"cS" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"cT" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/neck/stethoscope, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"cU" = ( +/obj/machinery/modular_computer/console{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"cV" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"cW" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"cX" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/item/stamp, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"da" = ( +/obj/structure/table, +/obj/item/assembly/flash/handheld, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"db" = ( +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"dc" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"dd" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"dl" = ( +/obj/structure/table, +/obj/item/storage/box/handcuffs, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"dm" = ( +/obj/machinery/door/window/northright{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Security Desk"; + req_access_txt = "103" + }, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/centcomAway/hangar) +"dn" = ( +/obj/structure/closet/crate, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"do" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"dp" = ( +/obj/structure/closet/crate/large, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"dq" = ( +/obj/structure/dresser, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"dr" = ( +/obj/structure/table/reinforced, +/obj/item/t_scanner, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"ds" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"dv" = ( +/obj/structure/closet/crate, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"dw" = ( +/obj/structure/tank_dispenser, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"dy" = ( +/obj/structure/closet/firecloset/full, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"dz" = ( +/obj/structure/bed, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"dA" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/end, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"dB" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"dC" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"dE" = ( +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"dG" = ( +/obj/structure/bed, +/turf/open/floor/mineral/titanium, +/area/awaymission/centcomAway/hangar) +"dL" = ( +/obj/machinery/door/airlock/hatch{ + name = "Rest Room" + }, +/turf/open/floor/mineral/titanium, +/area/awaymission/centcomAway/hangar) +"dM" = ( +/obj/structure/closet/crate/large, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"dN" = ( +/obj/structure/closet/crate, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"dO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"dQ" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"dY" = ( +/obj/machinery/door/airlock/centcom, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"dZ" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"ea" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"eb" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"ec" = ( +/obj/structure/flora/ausbushes, +/turf/open/floor/plasteel{ + icon_state = "asteroid6"; + name = "sand" + }, +/area/awaymission/centcomAway/cafe) +"el" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"et" = ( +/obj/machinery/door/airlock/hatch{ + name = "Cockpit"; + req_access_txt = "109" + }, +/turf/open/floor/mineral/titanium, +/area/awaymission/centcomAway/hangar) +"eu" = ( +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/general) +"ew" = ( +/obj/machinery/space_heater, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"ex" = ( +/obj/structure/closet/emcloset, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"ey" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"ez" = ( +/obj/structure/table, +/obj/item/radio/off, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"eA" = ( +/obj/structure/chair{ + dir = 4; + name = "Prosecution" + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"eB" = ( +/obj/structure/filingcabinet, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"eG" = ( +/obj/effect/vr_clean_master, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"eH" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eI" = ( +/obj/machinery/sleep_console{ + icon_state = "console"; + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eJ" = ( +/obj/effect/landmark/vr_spawn/syndicate, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eK" = ( +/obj/structure/table/reinforced, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath/medical, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eL" = ( +/obj/machinery/implantchair, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eM" = ( +/obj/structure/table/reinforced, +/obj/item/extinguisher/mini, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eN" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"eP" = ( +/obj/machinery/computer/cloning, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eQ" = ( +/obj/machinery/dna_scannernew, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eR" = ( +/obj/structure/chair, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"eS" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/telecomms/allinone/indestructable, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eT" = ( +/obj/machinery/door/airlock/engineering{ + name = "Engineering Access"; + req_access_txt = "10" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eU" = ( +/obj/machinery/door/window/northleft, +/obj/structure/chair, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"eV" = ( +/obj/effect/spawner/structure/window/hollow/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eW" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"eY" = ( +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/courtroom) +"eZ" = ( +/obj/structure/table, +/obj/item/storage/lockbox, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"fa" = ( +/obj/structure/table, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"fb" = ( +/obj/structure/frame/computer{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"fc" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/pen, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"fd" = ( +/obj/structure/table, +/obj/item/paper_bin, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"fh" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fj" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fk" = ( +/obj/structure/table, +/obj/item/storage/box/prisoner, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fl" = ( +/obj/structure/closet/secure_closet/security, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fm" = ( +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fn" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"fo" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/middle, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"fp" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"fq" = ( +/obj/machinery/power/terminal, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"ft" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/general) +"fu" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fv" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/middle, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fw" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fy" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/general) +"fA" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/storage/box/monkeycubes, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fB" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fC" = ( +/obj/machinery/computer/scan_consolenew, +/obj/item/dnainjector/telemut/darkbundle, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fF" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fG" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering"; + req_access_txt = "32" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fH" = ( +/obj/structure/table/wood, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fJ" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fK" = ( +/obj/machinery/door/window/northleft, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fL" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fM" = ( +/obj/machinery/power/smes, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fO" = ( +/obj/machinery/power/smes, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fQ" = ( +/obj/structure/sign/departments/science, +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/general) +"fR" = ( +/obj/machinery/door/window/eastright, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fT" = ( +/obj/machinery/door/airlock/centcom, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"fU" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Med-Sci"; + req_access_txt = "9" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"fZ" = ( +/obj/structure/table, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"ga" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"gb" = ( +/obj/structure/grille, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"gd" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 9 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gf" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/middle, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gh" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 5 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gj" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"gl" = ( +/obj/item/xenos_claw, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"go" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"gp" = ( +/obj/machinery/shieldgen, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"gr" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/end, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gs" = ( +/obj/machinery/pdapainter, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gt" = ( +/obj/machinery/photocopier, +/obj/item/paper/fluff/awaymissions/centcom/gateway_memo, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gu" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gw" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gx" = ( +/obj/structure/filingcabinet, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gy" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gB" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"gE" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"gF" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge"; + req_access_txt = "19" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gG" = ( +/obj/structure/chair/comfy/beige{ + dir = 1; + icon_state = "comfychair_beige" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gH" = ( +/obj/structure/chair, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"gI" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/open/indestructible, +/area/awaymission/centcomAway/maint) +"gJ" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gM" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gN" = ( +/obj/machinery/modular_computer/console{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gO" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gP" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gQ" = ( +/obj/machinery/modular_computer/console{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gS" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/closed/wall/mineral/titanium/interior, +/area/awaymission/centcomAway/hangar) +"gU" = ( +/obj/structure/table, +/obj/item/paper/fluff/awaymissions/centcom/gateway_memo, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"gW" = ( +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gX" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"gZ" = ( +/obj/structure/chair/office/dark, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hb" = ( +/obj/machinery/vending/cigarette, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"hc" = ( +/obj/machinery/door/airlock/shuttle, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"hd" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/centcomAway/hangar) +"he" = ( +/obj/effect/spawner/structure/window/hollow/reinforced, +/turf/open/floor/mineral/titanium, +/area/awaymission/centcomAway/hangar) +"hg" = ( +/obj/structure/table, +/obj/item/stack/cable_coil, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"hh" = ( +/obj/structure/closet/body_bag, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hi" = ( +/obj/structure/sign/warning/biohazard, +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/general) +"hj" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/PDAs, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hk" = ( +/obj/structure/table/reinforced, +/obj/item/folder/red, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hl" = ( +/obj/machinery/modular_computer/console{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"ho" = ( +/obj/structure/table/reinforced, +/obj/item/folder/blue, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hq" = ( +/turf/closed/indestructible/fakeglass, +/area/awaymission/centcomAway/courtroom) +"hx" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/storage/toolbox/electrical{ + pixel_y = 5 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"hy" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/general) +"hA" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hG" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"hH" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/bodybags, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hJ" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hK" = ( +/obj/machinery/button/door{ + id = "XCCHangar1"; + name = "Hangar Bay Blast Doors"; + pixel_x = -28; + pixel_y = 7; + req_access_txt = "2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"hL" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"hM" = ( +/obj/structure/rack, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"hN" = ( +/obj/structure/rack, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"hO" = ( +/obj/structure/closet, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"hP" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"hQ" = ( +/obj/machinery/power/solar/fake, +/turf/open/floor/plasteel/airless/solarpanel, +/area/awaymission/centcomAway/maint) +"hR" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"hS" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"hU" = ( +/obj/structure/sign/warning/vacuum, +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/hangar) +"hV" = ( +/obj/structure/bodycontainer/crematorium, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hW" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hX" = ( +/obj/machinery/button/crematorium{ + pixel_y = 25 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"hY" = ( +/obj/structure/closet/secure_closet/injection, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"hZ" = ( +/obj/structure/bed, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"ia" = ( +/obj/structure/closet/secure_closet/courtroom, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"ib" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"ie" = ( +/obj/machinery/vending/snack, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"ig" = ( +/obj/machinery/vending/coffee, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"ih" = ( +/obj/machinery/mech_bay_recharge_port, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"ii" = ( +/turf/open/floor/mech_bay_recharge_floor, +/area/awaymission/centcomAway/hangar) +"ij" = ( +/obj/machinery/computer/mech_bay_power_console, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"il" = ( +/obj/structure/mecha_wreckage/ripley, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"im" = ( +/obj/structure/closet/secure_closet/personal, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"in" = ( +/obj/structure/rack, +/obj/item/clothing/glasses/night, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"io" = ( +/obj/structure/closet/emcloset, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"ip" = ( +/obj/structure/bookcase, +/obj/effect/decal/cleanable/cobweb, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"iq" = ( +/obj/structure/closet/secure_closet/hos, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"ir" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/reagent_containers/glass/bucket, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"is" = ( +/obj/structure/bookcase, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"it" = ( +/obj/machinery/door/poddoor/shutters{ + id = "XCCsec3"; + name = "XCC Main Access Shutters" + }, +/obj/effect/turf_decal/delivery, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"iu" = ( +/obj/structure/flora/ausbushes, +/turf/open/floor/plasteel{ + icon_state = "asteroid6"; + name = "sand" + }, +/area/awaymission/centcomAway/general) +"iv" = ( +/turf/closed/indestructible/fakeglass, +/area/space/nearstation) +"iy" = ( +/obj/machinery/door/poddoor{ + id = "XCCMechs"; + name = "XCC Mech Bay" + }, +/obj/effect/turf_decal/delivery, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"iz" = ( +/obj/effect/turf_decal/bot, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"iA" = ( +/obj/machinery/mass_driver{ + dir = 8; + id = "XCCMechs"; + name = "gravpult" + }, +/obj/effect/turf_decal/bot, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"iB" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"iF" = ( +/obj/machinery/recharge_station, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"iM" = ( +/obj/structure/closet/wardrobe/red, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"iN" = ( +/obj/structure/mecha_wreckage/seraph, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"iQ" = ( +/obj/structure/table/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"iR" = ( +/obj/structure/closet/secure_closet/security, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"iT" = ( +/obj/structure/table/wood{ + dir = 9 + }, +/obj/item/clothing/mask/cigarette/cigar/havana, +/obj/item/reagent_containers/food/drinks/sillycup, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"iU" = ( +/obj/structure/table/wood{ + dir = 5 + }, +/obj/item/lighter, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"iV" = ( +/obj/structure/table/wood{ + dir = 5 + }, +/obj/item/storage/backpack/satchel, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"iW" = ( +/obj/machinery/modular_computer/console, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"iY" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "XCCsec3"; + name = "XCC Shutter 3 Control" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"ja" = ( +/obj/machinery/button/massdriver{ + id = "XCCMechs"; + name = "XCC Mechbay Mass Driver"; + pixel_x = 25 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"jb" = ( +/obj/machinery/mecha_part_fabricator, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"jd" = ( +/obj/structure/table/wood{ + dir = 10 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jg" = ( +/obj/structure/table/reinforced, +/obj/item/pen, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jh" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jk" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jq" = ( +/obj/item/stamp, +/obj/structure/table/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jr" = ( +/obj/structure/table, +/obj/item/bot_assembly/medbot, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"js" = ( +/obj/structure/table, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"jt" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/metal/fifty, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"ju" = ( +/obj/structure/table, +/obj/item/mmi, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"jw" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jx" = ( +/obj/machinery/door/window, +/obj/machinery/door/window/northright, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jy" = ( +/obj/structure/sink/puddle, +/turf/open/floor/plasteel{ + icon_state = "asteroid6"; + name = "sand" + }, +/area/awaymission/centcomAway/general) +"jB" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jC" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/vr_spawn/syndicate, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jK" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jL" = ( +/obj/machinery/door/poddoor/shutters{ + id = "XCCFerry"; + name = "XCC Ferry Hangar" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/fans/tiny/invisible, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"jM" = ( +/obj/structure/chair, +/obj/effect/landmark/vr_spawn/syndicate, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jN" = ( +/obj/machinery/vending/coffee, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jO" = ( +/obj/machinery/vending/cigarette, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jP" = ( +/obj/machinery/door/airlock/external{ + name = "Arrival Airlock" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jQ" = ( +/obj/structure/table, +/obj/item/paper/pamphlet/centcom/visitor_info, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jR" = ( +/obj/machinery/door/poddoor/shutters{ + id = "XCCsec1"; + name = "XCC Checkpoint 1 Shutters" + }, +/obj/effect/turf_decal/delivery, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jS" = ( +/obj/machinery/door/poddoor/shutters{ + id = "XCCsec2"; + name = "XCC Checkpoint 2 Shutters" + }, +/obj/effect/turf_decal/delivery, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"jU" = ( +/obj/structure/sign/warning/vacuum, +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/general) +"jX" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/vr_spawn/syndicate, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kf" = ( +/obj/machinery/button/door{ + id = "XCCFerry"; + name = "Hangar Bay Shutters"; + pixel_x = -28; + pixel_y = 7; + req_access_txt = "2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"kj" = ( +/obj/effect/turf_decal/delivery{ + dir = 6 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kl" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kn" = ( +/obj/structure/table, +/obj/item/flashlight/flare, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"kp" = ( +/obj/structure/table, +/obj/item/multitool, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"kq" = ( +/obj/structure/table/reinforced, +/obj/item/paper/pamphlet/centcom/visitor_info, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kr" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "XCCsec1"; + name = "XCC Shutter 1 Control" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"ku" = ( +/obj/item/paper_bin, +/obj/structure/table/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kv" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 10 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kB" = ( +/obj/machinery/photocopier, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kC" = ( +/obj/item/clipboard, +/obj/structure/table, +/obj/item/taperecorder, +/obj/item/stamp, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kD" = ( +/obj/machinery/door/window/northright{ + icon_state = "right"; + dir = 2 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kE" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "XCCsec2"; + name = "XCC Shutter 2 Control" + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kJ" = ( +/obj/structure/table, +/obj/item/storage/box/handcuffs, +/obj/item/stamp, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kK" = ( +/obj/machinery/door/airlock/external, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kN" = ( +/obj/structure/table/wood, +/obj/item/clothing/accessory/medal, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kO" = ( +/obj/structure/table/wood, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kP" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/trophy/gold_cup, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kQ" = ( +/obj/structure/table/wood, +/obj/item/clothing/accessory/medal/gold, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"kS" = ( +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/thunderdome) +"kT" = ( +/obj/structure/shuttle/engine/propulsion/right{ + dir = 1 + }, +/turf/open/space, +/area/space/nearstation) +"kU" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/space, +/area/space/nearstation) +"kV" = ( +/obj/structure/shuttle/engine/propulsion/left{ + dir = 1 + }, +/turf/open/space, +/area/space/nearstation) +"kW" = ( +/obj/structure/table, +/obj/item/paicard, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"kX" = ( +/obj/structure/table, +/obj/item/camera, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"kY" = ( +/obj/machinery/door/airlock/external, +/obj/structure/fans/tiny/invisible, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"kZ" = ( +/obj/machinery/vending/coffee, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"la" = ( +/obj/structure/table, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lb" = ( +/obj/machinery/vending/cigarette, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lc" = ( +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"le" = ( +/obj/machinery/door/window/southleft, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lf" = ( +/obj/effect/spawner/structure/window/hollow/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lg" = ( +/obj/machinery/door/window/southright, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lh" = ( +/obj/structure/chair, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lj" = ( +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/obj/effect/landmark/vr_spawn/syndicate, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"ll" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lm" = ( +/obj/structure/closet/crate/trashcart, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"ln" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lo" = ( +/obj/machinery/vending/snack, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lp" = ( +/obj/structure/table, +/obj/item/lipstick, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lq" = ( +/obj/structure/table/wood, +/obj/item/radio/off, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lr" = ( +/obj/machinery/icecream_vat, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"ls" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lu" = ( +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/awaymission/centcomAway/thunderdome) +"lv" = ( +/obj/structure/rack, +/obj/item/restraints/legcuffs/beartrap, +/obj/item/twohanded/fireaxe, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lw" = ( +/turf/closed/indestructible/fakeglass, +/area/awaymission/centcomAway/thunderdome) +"lz" = ( +/turf/open/floor/plasteel/green/side{ + dir = 4 + }, +/area/awaymission/centcomAway/thunderdome) +"lA" = ( +/obj/machinery/door/poddoor{ + id = "XCCtdomemelee"; + name = "XCC Thunderdome Melee" + }, +/obj/effect/turf_decal/delivery, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lB" = ( +/obj/item/reagent_containers/glass/rag, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"lD" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lF" = ( +/obj/structure/closet/secure_closet/personal, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lG" = ( +/obj/structure/rack, +/obj/item/clothing/under/color/red, +/obj/item/clothing/shoes/sneakers/brown, +/obj/item/clothing/suit/armor/tdome/red, +/obj/item/clothing/head/helmet/thunderdome, +/obj/item/hatchet, +/obj/item/shield/riot, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lI" = ( +/obj/machinery/recharger{ + pixel_y = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lJ" = ( +/obj/machinery/door/poddoor{ + id = "XCCtdome"; + name = "XCC Thunderdome" + }, +/obj/effect/turf_decal/delivery, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lK" = ( +/obj/machinery/igniter/on, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lL" = ( +/obj/structure/rack, +/obj/item/clothing/under/color/green, +/obj/item/clothing/shoes/sneakers/brown, +/obj/item/clothing/suit/armor/tdome/green, +/obj/item/clothing/head/helmet/thunderdome, +/obj/item/hatchet, +/obj/item/shield/riot, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lM" = ( +/obj/structure/table/reinforced, +/obj/item/taperecorder, +/obj/item/tape/random, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"lN" = ( +/obj/structure/mirror{ + pixel_x = 28 + }, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lS" = ( +/obj/machinery/chem_master, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"lU" = ( +/obj/structure/urinal{ + pixel_y = 32 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lV" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"lX" = ( +/obj/machinery/chem_dispenser, +/obj/item/storage/box/beakers, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"lZ" = ( +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"ma" = ( +/obj/machinery/door/airlock/freezer, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mb" = ( +/obj/machinery/door/poddoor{ + id = "XCCtdomeguns"; + name = "XCC Thunderdome Guns" + }, +/obj/effect/turf_decal/delivery, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mc" = ( +/obj/item/soap/nanotrasen, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"md" = ( +/obj/structure/rack, +/obj/item/gun/energy/laser/retro, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"me" = ( +/obj/machinery/vending/boozeomat{ + req_access_txt = "" + }, +/turf/closed/indestructible/riveted, +/area/awaymission/centcomAway/cafe) +"mg" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mh" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/popcorn, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mi" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/reagent_dispensers/watertank, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mj" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/window/southright, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mk" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/popcorn, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"ml" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mm" = ( +/obj/structure/table, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mo" = ( +/obj/machinery/modular_computer/console{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mp" = ( +/obj/structure/closet/secure_closet/bar, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mq" = ( +/obj/structure/table, +/obj/item/storage/box/handcuffs, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mr" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"ms" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mt" = ( +/obj/machinery/button/door{ + id = "XCCtdomemelee"; + name = "XCC Thunderdome Melee!" + }, +/obj/structure/table/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mu" = ( +/obj/structure/chair/comfy/teal, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mv" = ( +/obj/machinery/button/door{ + id = "XCCtdomeguns"; + name = "XCC Thunderdome Guns!" + }, +/obj/structure/table/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mw" = ( +/obj/structure/table/reinforced, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"my" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mz" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/window/northright, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mF" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mG" = ( +/obj/machinery/shieldgen, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mH" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mI" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mJ" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"mN" = ( +/obj/machinery/door/airlock/centcom, +/obj/structure/fans/tiny/invisible, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"mQ" = ( +/obj/structure/safe/floor, +/obj/item/clothing/under/rank/centcom_officer, +/obj/item/clothing/suit/det_suit, +/obj/item/gun/ballistic/revolver/mateba, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"mR" = ( +/obj/machinery/door/airlock/centcom, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"mS" = ( +/obj/machinery/door/airlock/external, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"mT" = ( +/obj/machinery/door/airlock/external, +/obj/structure/fans/tiny/invisible, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"mU" = ( +/obj/structure/rack, +/obj/item/storage/secure/briefcase, +/obj/item/storage/belt/utility/full, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"mW" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"mX" = ( +/obj/machinery/door/airlock/centcom, +/turf/open/floor/plasteel/redyellow{ + dir = 5 + }, +/area/awaymission/centcomAway/thunderdome) +"mZ" = ( +/obj/machinery/door/airlock/centcom, +/turf/open/floor/plasteel/barber{ + dir = 8; + heat_capacity = 1 + }, +/area/awaymission/centcomAway/thunderdome) +"na" = ( +/turf/open/floor/plasteel/green/corner{ + dir = 1 + }, +/area/awaymission/centcomAway/thunderdome) +"nb" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/awaymission/centcomAway/thunderdome) +"nc" = ( +/turf/open/floor/plasteel/green/corner{ + dir = 2 + }, +/area/awaymission/centcomAway/thunderdome) +"nd" = ( +/turf/open/floor/plasteel/green/side{ + dir = 1 + }, +/area/awaymission/centcomAway/thunderdome) +"ne" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 8 + }, +/area/awaymission/centcomAway/thunderdome) +"nf" = ( +/obj/machinery/portable_atmospherics/scrubber/huge, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"ng" = ( +/turf/open/floor/plasteel/red/side, +/area/awaymission/centcomAway/thunderdome) +"nh" = ( +/obj/machinery/door/airlock/centcom, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"nj" = ( +/turf/open/floor/plasteel/green/side{ + dir = 2 + }, +/area/awaymission/centcomAway/thunderdome) +"nk" = ( +/turf/open/floor/plasteel/green/side{ + dir = 10 + }, +/area/awaymission/centcomAway/thunderdome) +"nl" = ( +/turf/open/floor/plasteel/red/side{ + dir = 6 + }, +/area/awaymission/centcomAway/thunderdome) +"nm" = ( +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/awaymission/centcomAway/thunderdome) +"nn" = ( +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/awaymission/centcomAway/thunderdome) +"no" = ( +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/awaymission/centcomAway/thunderdome) +"np" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/awaymission/centcomAway/thunderdome) +"nq" = ( +/turf/open/floor/plasteel/green/side{ + dir = 9 + }, +/area/awaymission/centcomAway/thunderdome) +"nr" = ( +/obj/machinery/portable_atmospherics/scrubber/huge, +/turf/open/floor/plasteel/green/side{ + dir = 5 + }, +/area/awaymission/centcomAway/thunderdome) +"ns" = ( +/obj/machinery/portable_atmospherics/scrubber/huge, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/awaymission/centcomAway/thunderdome) +"nt" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/awaymission/centcomAway/thunderdome) +"nu" = ( +/turf/open/floor/plasteel/green/corner{ + dir = 8 + }, +/area/awaymission/centcomAway/thunderdome) +"nv" = ( +/obj/machinery/door/airlock/centcom, +/turf/open/floor/plasteel/white, +/area/awaymission/centcomAway/thunderdome) +"nw" = ( +/obj/effect/vr_clean_master, +/turf/open/floor/goonplaque, +/area/awaymission/centcomAway/thunderdome) +"nx" = ( +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/awaymission/centcomAway/thunderdome) +"ny" = ( +/turf/open/floor/plasteel/green/side{ + dir = 8 + }, +/area/awaymission/centcomAway/thunderdome) +"nz" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/sugar, +/obj/item/reagent_containers/food/condiment/milk, +/obj/item/reagent_containers/food/drinks/ice, +/turf/open/indestructible, +/area/awaymission/centcomAway/thunderdome) +"sL" = ( +/obj/machinery/door/airlock/external{ + name = "Arrival Airlock" + }, +/obj/structure/fans/tiny/invisible, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"zk" = ( +/turf/closed/indestructible/fakeglass, +/area/awaymission/centcomAway/general) +"GJ" = ( +/obj/structure/chair, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"KX" = ( +/obj/effect/vr_clean_master, +/turf/open/indestructible, +/area/awaymission/centcomAway/general) +"Tc" = ( +/obj/effect/vr_clean_master, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) +"TG" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/vr_clean_master, +/turf/open/indestructible, +/area/awaymission/centcomAway/courtroom) +"TP" = ( +/turf/open/space/basic, +/area/space) +"Um" = ( +/obj/effect/vr_clean_master, +/turf/open/indestructible, +/area/awaymission/centcomAway/cafe) +"VC" = ( +/obj/effect/landmark/vr_spawn/syndicate, +/turf/open/indestructible, +/area/awaymission/centcomAway/hangar) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(7,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(8,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(9,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(10,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(11,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(12,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(13,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(14,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(15,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(16,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(17,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(18,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(19,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(20,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(22,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(23,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(26,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(27,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(28,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(31,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +aV +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +bl +aV +aV +aV +iy +aV +iy +aV +iy +aV +iy +aV +aV +jL +jL +jL +jL +jL +jL +jL +aV +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(32,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bc +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +hK +hU +aV +iz +aV +iz +aV +iz +aV +iz +aV +bc +bd +bd +bd +bd +bd +bd +bd +kf +hU +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(33,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +ih +iA +ih +iA +ih +iA +ih +iA +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(34,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bn +bB +bB +bB +bn +bd +be +be +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +gS +hc +gS +bd +aV +ii +iB +ii +iB +ii +iB +ii +iB +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(35,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bo +bC +bV +bV +bn +bn +bd +bd +bd +be +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bB +hd +bB +bd +aV +ij +bd +ij +bd +ij +bd +ij +bd +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(36,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bp +bC +bV +bV +bV +bB +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +be +bd +bd +bd +bd +bd +bB +dc +bB +bd +aV +bd +bd +bd +bd +bd +bd +bd +bd +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(37,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bq +bC +bn +cm +cx +cm +bB +bB +bB +bB +bB +bB +bB +bB +bB +bn +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bn +he +bn +bd +aV +il +bd +bd +bd +bd +bd +bd +bd +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +TP +TP +TP +TP +TP +TP +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(38,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bn +bB +bn +cn +cn +cJ +cU +da +dl +bB +dz +dz +dz +dz +dz +bB +bn +bd +bd +bd +bd +bd +bd +bd +bd +bd +be +bd +bd +bd +bd +aV +im +im +bd +bd +bd +ja +im +im +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +TP +TP +TP +TP +TP +TP +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(39,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bd +bB +bU +cn +bV +cK +cV +db +db +bB +bV +bV +bV +bV +bV +bB +bB +bB +bB +bn +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aV +aV +aV +mS +mS +aV +aV +aV +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +TP +TP +TP +TP +TP +TP +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(40,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bd +bF +bV +bV +bV +cL +cW +db +db +bB +dz +dG +bV +dz +dz +bB +ez +eb +eZ +fn +bd +bd +bd +bd +bd +bd +gS +hc +gS +bd +bd +aV +in +aV +iF +bd +bd +bd +bd +jr +aV +bd +bd +bd +be +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +TP +TP +TP +TP +TP +TP +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(41,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +be +bd +bB +bW +cn +bV +cM +cX +cM +dm +cm +bB +bB +dL +bB +bB +cm +cP +cn +fa +fo +bd +bd +bd +bd +bd +bd +bB +hd +bB +bd +bd +aV +bd +aV +bd +iN +bd +jb +bd +js +aV +bd +bd +bd +be +Tc +bd +bd +bd +VC +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +TP +TP +TP +TP +TP +TP +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(42,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bd +bB +bX +cn +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +bV +et +bV +eR +fb +fo +bd +bd +bd +bd +bd +bd +bB +dc +bB +bd +bd +mT +bd +mS +bd +bd +VC +bd +bd +jt +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +TP +TP +TP +TP +TP +TP +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(43,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bd +bB +bY +cn +bV +cN +cn +cP +cP +cn +cP +cP +bV +cn +dZ +bB +eA +cn +fc +fo +bd +bd +bd +bd +bd +bd +bn +he +bn +bd +bd +aV +bd +aV +bd +bd +bd +jb +bd +ju +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +TP +TP +TP +TP +TP +TP +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(44,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bd +bF +bV +bV +bV +cO +cn +dc +dc +cn +dc +dc +bV +cn +ea +bB +eB +ez +fd +fp +bd +be +bd +bd +bd +bd +bd +bd +bd +bd +hL +aV +io +aV +iF +bd +bd +bd +bd +hG +aV +bd +be +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +TP +TP +TP +TP +TP +TP +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(45,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bd +bB +bU +cn +bV +bV +bV +bV +bV +bV +bV +bV +bV +cn +eb +bB +bB +bB +bB +bn +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aV +aV +aV +mR +mR +aV +aV +aV +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(46,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bn +bB +bn +cn +cn +cP +cP +cP +bV +cP +cP +cP +bV +cn +bU +bB +bn +bd +bd +bd +bd +bd +bd +gn +bc +bc +bc +bc +bc +bc +hM +aV +aa +zk +gW +gW +gW +gW +zk +aa +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +kn +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +kS +kS +kS +kS +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(47,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bo +bC +bn +cm +cx +cm +bB +bB +bF +bB +dA +bB +bF +bB +bB +bn +bd +bd +bd +bd +bd +bd +bd +do +bd +bd +bd +bd +bd +bd +hN +aV +aa +zk +gW +gW +gW +gW +zk +aa +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +kn +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +lD +lc +lc +lc +lc +lc +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(48,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bp +bC +bV +bV +bV +bB +bd +dd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +do +bd +bd +bd +bd +bd +bd +hO +aV +aa +zk +gW +gW +gW +gW +zk +aa +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +kp +aV +aa +TP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +lc +lc +lF +kS +lU +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(49,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bq +bC +bV +bV +bn +bn +bd +bd +bd +bd +bd +bd +bd +bd +be +bd +bd +bd +bd +bd +bd +bd +bd +do +bd +bd +bd +bd +bd +bd +hP +aV +aa +zk +gW +gW +gW +gW +zk +aa +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +hG +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +lc +lc +lF +kS +lc +lc +mc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(50,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bn +bB +bB +bB +bn +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +do +bd +bd +bd +dd +bd +bd +bQ +aV +aa +zk +gW +gW +gW +gW +zk +aa +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +lF +lc +lF +kS +lV +lV +lV +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(51,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +bd +aV +bs +bd +bd +bd +bd +bd +bd +bd +bd +go +gE +gE +gU +hg +hx +hG +hG +aV +aa +zk +gW +gW +gW +gW +zk +aa +aV +aV +aV +mN +aV +aV +aV +mN +aV +aV +aV +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +kS +kS +nv +kS +kS +kS +kS +kS +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(52,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aV +bd +be +bd +bd +bd +bd +bd +bd +bd +dn +bc +bc +bc +dM +aV +aV +aV +aV +aV +aV +aV +aV +aV +aV +aV +aV +aV +aV +aV +aV +aV +aV +aV +eu +eu +gW +gW +gW +gW +eu +eu +eu +eu +gW +gW +zk +iu +zk +gW +gW +eu +bk +bk +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +kS +kS +kS +kS +kS +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(53,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +aV +bd +bs +bd +bd +bd +aV +bd +bd +aV +do +bd +bd +bd +dN +aV +bb +ag +ag +ag +ag +ag +ag +ag +ag +dy +eu +hV +gW +gJ +gJ +gJ +eu +hW +gW +gW +gW +gW +gW +gW +gW +gW +hW +eu +gW +gW +zk +iu +zk +gW +gW +zk +aa +bk +bk +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(54,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +aE +aP +aV +aV +aV +aV +aV +aV +aV +ck +ck +aV +dp +dv +dB +dB +dO +aV +ag +ag +ag +ag +ag +ag +ag +ag +ag +bj +eu +hX +gl +gW +gW +gW +eu +gW +gW +zk +zk +zk +zk +zk +zk +gW +gW +eu +gW +gW +zk +iu +zk +gW +gW +zk +aa +aa +bk +bk +aa +aa +aa +aa +aa +aa +aa +kS +kS +lc +lc +lc +lc +lc +lc +lc +lc +kS +kS +kS +kS +kS +kS +kS +lc +lc +lc +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(55,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ag +ag +ag +ag +ag +ag +ag +ag +ag +ab +ag +ag +aV +aV +aV +aV +aV +aV +aV +ag +eu +eu +eu +eu +eu +eu +eu +ag +ew +eu +gW +gW +gW +gW +gW +eu +gW +gW +zk +iu +iu +iu +iu +zk +gW +gW +eu +gW +gW +zk +iu +zk +gW +gW +zk +aa +aa +aa +bk +bk +aa +aa +aa +aa +aa +aa +kS +kW +lc +lc +kS +kS +kS +kS +kS +kS +kS +lG +lG +lG +lG +lc +nh +lc +lc +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(56,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ag +ag +ag +ag +ag +ag +eG +ag +ag +ag +aR +ag +ag +aR +ag +ag +ag +ag +ag +ag +ag +eu +gW +gW +gW +gW +gW +eu +ag +ag +eu +gW +gW +hh +hh +hH +eu +gW +gW +zk +zk +zk +zk +zk +zk +gW +gW +eu +gW +gW +zk +iu +zk +gW +gW +zk +aa +aa +aa +aa +bk +bk +aa +aa +aa +aa +aa +kS +kX +lc +lc +mZ +lc +lc +nz +kS +kS +kS +lc +lc +lc +lc +lc +kS +kS +kS +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(57,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ag +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ag +ag +ac +ac +ac +ac +ac +ac +ac +ac +eu +gW +gW +gW +fq +fM +eu +ag +ey +eu +eu +dY +hi +hy +eu +eu +hW +gW +gW +gW +gW +gW +gW +gW +gW +hW +eu +gW +gW +zk +iu +zk +gW +gW +eu +aa +aa +aa +aa +aa +bk +bk +aa +aa +aa +aa +kS +kX +lc +lc +kS +lc +lc +nz +kS +lv +lA +lI +lI +lc +lI +lI +mb +md +kS +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(58,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ag +ac +aF +aQ +ac +aF +aQ +ac +aF +aQ +ac +cj +cj +ac +aF +aQ +ac +aF +aQ +ac +ec +eu +gW +eS +gW +gW +fN +eu +ag +ag +eu +gW +gW +gW +gW +gW +eu +eu +eu +gW +gW +gW +gW +gW +gW +eu +eu +eu +eu +dY +eu +eu +eu +dY +eu +eu +eu +eu +eu +eu +eu +eu +eu +aa +aa +aa +aa +kS +kS +lc +lc +kS +lc +lc +lr +kS +lv +lA +lc +lc +lc +lc +lc +mb +md +kS +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(59,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ag +ac +ai +aG +ac +ai +aG +ac +ai +aG +ac +ai +ai +ac +dq +aG +ac +dq +aG +ad +ec +eu +gW +gW +gW +fq +fO +eu +ag +gp +eu +lB +gW +eJ +gW +gW +dY +gW +dY +gW +gW +gW +eJ +gW +gW +jw +gW +jw +gW +gW +gW +gW +gW +gW +gW +kj +kq +gW +gW +kB +gW +iR +eu +aa +aa +aa +aa +kT +kS +lc +lc +kS +lc +lc +lr +kS +lv +lA +lc +lc +lc +lc +lc +mb +md +kS +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(60,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ag +ac +aH +ai +ac +aH +ai +ac +aH +ai +ac +ai +ai +ac +aH +ai +ac +aH +ai +ad +ec +eu +gW +gW +gW +gW +gW +eu +ag +gp +eu +ir +gW +gW +gW +gW +eu +eu +eu +eu +dY +eu +eu +eu +eu +eu +eu +eu +gW +gW +gW +gW +gW +gW +gW +kj +iQ +gW +gW +gW +gW +iM +eu +aa +aa +aa +aa +kU +kS +lc +lc +kS +lc +lc +lc +kS +lv +lA +lc +lc +lc +lc +lc +mb +md +kS +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(61,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +aR +ac +ac +bt +ac +ac +bt +ac +ac +bt +ac +ai +ai +ac +ac +bt +ac +ac +bt +ac +ec +eu +eu +eT +eu +eu +eu +eu +aR +eu +eu +eu +dY +eu +eu +eu +eu +eu +ip +gW +gW +gW +gW +gW +gW +eu +iu +zk +jM +jQ +jQ +jX +gW +gW +gW +kj +hk +kr +gW +eJ +gW +gW +eu +aa +aa +aa +aa +kV +kS +lc +lc +kS +mk +mk +mk +kS +kS +kS +lJ +lJ +lJ +lJ +lJ +kS +kS +kS +kS +mX +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(62,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ac +ec +eu +gW +gW +gW +fG +gW +gW +fV +gW +gW +gW +gW +gW +gW +gW +gW +eu +iq +gW +gW +gW +iT +jd +jk +eu +jy +zk +jM +jQ +jQ +jX +gW +gW +gW +kj +jg +eW +gW +gW +gW +gW +eu +aa +aa +TP +aa +kS +kS +lc +lc +kS +lc +lc +lc +lh +lw +ns +lu +lu +lu +lu +lu +nf +lw +lc +lc +lc +mm +kS +aa +aa +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +"} +(63,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ac +ec +eu +cd +gW +gW +ft +gW +gW +gW +gW +gW +gW +gW +gW +gW +gW +gW +eu +gW +gW +gW +gW +iU +eW +mQ +eu +iu +zk +gW +gW +gW +gW +gW +gW +gW +kj +gw +gQ +gQ +kC +gW +gW +eu +aa +aa +aa +aa +aa +kS +lc +lc +kS +lc +lc +lc +lh +lw +nm +lc +lc +lc +lc +lc +ng +lw +lc +lc +lc +la +kS +aa +aa +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +"} +(64,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +aI +aI +ai +ai +ai +ai +aI +aI +aI +aI +aI +ai +ai +ai +aI +aI +ai +ad +ec +eu +bN +gW +dr +fu +gW +gW +gW +gW +gW +gW +gW +gW +gW +gW +gW +eu +mU +gW +gW +gW +iV +iW +gW +eu +eu +eu +eu +dY +eu +eV +eu +dY +eu +eu +eu +eu +eu +eu +eu +dY +eu +bk +bk +bk +bk +aa +kS +lc +lc +kS +lc +lc +lc +lh +lw +nn +lc +nt +nx +nb +lc +nl +lw +mg +lc +lc +mo +kS +aa +aa +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +"} +(65,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +aF +aF +ai +ai +ai +bJ +cb +co +aF +aF +aF +ai +ai +ai +aF +aF +ai +ad +ec +eu +cd +gW +dr +fv +gW +gW +gd +gr +gF +gM +gX +gr +eu +gW +gW +eu +is +gW +gW +gW +iW +eW +gW +eu +iu +iu +eu +jR +jR +jR +jR +jR +jR +jR +eu +iQ +gW +eV +gW +gW +eu +zk +zk +zk +eu +aa +kS +lc +lc +kS +lc +lc +lc +lh +lw +nm +lc +lc +lc +lc +lc +ng +lw +mg +lc +mW +mo +kS +aa +aa +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +"} +(66,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +aF +aF +ai +ai +ai +bJ +cc +aF +aF +aF +aF +ai +ai +ai +dC +aF +ai +ad +ec +eu +gW +gW +dw +fw +gW +gW +fw +gs +gW +gN +gN +hj +fu +gW +gW +eu +eu +eu +eu +eu +eu +eu +eu +eu +zk +zk +eu +dY +eu +eV +eu +dY +eu +eV +eu +ku +jB +kD +gW +gW +eu +kN +kP +kP +eu +aa +kS +lc +lc +kS +ll +lc +lc +lh +lw +nn +lc +lc +lK +lc +lc +nl +lw +mg +lc +lc +lc +kS +aa +aa +TP +TP +aa +aa +aa +aa +aa +aa +aa +aa +"} +(67,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ac +ac +eu +eu +eu +eu +eu +gW +gW +eu +gt +gW +gO +gW +hk +fv +gW +gW +eu +eu +eu +gW +gW +gW +gW +gW +fv +jB +jB +jN +gW +jB +gW +jB +gW +jB +gW +gd +kv +iQ +eV +gW +gW +eu +zk +zk +zk +zk +zk +kS +kS +kY +kS +lc +lc +lc +lh +lw +nm +lK +lc +lc +lc +lK +ng +lw +mg +lc +lc +lc +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(68,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +bt +gW +gW +dY +gW +gW +gW +gW +gf +gu +gW +gW +gZ +hl +fv +gW +gW +eu +it +eV +gW +gW +gW +gW +gW +fw +gW +gW +gW +gW +gW +gW +gW +gW +gW +gW +fw +gW +gW +gW +gW +gW +kK +gW +gW +gW +kK +gW +kY +lc +lc +le +lc +lc +lc +lh +lw +np +lc +np +nx +ne +lc +ne +lw +lc +lc +lc +lc +mt +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(69,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +aK +gW +gW +eV +gW +gW +gW +gW +fv +iW +gG +KX +gW +hl +fv +gW +gW +dY +it +dY +gW +gW +eJ +gW +gW +jx +gW +gW +gW +gW +gW +KX +gW +gW +gW +gW +gW +gW +gW +gW +gM +jK +eu +gW +eJ +gW +zk +zk +kS +lc +lc +lf +lc +lc +lc +lh +lw +lc +lc +ng +nw +nd +lc +lc +lw +lq +lj +lc +lc +mu +mw +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(70,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +aj +ai +ai +ai +ai +aI +aI +aI +ai +ai +Um +ai +ai +aI +aI +aI +ai +ai +ai +ai +bt +gW +gW +dY +gW +gW +gW +gW +fw +gw +gW +gW +gZ +hl +fv +gW +gW +eu +it +eV +gW +gW +gW +gW +gW +fu +gW +gW +gW +gW +gW +gW +gW +gW +gW +gW +fu +gW +gW +gW +gW +gW +kK +gW +gW +gW +kK +gW +kY +lc +lc +lg +lc +lc +lc +lh +lw +no +lc +no +ny +nc +lc +nc +lw +lc +lc +lc +lc +mv +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(71,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +ac +ac +aK +bt +aK +aW +aW +aW +ac +aK +cB +aK +ac +aW +aW +aW +aK +bt +aK +ac +ac +eu +eu +eu +eu +eu +gW +gW +eu +gx +gW +gP +gW +ho +fv +gW +gW +eu +eu +eu +gW +gW +gW +gW +gW +fv +jh +jh +jO +gW +jC +gW +jh +gW +jh +gW +gh +gr +iQ +eV +gW +gW +eu +zk +zk +zk +zk +zk +kS +kS +kY +kS +lc +lc +lc +lh +lw +nd +lK +lc +lc +lc +lK +nj +lw +mg +lc +lc +lc +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(72,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +al +ai +ai +ai +aW +ai +ai +ai +ac +ai +ai +ai +ac +ai +ai +ai +aW +ai +ai +ai +al +eu +eH +gW +eH +fu +gW +gW +gf +gy +gW +gQ +gQ +lM +fw +gW +gW +eu +iu +eu +eu +iQ +hk +jg +gw +eu +zk +zk +eu +dY +eu +eV +eu +dY +eu +kl +eu +ku +jh +kD +gW +gW +eu +kO +kP +kQ +eu +aa +kS +lc +lc +kS +ll +lc +lc +lh +lw +nq +lc +lc +lK +lc +lc +nk +lw +mg +lc +lc +mp +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(73,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +am +ai +ai +ai +ai +ai +ai +bK +ac +ai +ai +ai +ac +bK +ai +ai +ai +ai +ai +ai +am +eu +eI +eJ +eI +fv +gW +gW +gh +gr +gF +gM +gX +gr +eu +gW +gW +eu +zk +eu +gW +gW +iY +jh +hl +eu +iu +iu +eu +jS +jS +jS +jS +jS +jS +jS +eu +iQ +gW +eV +gW +gW +eu +zk +zk +zk +eu +aa +kS +lc +lc +kS +lm +lc +lc +lh +lw +nd +lc +lc +lc +lc +lc +nj +lw +mg +lc +lc +mq +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(74,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +bg +ay +aL +ai +ai +ai +ai +aF +aK +ai +aW +ai +aK +aF +ai +ai +ai +ai +aL +ay +bg +eu +gW +gW +gW +fw +gW +gW +gW +gW +gW +gW +gW +gW +gW +gW +gW +dY +gW +dY +gW +gW +eJ +gW +hl +eu +eu +eu +eu +dY +eu +eV +eu +dY +eu +eu +eu +eu +eu +eu +eu +dY +eu +bk +bk +bk +bk +aa +kS +lc +lc +kS +ll +lc +lc +lh +lw +nq +lc +nu +ny +na +lc +nk +lw +mg +lc +lc +mh +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(75,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +ao +az +az +az +az +az +az +az +mj +cq +aW +cS +mz +az +az +az +az +az +az +az +el +eu +eK +gW +gW +fy +gW +gW +gW +gW +gW +gW +gW +gW +gW +gW +gW +eu +iv +eu +iM +iR +gW +gW +jq +eu +iu +zk +gW +gW +gW +gW +gW +gW +gW +gW +gW +kj +iQ +gW +gW +gW +eu +aa +aa +aa +aa +aa +kS +lc +lc +kS +ln +lc +lc +lh +lw +nd +lc +lc +lc +lc +lc +nj +lw +lc +lc +lc +mr +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(76,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +ap +ai +ai +ai +ai +ac +me +ac +ac +cr +aW +cr +ac +ac +me +ac +ai +ai +ai +ai +ap +eu +eL +eW +gW +fU +gW +gW +fW +gW +gW +gW +gW +gW +gW +gW +gW +eu +aa +eu +eu +eu +eu +eu +eu +eu +iu +zk +GJ +gW +gW +gW +gW +gW +gW +gW +gW +kj +hk +kE +eJ +gW +eu +aa +aa +aa +aa +kS +kS +lc +lc +kS +lo +lc +lc +lh +lw +nr +lz +lz +lz +lz +lz +nf +lw +lc +lc +lc +ms +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(77,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +aq +ai +ai +ai +aY +ac +bu +bL +ac +cr +ai +cr +ac +bL +bu +ac +dE +ai +ai +ai +aq +eu +eu +gW +gW +eu +fQ +eu +aR +eY +eY +eY +fT +eY +eu +dY +eu +eu +bk +bk +bk +bk +bk +bk +bk +eu +iu +zk +GJ +gW +gW +gW +gW +gW +gW +gW +gW +kj +jg +eW +gW +gW +eu +aa +aa +aa +aa +kT +kS +lc +lc +kS +kS +kS +kS +kS +kS +kS +lJ +lJ +lJ +lJ +lJ +kS +kS +kS +kS +mX +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(78,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +ar +ai +ai +ai +ai +ma +ai +ai +ac +cr +ai +cr +ac +ai +ai +ma +ai +ai +ai +ai +ar +eu +eM +gW +gW +fA +gW +eu +ag +eY +gH +fm +fm +eY +hA +gW +gW +eu +aa +aa +aa +aa +aa +aa +aa +eu +iu +zk +gW +gW +gW +gW +gW +gW +gW +gW +gW +kj +gw +gQ +gQ +kJ +eu +aa +aa +aa +aa +kU +kS +lc +lc +lc +lc +lc +lc +kS +lv +lA +lc +lc +lc +lc +lc +mb +md +kS +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(79,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +as +aA +aM +aM +aZ +ac +bw +bM +ac +cr +ai +cr +ac +bM +bw +ac +aZ +aM +aM +aA +as +eu +cT +gW +gW +fB +fR +eu +ag +eY +gH +fm +fm +eY +gW +hJ +gW +eu +aa +aa +aa +aa +aa +aa +aa +eu +eu +eu +jP +zk +jU +eu +jU +zk +jP +zk +jP +zk +eu +eu +eu +eu +eu +aa +aa +aa +aa +kV +kS +lc +lc +lh +la +lp +ls +kS +lv +lA +lc +lc +lc +lc +lc +mb +md +kS +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(80,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +at +aB +aB +aB +ba +ac +ac +ac +ac +cr +ai +cr +ac +ac +ac +ac +at +aB +aB +aB +ba +eu +gW +gW +gW +gW +gW +eu +ag +eY +gH +fm +fm +eY +eu +eu +eu +eu +aa +aa +aa +aa +aa +aa +aa +aa +aa +zk +gW +zk +aa +aa +aa +zk +gW +zk +gW +zk +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +lc +lc +lh +la +la +ls +kS +lv +lA +lc +lc +lc +lc +lc +mb +md +kS +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(81,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +au +au +au +au +au +lX +bx +mi +ce +ml +ai +my +ce +mi +ds +lX +au +au +au +au +au +eu +eP +eW +gW +fC +eW +eu +ag +eY +gH +fm +fm +hq +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +zk +sL +zk +aa +aa +aa +zk +sL +zk +sL +zk +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kZ +lc +lc +lh +la +la +ls +kS +lv +lA +lI +lI +lc +lI +lI +mb +md +kS +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(82,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +av +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +av +eu +eQ +gW +gW +eQ +gW +eu +ag +eY +gH +fm +fm +hq +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +la +lc +lc +lc +lc +lc +lc +kS +kS +kS +lc +lc +lc +lc +lc +kS +kS +kS +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(83,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +av +ai +ai +ai +ai +ai +ai +ai +ai +ai +cE +ai +ai +ai +ai +ai +ai +ai +ai +ai +av +eu +eu +eu +eu +eu +eu +eu +ag +eY +eY +fm +fm +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +lb +lc +lc +lc +lc +lc +lc +lc +lc +kS +lL +lL +lL +lL +lc +nh +lc +lc +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(84,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +au +au +au +au +au +lS +bz +bz +aK +ai +cF +ai +aK +bz +bz +lS +au +au +au +au +au +ac +ag +ag +ag +ag +ag +ag +ag +gB +eY +fT +fT +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +lc +lc +lc +lc +lc +lc +lc +lc +kS +kS +kS +kS +kS +kS +kS +lc +lc +lc +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(85,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +ac +ac +ac +ac +ac +ac +ac +ac +cg +ai +cG +ai +cg +ac +ac +ac +ac +ac +ac +ac +ac +ac +ag +eY +eY +eY +eY +eY +eY +eY +eY +fm +fm +eY +eY +eY +eY +eY +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(86,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ag +bj +bA +ac +ch +ai +cH +ai +ch +ac +bA +dy +ac +mF +mH +mJ +ac +ew +ag +eY +fj +fm +eY +gj +gj +ia +eY +fm +fm +eY +gj +gj +hR +hY +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +kS +kS +kS +kS +kS +lc +lc +lc +lc +lc +lc +lc +lc +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(87,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aS +ag +ag +ag +ac +ch +ai +ai +ai +ch +ac +ag +ag +ac +mG +ai +mK +ac +ex +ag +eY +fk +fm +eY +fm +fm +fm +fT +fm +fm +fT +fm +fm +fm +hZ +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +kS +kS +nv +kS +kS +kS +kS +kS +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(88,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aS +bh +ag +ag +ac +ad +ad +ad +ad +ad +ac +ag +ag +ac +mE +ai +mI +ac +bb +ag +eY +fl +fm +eY +fj +fZ +fZ +eY +fm +fm +eY +eY +eY +eY +eY +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +lF +lc +lF +kS +lZ +lZ +lZ +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(89,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aS +bh +ag +ag +ab +aa +aa +aa +aa +aa +ab +ag +ag +ac +ac +dQ +ac +ac +ag +ag +eY +eY +fT +eY +eY +eY +eY +eY +fm +fm +eY +fm +fm +hS +ia +hq +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +lc +lc +lF +kS +lc +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(90,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aS +ag +ag +ag +ab +aS +aS +aS +aS +aS +ab +ag +ag +ag +ag +ag +ag +ag +ag +ag +eY +fm +fm +fm +fm +fm +fm +eY +fm +fm +eY +fm +gH +fH +ib +hq +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +lc +lc +lF +kS +lU +lc +lc +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(91,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +bb +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +eY +fm +fm +fm +fm +fm +fm +fT +fm +fm +fT +fm +fm +fH +fm +hq +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +lc +lN +lc +lc +lc +lc +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(92,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ag +ab +ab +ab +ab +ag +ag +eY +fm +fm +fm +fm +fm +fm +eY +fm +fm +eY +fm +fm +fm +fm +hq +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kS +kS +kS +kS +kS +kS +kS +kS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(93,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +cj +cv +ab +ab +cv +cj +ab +ab +ab +ab +aa +aa +ab +ag +ag +eY +eY +fT +eY +eY +eY +eY +eY +fT +fT +eY +eY +eY +eY +eY +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(94,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ag +ab +aa +aa +ab +ag +ab +aa +aa +aa +aa +aa +ab +ag +ag +eY +fm +fm +eU +ga +fH +ib +fm +fm +fm +fm +fm +eY +aa +aa +bk +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(95,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bk +bk +ab +ck +ab +bk +bk +ab +ck +ab +bk +bk +bk +bk +bk +ab +ag +ag +eY +fm +fH +fF +ga +fH +ib +fm +ib +ib +ib +fm +eY +aa +aa +bk +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(96,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bk +cl +bk +aa +aa +bk +cl +bk +bk +bk +bk +bk +bk +ab +ag +ag +eY +fm +gH +fH +TG +fm +fm +fm +ib +ib +ib +fm +eY +aa +aa +bk +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(97,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +ab +ag +ag +eY +fm +fH +fh +ga +fH +ib +fm +ib +ib +ib +fm +eY +aa +aa +bk +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(98,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +aS +ag +ag +eY +fm +fm +eU +ga +fH +ib +fm +fm +fm +fm +fm +eY +aa +aa +bk +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(99,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +aS +ag +ag +eY +fm +fL +fF +fF +fF +fF +fF +eY +eY +eY +eY +eY +hq +hq +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(100,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +aS +ag +ag +eY +fm +fJ +eN +eN +eN +eN +eN +eY +fm +fm +fm +fm +fm +ie +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(101,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +aS +ag +ag +eY +fm +fK +eN +eN +eN +eN +eN +fT +fm +fm +gj +gj +gj +fm +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(102,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +ab +ag +ag +eY +eY +eY +eY +eY +eY +eY +eY +eY +fm +gH +fH +fH +fH +ib +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(103,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +ab +ab +ag +ag +ag +ag +ag +ag +ag +ag +ag +aR +fm +gH +fH +fH +fH +ib +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(104,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +aa +ab +ex +bb +ag +ag +ag +gb +ag +aE +gI +eY +fm +fm +eN +eN +eN +fm +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(105,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +eY +hb +fm +fm +fm +fm +ig +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(106,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +eY +eY +hq +hq +hq +hq +hq +eY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(107,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(108,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hQ +cl +hQ +aa +aa +hQ +cl +hQ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(109,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(110,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(111,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(112,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(113,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(114,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(115,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(116,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(117,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(118,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(119,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(120,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(121,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(122,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(123,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(124,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(125,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(126,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(127,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(128,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index a656e5cd0d..a25808d933 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -1640,7 +1640,7 @@ pixel_y = 32 }, /obj/item/paper/fluff/awaymissions/caves/shipment_notice, -/obj/item/paper/fluff/awaymissions/caves/saftey_notice, +/obj/item/paper/fluff/awaymissions/caves/safety_notice, /turf/open/floor/plasteel, /area/awaymission/caves/listeningpost) "fb" = ( diff --git a/_maps/RandomZLevels/challenge.dmm b/_maps/RandomZLevels/challenge.dmm index 0ed12617b2..e437503b40 100644 --- a/_maps/RandomZLevels/challenge.dmm +++ b/_maps/RandomZLevels/challenge.dmm @@ -37,7 +37,6 @@ "ai" = ( /obj/item/flashlight{ icon_state = "flashlight-on"; - item_state = "flashlight"; on = 1 }, /turf/open/floor/plasteel/airless, @@ -656,7 +655,6 @@ dir = 1 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 28 }, @@ -681,7 +679,6 @@ /area/awaymission/challenge/end) "cg" = ( /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -27 }, diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 49929e67f1..9f8f845287 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -728,7 +728,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/computer/monitor, +/obj/machinery/computer/monitor/secret, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -2707,12 +2707,10 @@ /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) "fJ" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector{ +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ desc = "Has a valve and pump attached to it. This one has been applied with an acid-proof coating."; dir = 8; - icon_state = "on"; - name = "Acid-Proof Air Injector"; - on = 1 + name = "Acid-Proof Air Injector" }, /obj/structure/alien/weeds, /turf/open/floor/engine, @@ -3126,7 +3124,7 @@ }, /area/awaymission/moonoutpost19/research) "gA" = ( -/obj/machinery/computer/monitor{ +/obj/machinery/computer/monitor/secret{ dir = 1 }, /obj/structure/cable, @@ -3973,7 +3971,6 @@ /area/awaymission/moonoutpost19/research) "ie" = ( /obj/machinery/door/airlock/medical{ - id_tag = ""; name = "Research Division"; req_access_txt = "201" }, @@ -5348,7 +5345,6 @@ "kW" = ( /obj/structure/closet/emcloset, /turf/open/floor/plasteel/blue/side{ - dir = 0; heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) @@ -5360,7 +5356,6 @@ }, /obj/item/multitool, /turf/open/floor/plasteel/blue/side{ - dir = 0; heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) @@ -5372,14 +5367,12 @@ maxcharge = 15000 }, /turf/open/floor/plasteel/blue/side{ - dir = 0; heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) "kZ" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/blue/side{ - dir = 0; heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) @@ -6776,7 +6769,6 @@ /area/awaymission/moonoutpost19/arrivals) "Mm" = ( /obj/machinery/door/airlock/medical{ - id_tag = ""; name = "Research Division"; req_access_txt = "201" }, diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 7be855dde9..a4d1cc43fb 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -1253,9 +1253,6 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/plasteel/darkpurple, /area/awaymission/research/interior/genetics) -"dP" = ( -/turf/open/floor/plasteel/darkpurple, -/area/awaymission/research/interior/genetics) "dQ" = ( /obj/structure/window/reinforced{ dir = 8 @@ -3106,19 +3103,16 @@ "jr" = ( /obj/structure/sign/directions/security{ dir = 1; - icon_state = "direction_sec"; pixel_x = 32; pixel_y = 40 }, /obj/structure/sign/directions/engineering{ dir = 1; - icon_state = "direction_eng"; pixel_x = 32; pixel_y = 33 }, /obj/structure/sign/directions/science{ dir = 1; - icon_state = "direction_sci"; pixel_x = 32; pixel_y = 26 }, @@ -36975,7 +36969,7 @@ fc fE ea cK -dP +cK dt cK cK @@ -37735,7 +37729,7 @@ cJ cK cK cK -dP +cK ea ez fg @@ -38005,7 +37999,7 @@ ea hV cK cK -dP +cK iI cx cd diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 63255686d8..42d28622c1 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -5713,7 +5713,7 @@ /turf/open/floor/plasteel, /area/awaymission/snowdin/post/engineering) "ns" = ( -/obj/machinery/computer/monitor, +/obj/machinery/computer/monitor/secret, /obj/structure/cable/yellow{ icon_state = "0-8" }, @@ -7654,7 +7654,7 @@ /turf/open/floor/plating, /area/awaymission/snowdin/post/cavern2) "sv" = ( -/obj/machinery/computer/monitor{ +/obj/machinery/computer/monitor/secret{ dir = 8 }, /obj/structure/cable/yellow, @@ -8295,7 +8295,7 @@ }, /area/awaymission/snowdin/post/cavern1) "uA" = ( -/obj/machinery/computer/monitor{ +/obj/machinery/computer/monitor/secret{ dir = 1 }, /obj/structure/cable/yellow{ @@ -9090,7 +9090,7 @@ /turf/open/floor/plating, /area/awaymission/snowdin/post/mining_dock) "wJ" = ( -/obj/machinery/computer/monitor, +/obj/machinery/computer/monitor/secret, /obj/structure/cable/yellow{ icon_state = "2-8" }, @@ -9263,23 +9263,10 @@ /turf/open/floor/plating/snowed, /area/awaymission/snowdin/cave) "xl" = ( -/obj/effect/baseturf_helper/asteroid/snow, -/turf/closed/wall/ice, -/area/shuttle/snowdin/elevator1) -"xm" = ( -/obj/structure/window/reinforced/fulltile/ice, -/obj/structure/grille, -/turf/open/floor/plating, -/area/shuttle/snowdin/elevator1) -"xn" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Elevator Access" +/turf/open/floor/plasteel/elevatorshaft{ + initial_gas_mix = "o2=22;n2=82;TEMP=180" }, -/turf/open/floor/plating, -/area/shuttle/snowdin/elevator1) -"xo" = ( -/turf/closed/wall/ice, -/area/shuttle/snowdin/elevator1) +/area/awaymission/snowdin/cave) "xp" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -9330,18 +9317,6 @@ }, /turf/open/floor/engine/cult, /area/awaymission/snowdin/post/mining_dock) -"xv" = ( -/turf/open/floor/engine, -/area/shuttle/snowdin/elevator1) -"xw" = ( -/obj/machinery/computer/shuttle/snowdin/mining{ - dir = 2; - name = "Excavation Elevator Console"; - possible_destinations = "snowdin_excavation_top;snowdin_excavation_down"; - shuttleId = "snowdin_excavation" - }, -/turf/open/floor/engine, -/area/shuttle/snowdin/elevator1) "xx" = ( /obj/effect/spawner/lootdrop/crate_spawner, /turf/open/floor/plasteel/neutral, @@ -9430,26 +9405,20 @@ }, /area/awaymission/snowdin/post/mining_dock) "xK" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Elevator Access" - }, -/obj/docking_port/mobile/elevator{ - dir = 4; - height = 6; - id = "snowdin_excavation"; - name = "excavation elevator"; - width = 6 - }, /obj/docking_port/stationary{ + area_type = /area/awaymission/snowdin/cave; dir = 4; dwidth = 3; height = 6; id = "snowdin_excavation_top"; name = "snowdin excavation top"; + roundstart_template = /datum/map_template/shuttle/snowdin/excavation; width = 6 }, -/turf/open/floor/plating, -/area/shuttle/snowdin/elevator1) +/turf/open/floor/plasteel/elevatorshaft{ + initial_gas_mix = "o2=22;n2=82;TEMP=180" + }, +/area/awaymission/snowdin/cave) "xL" = ( /obj/machinery/atmospherics/pipe/manifold/orange/visible{ dir = 8 @@ -9476,6 +9445,7 @@ /area/awaymission/snowdin/post/mining_dock) "xP" = ( /obj/docking_port/stationary{ + area_type = /area/awaymission/snowdin/post/mining_dock; dir = 4; dwidth = 3; height = 6; @@ -9483,7 +9453,7 @@ name = "snowdin excavation down"; width = 6 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/elevatorshaft, /area/awaymission/snowdin/post/mining_dock) "xQ" = ( /obj/effect/turf_decal/stripes/line{ @@ -9917,20 +9887,6 @@ }, /turf/open/floor/engine/vacuum, /area/awaymission/snowdin/cave) -"zb" = ( -/obj/structure/window/reinforced/fulltile/ice, -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 4; - frequency = 1442; - id_tag = "snowdin_toxins_mine_1"; - name = "toxin out" - }, -/turf/open/floor/plating, -/area/awaymission/snowdin/cave) "zc" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 8 @@ -10729,7 +10685,7 @@ /turf/open/floor/plating, /area/awaymission/snowdin/post/minipost) "Br" = ( -/obj/machinery/computer/monitor, +/obj/machinery/computer/monitor/secret, /turf/open/floor/plating, /area/awaymission/snowdin/post/minipost) "Bs" = ( @@ -10881,7 +10837,6 @@ /area/awaymission/snowdin/cave) "BO" = ( /obj/effect/turf_decal/stripes/end{ - icon_state = "warn_end"; dir = 1 }, /turf/open/floor/plating/snowed/cavern, @@ -10895,7 +10850,6 @@ /area/awaymission/snowdin/cave/cavern) "BQ" = ( /obj/effect/turf_decal/stripes/end{ - icon_state = "warn_end"; dir = 8 }, /turf/open/floor/plating/snowed/cavern, @@ -12310,13 +12264,6 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/plating/snowed/cavern, /area/awaymission/snowdin/cave/cavern) -"FP" = ( -/turf/open/floor/plating/asteroid/snow/ice, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plating/snowed/cavern, -/area/awaymission/snowdin/cave/cavern) "FQ" = ( /obj/effect/light_emitter{ name = "outdoor light"; @@ -12368,13 +12315,6 @@ }, /turf/open/floor/plating/asteroid/snow/ice, /area/awaymission/snowdin/cave/cavern) -"FX" = ( -/turf/open/floor/plating/asteroid/snow/ice, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/snowed/cavern, -/area/awaymission/snowdin/cave/cavern) "FY" = ( /turf/open/floor/plating/asteroid/snow/ice, /obj/machinery/conveyor{ @@ -13360,7 +13300,7 @@ }, /area/awaymission/snowdin/post/mining_main) "IZ" = ( -/obj/machinery/computer/monitor, +/obj/machinery/computer/monitor/secret, /obj/structure/cable/yellow{ icon_state = "0-4" }, @@ -13444,9 +13384,6 @@ /turf/open/floor/plating, /area/awaymission/snowdin/post/mining_dock) "Jl" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, /obj/machinery/door/airlock/mining/glass{ name = "Mining Dock"; req_access_txt = "48" @@ -13489,9 +13426,6 @@ /turf/open/floor/plating/snowed/cavern, /area/awaymission/snowdin/cave/cavern) "Jr" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, /obj/machinery/door/airlock/mining/glass{ name = "Mining Dock"; req_access_txt = "48" @@ -13652,23 +13586,8 @@ }, /area/awaymission/snowdin/post/mining_main) "JQ" = ( -/obj/effect/baseturf_helper/asteroid/snow, -/turf/closed/wall/rust, -/area/shuttle/snowdin/elevator2) -"JR" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/shuttle/snowdin/elevator2) -"JS" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Elevator Access" - }, -/turf/open/floor/plating, -/area/shuttle/snowdin/elevator2) -"JT" = ( -/turf/closed/wall, -/area/shuttle/snowdin/elevator2) +/turf/open/floor/plasteel/elevatorshaft, +/area/awaymission/snowdin/post/mining_main) "JU" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -13731,19 +13650,6 @@ dir = 8 }, /area/awaymission/snowdin/post/mining_main) -"Kd" = ( -/obj/machinery/computer/shuttle/snowdin/mining, -/turf/open/floor/engine, -/area/shuttle/snowdin/elevator2) -"Ke" = ( -/turf/open/floor/engine, -/area/shuttle/snowdin/elevator2) -"Kf" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/engine, -/area/shuttle/snowdin/elevator2) "Kg" = ( /obj/structure/ore_box, /obj/effect/turf_decal/bot, @@ -13779,7 +13685,7 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/obj/machinery/computer/monitor, +/obj/machinery/computer/monitor/secret, /obj/structure/cable/yellow{ icon_state = "0-8" }, @@ -13805,27 +13711,18 @@ }, /area/awaymission/snowdin/post/mining_main) "Kn" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Elevator Access" - }, -/obj/docking_port/mobile/elevator{ - dir = 4; - dwidth = 2; - height = 5; - id = "snowdin_mining"; - name = "mining elevator"; - width = 5 - }, /obj/docking_port/stationary{ + area_type = /area/awaymission/snowdin/post/mining_main; dir = 4; dwidth = 2; height = 5; id = "snowdin_mining_top"; name = "snowdin mining top"; + roundstart_template = /datum/map_template/shuttle/snowdin/mining; width = 5 }, -/turf/open/floor/plating, -/area/shuttle/snowdin/elevator2) +/turf/open/floor/plasteel/elevatorshaft, +/area/awaymission/snowdin/post/mining_main) "Ko" = ( /obj/machinery/light{ dir = 4 @@ -13875,7 +13772,7 @@ name = "snowdin mining bottom"; width = 5 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/elevatorshaft, /area/awaymission/snowdin/post/mining_dock) "Ku" = ( /obj/machinery/light{ @@ -13944,10 +13841,6 @@ }, /turf/open/floor/plasteel, /area/awaymission/snowdin/post/mining_main) -"KC" = ( -/obj/machinery/light/small, -/turf/open/floor/engine, -/area/shuttle/snowdin/elevator2) "KD" = ( /obj/structure/ore_box, /obj/effect/turf_decal/bot, @@ -14020,9 +13913,6 @@ dir = 4 }, /area/awaymission/snowdin/post/mining_main) -"KP" = ( -/turf/closed/wall/rust, -/area/shuttle/snowdin/elevator2) "KQ" = ( /obj/machinery/computer/shuttle/snowdin/mining{ dir = 8 @@ -14158,6 +14048,20 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/awaymission/snowdin/post/mining_dock) +"WK" = ( +/turf/open/floor/plating/asteroid/snow/ice, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) +"XO" = ( +/turf/open/floor/plating/asteroid/snow/ice, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/snowed/cavern, +/area/awaymission/snowdin/cave/cavern) "Yn" = ( /obj/machinery/door/airlock/external/glass, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -14165,6 +14069,9 @@ }, /turf/open/floor/plating, /area/awaymission/snowdin/post/garage) +"Ys" = ( +/turf/open/floor/plasteel/elevatorshaft, +/area/awaymission/snowdin/post/mining_dock) (1,1,1) = {" aa @@ -28203,7 +28110,7 @@ wS wS ai yf -zb +yt ai wS wS @@ -28287,10 +28194,10 @@ IY Go Jx JQ -JR +JQ Kn -JR -JT +JQ +JQ KT Go ac @@ -28442,7 +28349,7 @@ ii yb an yf -zb +yt yf ai ai @@ -28543,11 +28450,11 @@ Gq Gq Go Jx -JR -Kd -Ke -KC -JR +JQ +JQ +JQ +JQ +JQ KT GP ac @@ -28800,11 +28707,11 @@ Iy Iy Go Jy -JS -Ke -Ke -Ke -JS +JQ +JQ +JQ +JQ +JQ KU GP ac @@ -29057,11 +28964,11 @@ GP GP GP Jx -JR -Kf -Ke -Ke -JR +JQ +JQ +JQ +JQ +JQ KT GP ac @@ -29314,11 +29221,11 @@ ae ae Go Jx -JT -JR -JS -JR -KP +JQ +JQ +JQ +JQ +JQ KT GP ac @@ -30234,11 +30141,11 @@ ae aj xa xl -xm -xn +xl +xl xK -xm -xo +xl +xl an ii ii @@ -30490,12 +30397,12 @@ ae ae aj xa -xm -xv -xv -xv -xv -xm +xl +xl +xl +xl +xl +xl yp ii wS @@ -30747,12 +30654,12 @@ ae wQ ai xb -xn -xv -xv -xv -xv -xn +xl +xl +xl +xl +xl +xl yq ii wS @@ -31004,12 +30911,12 @@ ae wQ ai xb -xn -xv -xv -xv -xv -xn +xl +xl +xl +xl +xl +xl yq an ii @@ -31261,12 +31168,12 @@ ae wQ wS xa -xm -xw -xv -xv -xv -xm +xl +xl +xl +xl +xl +xl yr an ii @@ -31518,12 +31425,12 @@ ae wQ wS xa -xo -xm -xn -xn -xm -xo +xl +xl +xl +xl +xl +xl yp an an @@ -62467,11 +62374,11 @@ IO wL wE JH -wL -wL +Ys +Ys Kt -wL -wL +Ys +Ys KX wE bh @@ -62724,11 +62631,11 @@ IQ wL wE JH -wL -wL -wL -wL -wL +Ys +Ys +Ys +Ys +Ys KX wE bh @@ -62981,11 +62888,11 @@ wL wL wE JI -wL -wL -wL -wL -wL +Ys +Ys +Ys +Ys +Ys KY wE bh @@ -63238,11 +63145,11 @@ wL wL wE JH -wL -wL -wL -wL -wL +Ys +Ys +Ys +Ys +Ys KX wE bh @@ -63495,11 +63402,11 @@ wL wL wD JH -wL -wL -wL -wL -wL +Ys +Ys +Ys +Ys +Ys KX wD bh @@ -64254,7 +64161,7 @@ oZ oZ oZ FN -FX +XO Gk GN Hj @@ -64767,7 +64674,7 @@ oZ oZ oZ oZ -FP +WK xW xW xW @@ -65442,12 +65349,12 @@ eJ wE wV xg -wL -wL -wL +Ys +Ys +Ys xP -wL -wL +Ys +Ys yz yR wD @@ -65699,12 +65606,12 @@ eJ wD wW xg -wL -wL -wL -wL -wL -wL +Ys +Ys +Ys +Ys +Ys +Ys yA wM zm @@ -65956,12 +65863,12 @@ wD wP wX xg -wL -wL -wL -wL -wL -wL +Ys +Ys +Ys +Ys +Ys +Ys yB xy zn @@ -66214,11 +66121,11 @@ wP wW xh wW -wL -wL -wL -wL -wL +Ys +Ys +Ys +Ys +Ys yB xy zn @@ -66472,10 +66379,10 @@ wW xh wW wW -wW -wL -wL -wL +Ys +Ys +Ys +Ys yC yS zm @@ -66730,9 +66637,9 @@ xi wW wW wW -wL -wL -wL +Ys +Ys +Ys yD yT wE diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index 845238dafd..8c4dc1adf0 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -1388,16 +1388,12 @@ }, /area/awaymission/spacebattle/cruiser) "fJ" = ( -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/awaymission/spacebattle/cruiser) "fK" = ( /obj/item/ammo_casing/c10mm, /obj/item/ammo_casing/c10mm, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/awaymission/spacebattle/cruiser) "fL" = ( /obj/item/stack/sheet/metal, @@ -1407,9 +1403,7 @@ /area/awaymission/spacebattle/cruiser) "fM" = ( /obj/item/ammo_casing/shotgun, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/awaymission/spacebattle/cruiser) "fN" = ( /obj/effect/mob_spawn/human/syndicatesoldier, @@ -1417,9 +1411,7 @@ /obj/item/ammo_casing/c10mm, /obj/item/ammo_casing/c10mm, /obj/effect/decal/cleanable/blood, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/awaymission/spacebattle/cruiser) "fO" = ( /obj/item/ammo_casing/c10mm, @@ -1773,9 +1765,7 @@ /area/awaymission/spacebattle/cruiser) "gZ" = ( /obj/structure/table/reinforced, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/awaymission/spacebattle/cruiser) "ha" = ( /obj/effect/spawner/structure/window/hollow/reinforced/end, @@ -2471,9 +2461,7 @@ /obj/item/ammo_casing/c10mm, /obj/item/ammo_casing/c10mm, /obj/item/stack/sheet/metal, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/awaymission/spacebattle/cruiser) "jP" = ( /obj/structure/closet/crate/internals, diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 2e1d6377ac..5fa5545c1c 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -458,8 +458,7 @@ /area/awaymission/undergroundoutpost45/central) "bm" = ( /obj/structure/chair/comfy/beige{ - dir = 1; - icon_state = "comfychair" + dir = 1 }, /turf/open/floor/plasteel/grimy{ heat_capacity = 1e+006 @@ -6238,10 +6237,9 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "mZ" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Air to Distro"; - on = 1 + name = "Air to Distro" }, /turf/open/floor/plasteel{ heat_capacity = 1e+006 @@ -7780,10 +7778,7 @@ dir = 2; id = "UO45_air_in" }, -/turf/open/floor/engine{ - name = "air floor"; - initial_gas_mix = "n2=10580;o2=2644" - }, +/turf/open/floor/engine/air, /area/awaymission/undergroundoutpost45/engineering) "pG" = ( /obj/structure/cable{ @@ -8025,10 +8020,7 @@ external_pressure_bound = 120; name = "server vent" }, -/turf/open/floor/circuit{ - name = "Server Base"; - initial_gas_mix = "n2=500,TEMP=80" - }, +/turf/open/floor/circuit/telecomms/server, /area/awaymission/undergroundoutpost45/research) "qi" = ( /obj/machinery/atmospherics/pipe/simple{ @@ -8238,7 +8230,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/computer/monitor{ +/obj/machinery/computer/monitor/secret{ name = "primary power monitoring console" }, /obj/structure/sign/warning/nosmoking{ @@ -8396,10 +8388,7 @@ /obj/machinery/rnd/server{ req_access = null }, -/turf/open/floor/circuit{ - name = "Server Base"; - initial_gas_mix = "n2=500,TEMP=80" - }, +/turf/open/floor/circuit/telecomms/server, /area/awaymission/undergroundoutpost45/research) "qQ" = ( /obj/machinery/atmospherics/pipe/manifold{ @@ -8749,10 +8738,9 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Mix to Exterior"; - on = 1 + name = "Mix to Exterior" }, /turf/open/floor/plasteel{ heat_capacity = 1e+006 @@ -9649,10 +9637,9 @@ }, /area/awaymission/undergroundoutpost45/engineering) "sU" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Waste In"; - on = 1 + name = "Waste In" }, /turf/open/floor/plasteel/floorgrime{ dir = 8; @@ -9688,10 +9675,8 @@ }, /area/awaymission/undergroundoutpost45/engineering) "sY" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Mix to Filter"; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Mix to Filter" }, /turf/open/floor/plasteel{ heat_capacity = 1e+006 @@ -10043,20 +10028,18 @@ }, /area/awaymission/undergroundoutpost45/engineering) "tH" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "N2 Outlet Pump"; - on = 1 + name = "N2 Outlet Pump" }, /turf/open/floor/plasteel{ heat_capacity = 1e+006 }, /area/awaymission/undergroundoutpost45/engineering) "tI" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "O2 Outlet Pump"; - on = 1 + name = "O2 Outlet Pump" }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel{ @@ -10064,10 +10047,9 @@ }, /area/awaymission/undergroundoutpost45/engineering) "tJ" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Unfiltered to Mix"; - on = 1 + name = "Unfiltered to Mix" }, /obj/structure/sign/warning/nosmoking{ pixel_x = 32 @@ -10336,20 +10318,17 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "External to Filter"; - on = 1 + name = "External to Filter" }, /turf/open/floor/plasteel{ heat_capacity = 1e+006 }, /area/awaymission/undergroundoutpost45/engineering) "uk" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Air to External"; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Air to External" }, /turf/open/floor/plasteel{ heat_capacity = 1e+006 @@ -11923,7 +11902,7 @@ }, /area/awaymission/undergroundoutpost45/engineering) "xk" = ( -/obj/machinery/computer/monitor{ +/obj/machinery/computer/monitor/secret{ dir = 1; name = "primary power monitoring console" }, @@ -12615,6 +12594,12 @@ /obj/effect/mapping_helpers/planet_z, /turf/open/space, /area/space/nearstation) +"KE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/circuit/telecomms/server, +/area/awaymission/undergroundoutpost45/research) (1,1,1) = {" aa @@ -37937,7 +37922,7 @@ gz gz gz gz -qh +KE qP qh gz diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 896f874960..57864ee2c4 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -1076,8 +1076,7 @@ /area/awaymission/wildwest/mines) "dO" = ( /obj/structure/chair/comfy/beige{ - dir = 1; - icon_state = "comfychair" + dir = 1 }, /turf/open/floor/carpet, /area/awaymission/wildwest/mines) @@ -1331,16 +1330,10 @@ icon_state = "ironsand4" }, /area/awaymission/wildwest/gov) -"ez" = ( -/turf/open/floor/plasteel, -/area/awaymission/wildwest/refine) "eA" = ( /obj/machinery/mineral/mint, /turf/open/floor/plasteel, /area/awaymission/wildwest/refine) -"eB" = ( -/turf/open/floor/plasteel, -/area/awaymission/wildwest/refine) "eC" = ( /obj/structure/chair/comfy/brown, /turf/open/floor/wood, @@ -28798,7 +28791,7 @@ aG aG aG et -ez +eu eu eu eu @@ -29312,7 +29305,7 @@ aW aW aW et -eB +eu eu eu eu diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm index da795b6933..6a7e1d3636 100644 --- a/_maps/_basemap.dm +++ b/_maps/_basemap.dm @@ -5,7 +5,6 @@ #ifndef LOWMEMORYMODE #ifdef ALL_MAPS #include "map_files\Mining\Lavaland.dmm" - #include "map_files\generic\City_of_Cogs.dmm" #include "map_files\debug\runtimestation.dmm" #include "map_files\Deltastation\DeltaStation2.dmm" #include "map_files\MetaStation\MetaStation.dmm" diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index ed9b371a7c..f9b486dfb6 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -33,13 +33,6 @@ }, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) -"aad" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 1 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) "aae" = ( /obj/effect/landmark/carpspawn, /turf/open/space, @@ -115,6 +108,9 @@ }, /area/security/prison) "aaq" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, /obj/machinery/hydroponics/soil, /obj/item/plant_analyzer, /obj/machinery/camera{ @@ -212,11 +208,6 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (WEST)"; - icon_state = "cryopod-open"; - dir = 8 - }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "aaH" = ( @@ -275,11 +266,23 @@ }, /turf/open/floor/plasteel/barber, /area/security/prison) +"aaR" = ( +/obj/structure/lattice, +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, +/turf/open/space, +/area/space/nearstation) "aaS" = ( /obj/structure/grille, /obj/structure/lattice, /turf/open/space, /area/space/nearstation) +"aaT" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) "aaU" = ( /obj/machinery/computer/arcade, /turf/open/floor/plasteel/floorgrime, @@ -383,6 +386,26 @@ /obj/machinery/vending/security, /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"abm" = ( +/obj/structure/table, +/obj/item/storage/box/firingpins, +/obj/item/storage/box/firingpins, +/obj/item/key/security, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abn" = ( +/obj/structure/rack, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/item/gun/energy/e_gun/dragnet, +/obj/item/gun/energy/e_gun/dragnet, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) "abo" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -499,11 +522,91 @@ base_state = "right"; dir = 8; icon_state = "right"; - name = "Unisex Showers"; - req_access_txt = "0" + name = "Unisex Showers" }, /turf/open/floor/plasteel/freezer, /area/security/prison) +"abH" = ( +/obj/structure/table, +/obj/item/storage/box/chemimp{ + pixel_x = 6 + }, +/obj/item/storage/box/trackimp{ + pixel_x = -3 + }, +/obj/item/storage/lockbox/loyalty, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abI" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/shield/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/shield/riot, +/obj/item/shield/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abJ" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/camera/motion{ + c_tag = "Armory Motion Sensor"; + dir = 2 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) "abK" = ( /obj/structure/chair/stool, /obj/machinery/light/small{ @@ -514,7 +617,6 @@ name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_y = 25; - req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -530,7 +632,6 @@ name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_y = 25; - req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -545,45 +646,35 @@ /turf/open/floor/plasteel/floorgrime, /area/security/prison) "abN" = ( -/obj/machinery/door/poddoor/shutters{ - id = "armory"; - name = "Armoury Shutter" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/structure/closet/secure_closet/lethalshots, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "abO" = ( /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"abP" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "abQ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/window/southleft{ - base_state = "right"; - dir = 1; - icon_state = "right"; - name = "Armory"; - req_access_txt = "3" +/obj/structure/rack, +/obj/machinery/airalarm{ + pixel_y = 23 }, -/obj/effect/turf_decal/stripes/line{ +/obj/item/gun/energy/ionrifle, +/obj/item/gun/energy/temperature/security, +/obj/item/clothing/suit/armor/laserproof, +/turf/open/floor/plasteel/vault{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "abR" = ( /obj/structure/closet/secure_closet/security/sec, /obj/machinery/light{ dir = 4 }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/showroomfloor, /area/security/main) "abS" = ( @@ -616,7 +707,7 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "abV" = ( -/obj/machinery/computer/security, +/obj/machinery/computer/security/hos, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "abW" = ( @@ -717,19 +808,13 @@ /area/security/prison) "ach" = ( /obj/machinery/door/airlock{ - name = "Unisex Restroom"; - req_access_txt = "0" + name = "Unisex Restroom" }, /turf/open/floor/plasteel/freezer, /area/security/prison) "aci" = ( -/obj/machinery/door/poddoor/shutters{ - id = "armory"; - name = "Armoury Shutter" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, +/obj/vehicle/ridden/secway, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "acj" = ( /obj/machinery/light{ @@ -739,9 +824,6 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "ack" = ( -/obj/machinery/firealarm{ - pixel_y = 24 - }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -751,9 +833,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/machinery/airalarm{ - pixel_y = 23 - }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "acm" = ( @@ -763,13 +842,12 @@ name = "Armory APC"; pixel_x = 24 }, +/obj/structure/cable{ + icon_state = "0-2" + }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "0-8" - }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "acn" = ( @@ -779,13 +857,21 @@ /obj/structure/closet/secure_closet/hos, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) +"aco" = ( +/obj/structure/closet/bombcloset/security, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "acp" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"acq" = ( +/obj/effect/landmark/secequipment, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "acr" = ( /obj/structure/chair/comfy/black, -/obj/effect/landmark/start/head_of_security, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "acs" = ( @@ -810,10 +896,16 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "acv" = ( -/obj/structure/closet/secure_closet/lethalshots, -/obj/effect/turf_decal/bot_white, +/obj/structure/closet/secure_closet/contraband/armory, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) +"acw" = ( +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) "acx" = ( /obj/structure/cable{ icon_state = "1-2" @@ -873,7 +965,6 @@ name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_y = 25; - req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -919,7 +1010,6 @@ "acI" = ( /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/atmospherics/pipe/simple/general/hidden, @@ -968,6 +1058,7 @@ pixel_x = 3; pixel_y = -3 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/turf_decal/bot{ dir = 2 }, @@ -975,7 +1066,6 @@ dir = 1; layer = 2.9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel{ dir = 2 }, @@ -985,6 +1075,7 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) "acO" = ( +/obj/structure/closet/l3closet/security, /obj/machinery/camera{ c_tag = "Brig Equipment Room"; dir = 4 @@ -1059,7 +1150,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/door/firedoor, @@ -1076,7 +1166,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/door/firedoor, @@ -1130,7 +1219,9 @@ /turf/open/floor/plasteel/freezer, /area/security/prison) "adg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "adh" = ( @@ -1139,9 +1230,10 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "adi" = ( -/obj/structure/closet/secure_closet/contraband/armory, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/obj/machinery/flasher/portable, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/ai_monitored/security/armory) "adj" = ( /obj/structure/rack, @@ -1164,9 +1256,6 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel{ dir = 2 }, @@ -1464,7 +1553,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 2 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "adR" = ( @@ -1642,10 +1730,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("prison"); +/obj/machinery/computer/security/telescreen/prison{ pixel_y = 30 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -1681,10 +1766,7 @@ /turf/open/floor/plasteel, /area/security/prison) "aen" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("prison"); +/obj/machinery/computer/security/telescreen/prison{ pixel_y = 30 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -1753,14 +1835,10 @@ }, /area/security/prison) "aes" = ( -/obj/structure/rack, -/obj/item/gun/energy/ionrifle, -/obj/item/gun/energy/temperature/security, -/obj/item/clothing/suit/armor/laserproof, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/bot, +/obj/machinery/suit_storage_unit/security, /turf/open/floor/plasteel/red/side, /area/ai_monitored/security/armory) "aet" = ( @@ -1770,20 +1848,10 @@ /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "aeu" = ( -/obj/structure/rack, -/obj/item/storage/box/teargas{ - pixel_x = -3; - pixel_y = 3 +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/flashbangs{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/effect/turf_decal/bot, +/obj/machinery/suit_storage_unit/security, /turf/open/floor/plasteel/red/side, /area/ai_monitored/security/armory) "aev" = ( @@ -1929,11 +1997,8 @@ }, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ - aiControlDisabled = 0; - id_tag = null; - locked = 0; + aiControlDisabled = 1; name = "Prisoner Transfer Centre"; - req_access = null; req_access_txt = "2" }, /turf/open/floor/plasteel/dark, @@ -2028,20 +2093,32 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/closet/secure_closet/warden, +/obj/structure/rack, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas/sechailer, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = 3; + pixel_y = -3 + }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "aeX" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/structure/cable{ - icon_state = "0-4" - }, /turf/open/floor/plating, /area/ai_monitored/security/armory) "aeY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/machinery/door/window/southleft{ name = "Armory"; req_access_txt = "3" @@ -2050,21 +2127,18 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "aeZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 +/obj/structure/cable{ + icon_state = "0-8" }, /obj/structure/cable{ icon_state = "0-4" }, -/obj/structure/cable{ - icon_state = "0-8" +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 }, /turf/open/floor/plating, /area/ai_monitored/security/armory) @@ -2097,7 +2171,7 @@ pixel_x = 29 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/closet/wardrobe/red, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/showroomfloor, /area/security/main) "afe" = ( @@ -2184,6 +2258,7 @@ dir = 4; dwidth = 1; height = 4; + name = "escape pod loader"; roundstart_template = /datum/map_template/shuttle/escape_pod/default; width = 3 }, @@ -2322,7 +2397,6 @@ /area/security/prison) "afK" = ( /obj/machinery/door/airlock/security/glass{ - id_tag = null; name = "Evidence Storage"; req_access_txt = "63" }, @@ -2358,6 +2432,13 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) +"afQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/security/main) "afR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/spawner/structure/window/reinforced, @@ -2395,6 +2476,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/start/head_of_security, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/main) @@ -2414,6 +2496,9 @@ /turf/open/floor/plasteel, /area/security/main) "aga" = ( +/obj/structure/sign/warning/pods{ + pixel_x = 32 + }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -2432,6 +2517,10 @@ }, /turf/open/floor/plating, /area/security/main) +"agd" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) "agf" = ( /obj/structure/table, /obj/item/stack/sheet/metal, @@ -2499,7 +2588,6 @@ "agl" = ( /obj/machinery/door/airlock/security{ name = "Interrogation"; - req_access = null; req_access_txt = "63" }, /turf/open/floor/plasteel/dark, @@ -2517,16 +2605,12 @@ "agn" = ( /turf/closed/wall/r_wall, /area/security/warden) +"ago" = ( +/obj/machinery/computer/security, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "agp" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - areastring = "/area/security/warden"; - dir = 1; - name = "Brig Control APC"; - pixel_y = 24 - }, +/obj/machinery/computer/prisoner, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "agq" = ( @@ -2537,25 +2621,26 @@ name = "Armory"; req_access_txt = "3" }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/machinery/light{ dir = 4 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "agr" = ( +/obj/machinery/computer/secure_data, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) @@ -2653,6 +2738,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, /obj/machinery/door/poddoor/preopen{ id = "Prison Gate"; name = "prison blast door" @@ -2764,9 +2852,6 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "agU" = ( @@ -2910,9 +2995,7 @@ freq = 1400; location = "Security" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -2927,6 +3010,7 @@ dir = 4 }, /obj/machinery/iv_drip, +/obj/item/reagent_containers/blood, /turf/open/floor/plasteel/whitered/side{ dir = 5 }, @@ -2997,12 +3081,21 @@ }, /area/security/brig) "ahv" = ( -/obj/machinery/computer/prisoner{ - dir = 4 +/obj/machinery/power/apc{ + dir = 8; + name = "Brig Control APC"; + areastring = "/area/security/warden"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "ahx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/structure/cable{ icon_state = "2-4" }, @@ -3022,8 +3115,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) @@ -3065,8 +3158,7 @@ base_state = "left"; dir = 4; icon_state = "left"; - name = "Brig Infirmary"; - req_access_txt = "0" + name = "Brig Infirmary" }, /turf/open/floor/plasteel/whitered/side{ dir = 4 @@ -3219,15 +3311,32 @@ /turf/open/floor/plasteel/white, /area/security/brig) "ahQ" = ( +/obj/structure/closet/secure_closet/warden, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/computer/security{ - dir = 4 +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahR" = ( +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/warden, +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_x = -27; + pixel_y = 8; + req_access_txt = "2" + }, +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Cell Shutters"; + pixel_x = -27; + pixel_y = -2 }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "ahS" = ( +/obj/structure/table, /obj/structure/cable{ icon_state = "1-8" }, @@ -3267,11 +3376,18 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, +/obj/machinery/computer/crew{ + dir = 8 + }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "ahY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/red/side, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, /area/security/brig) "ahZ" = ( /obj/structure/disposalpipe/segment{ @@ -3328,12 +3444,14 @@ }, /area/security/brig) "aie" = ( +/obj/structure/table, +/obj/item/folder/red, +/obj/item/pen, +/obj/item/hand_labeler, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, +/obj/item/book/manual/wiki/security_space_law, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "aif" = ( @@ -3394,7 +3512,8 @@ "ail" = ( /obj/machinery/camera{ c_tag = "Brig Interrogation"; - dir = 8 + dir = 8; + network = list("interrogation") }, /turf/open/floor/plasteel/dark, /area/security/prison) @@ -3495,8 +3614,7 @@ base_state = "right"; dir = 4; icon_state = "right"; - name = "Brig Infirmary"; - req_access_txt = "0" + name = "Brig Infirmary" }, /turf/open/floor/plasteel/whitered/side{ dir = 4 @@ -3573,65 +3691,83 @@ }, /area/security/brig) "aiH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) +"aiI" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiJ" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Armory Desk"; + req_access_txt = "3" + }, +/obj/machinery/door/window/southleft{ + name = "Reception Desk"; + req_access_txt = "63" + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aiK" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiL" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, /obj/structure/cable{ icon_state = "0-4" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/security/brig) -"aiI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/table, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"aiJ" = ( -/obj/machinery/computer/crew{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"aiK" = ( -/obj/structure/chair/office/dark, -/obj/effect/landmark/start/warden, -/obj/machinery/button/door{ - id = "Prison Gate"; - name = "Prison Wing Lockdown"; - pixel_x = -27; - pixel_y = 8; - req_access_txt = "2" - }, -/obj/machinery/button/door{ - id = "seclobby"; - name = "Security Lobby Lockdown"; - pixel_x = -27; - pixel_y = -2; - req_access_txt = "2" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"aiL" = ( -/obj/machinery/computer/secure_data{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, /area/security/warden) "aiM" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/pen, -/obj/item/hand_labeler, -/obj/item/book/manual/wiki/security_space_law, -/obj/machinery/light, +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control"; + req_access_txt = "3" + }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"aiN" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) "aiO" = ( /obj/structure/window/reinforced{ dir = 4 @@ -3656,10 +3792,6 @@ /area/security/brig) "aiR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, /turf/open/floor/plasteel/red/side{ dir = 1 }, @@ -3681,7 +3813,6 @@ "aiW" = ( /obj/machinery/door/airlock/security{ name = "Interrogation"; - req_access = null; req_access_txt = "63" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -3727,15 +3858,21 @@ }, /area/security/brig) "ajd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/sign/plaques/golden{ + pixel_y = 32 + }, /turf/open/floor/plasteel/red/side{ dir = 1 }, /area/security/brig) "aje" = ( -/obj/item/twohanded/required/kirbyplants/random, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, /turf/open/floor/plasteel/red/side{ - dir = 9 + dir = 1 }, /area/security/brig) "ajf" = ( @@ -3752,7 +3889,6 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, /area/security/brig) "ajh" = ( @@ -3761,6 +3897,9 @@ }, /obj/structure/closet/secure_closet/courtroom, /obj/effect/decal/cleanable/cobweb, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, /obj/item/gavelhammer, /turf/open/floor/plasteel, /area/security/courtroom) @@ -3835,6 +3974,9 @@ /turf/open/floor/plasteel, /area/security/processing) "ajt" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -3849,10 +3991,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/obj/machinery/computer/security{ - name = "Labor Camp Monitoring"; - network = list("labor") - }, +/obj/machinery/computer/security/labor, /turf/open/floor/plasteel, /area/security/processing) "ajv" = ( @@ -3909,6 +4048,9 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, +/obj/machinery/computer/security/telescreen/interrogation{ + pixel_y = 30 + }, /turf/open/floor/plasteel/red/side{ dir = 1 }, @@ -3920,9 +4062,16 @@ }, /area/security/brig) "ajB" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/brig) +"ajC" = ( +/obj/item/storage/toolbox/drone, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "ajD" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3941,9 +4090,21 @@ "ajF" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /turf/open/floor/plasteel/red/corner{ - dir = 8 + dir = 2 }, /area/security/brig) +"ajG" = ( +/obj/machinery/light, +/obj/machinery/door_timer{ + id = "Cell 1"; + name = "Cell 1"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) "ajH" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -3959,12 +4120,11 @@ /turf/open/floor/plasteel, /area/security/brig) "ajJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, +/turf/open/floor/plasteel, /area/security/brig) "ajK" = ( /obj/structure/cable{ @@ -3994,7 +4154,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ name = "Brig"; - req_access = null; req_access_txt = "63; 42" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -4135,7 +4294,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ name = "Labor Shuttle"; - req_access = null; req_access_txt = "2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -4169,16 +4327,16 @@ /turf/open/floor/plasteel, /area/security/brig) "aki" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ icon_state = "1-8" }, /obj/structure/cable{ icon_state = "2-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/red/corner{ dir = 8 }, @@ -4193,21 +4351,16 @@ /turf/open/floor/plasteel/red/side, /area/security/brig) "akk" = ( -/obj/machinery/door_timer{ - id = "Cell 1"; - name = "Cell 1"; - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 }, /turf/open/floor/plasteel/red/corner{ dir = 2 }, /area/security/brig) "akl" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /turf/open/floor/plasteel, /area/security/brig) @@ -4228,12 +4381,20 @@ dir = 4 }, /area/security/courtroom) -"akp" = ( +"ako" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 +/obj/machinery/door_timer{ + id = "Cell 2"; + name = "Cell 2"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /turf/open/floor/plasteel/red/side, /area/security/brig) @@ -4246,46 +4407,45 @@ dir = 4 }, /obj/machinery/door_timer{ - id = "Cell 4"; - name = "Cell 4"; + id = "Cell 3"; + name = "Cell 3"; pixel_y = -32 }, -/turf/open/floor/plasteel/red/corner, +/turf/open/floor/plasteel/red/side, /area/security/brig) "akr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"aks" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/brig) -"akt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, /turf/open/floor/plasteel/red/side{ dir = 9 }, /area/security/brig) -"aku" = ( +"aks" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/red/corner{ + dir = 8 + }, +/area/security/brig) +"akt" = ( +/obj/machinery/light, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/door_timer{ + id = "Cell 4"; + name = "Cell 4"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"aku" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, /turf/open/floor/plasteel/red/side{ - dir = 6 + dir = 4 }, /area/security/brig) "akv" = ( @@ -4317,13 +4477,8 @@ }, /area/security/courtroom) "akz" = ( -/obj/structure/chair, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/floorgrime, /area/security/brig) "akA" = ( /obj/structure/chair{ @@ -4340,6 +4495,13 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port/fore) +"akG" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) "akH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -4377,23 +4539,26 @@ /turf/open/floor/plating, /area/maintenance/fore) "akM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2" + }, /obj/structure/cable{ icon_state = "0-4" }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/security/brig) "akN" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "0-8" - }, /obj/structure/cable{ icon_state = "0-4" }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/security/brig) "akO" = ( @@ -4401,22 +4566,21 @@ id = "Cell 1"; name = "Cell 1" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel/red/side, /area/security/brig) "akP" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 2"; - name = "Cell 2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-8" }, -/turf/open/floor/plasteel/red/side, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/security/brig) "akQ" = ( /obj/structure/cable{ @@ -4424,28 +4588,37 @@ }, /turf/closed/wall, /area/security/brig) -"akS" = ( +"akR" = ( /obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 4"; - name = "Cell 4" + id = "Cell 2"; + name = "Cell 2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel/red/side, /area/security/brig) -"akT" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +"akS" = ( /obj/structure/cable{ icon_state = "0-8" }, /obj/structure/cable{ icon_state = "0-4" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/security/brig) +"akT" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 3"; + name = "Cell 3" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) "akU" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Desk"; @@ -4469,40 +4642,71 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/security/brig) -"akX" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/turf/open/floor/plating, -/area/security/brig) -"akY" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "1-8" - }, +"akW" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "outerbrig"; + id_tag = "innerbrig"; name = "Brig"; req_access_txt = "63" }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/red/side{ dir = 5 }, /area/security/brig) +"akX" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) +"akY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akZ" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"ala" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 4"; + name = "Cell 4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/red/side, +/area/security/brig) "alb" = ( /obj/structure/chair{ dir = 4; name = "Prosecution" }, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel/red/side{ dir = 9 }, @@ -4527,10 +4731,10 @@ }, /area/security/courtroom) "alf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/red/side{ - dir = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 }, +/turf/open/floor/plasteel/floorgrime, /area/security/brig) "alg" = ( /obj/structure/cable{ @@ -4563,14 +4767,15 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aln" = ( -/obj/machinery/door/airlock/external{ - name = "Labor Camp Shuttle Airlock"; - req_access_txt = "2" - }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + req_access_txt = "2"; + shuttledocked = 1 + }, +/turf/open/floor/plating, /area/security/processing) "alp" = ( /turf/open/floor/plating, @@ -4603,7 +4808,13 @@ dir = 8 }, /area/ai_monitored/nuke_storage) -"alw" = ( +"alv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, /obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; @@ -4612,14 +4823,18 @@ pixel_y = -2; prison_radio = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/floorgrime, /area/security/brig) -"alx" = ( +"alw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) +"alx" = ( /turf/open/floor/plasteel/floorgrime, /area/security/brig) "aly" = ( @@ -4641,17 +4856,16 @@ id = "briggate"; name = "Desk Shutters"; pixel_x = -26; - pixel_y = 6; - req_access_txt = "0" + pixel_y = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" }, /obj/machinery/button/flasher{ id = "brigentry"; pixel_x = -28; pixel_y = -8 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel/dark, /area/security/brig) "alA" = ( @@ -4686,10 +4900,17 @@ /turf/open/floor/plating, /area/security/courtroom) "alE" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/plasteel/red/side{ - dir = 5 +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 }, +/obj/machinery/flasher{ + id = "Cell 4"; + pixel_x = 28 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, /area/security/brig) "alF" = ( /obj/machinery/atmospherics/components/unary/tank/air{ @@ -4833,6 +5054,11 @@ /turf/open/floor/plasteel, /area/security/processing) "amf" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/machinery/flasher{ id = "Cell 1"; pixel_x = -28 @@ -4846,6 +5072,15 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) +"amh" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/flasher{ + id = "Cell 2"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "ami" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 2"; @@ -4853,6 +5088,15 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) +"amj" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/flasher{ + id = "Cell 3"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "amk" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 3"; @@ -4907,6 +5151,15 @@ }, /turf/open/floor/plasteel/dark, /area/security/brig) +"amo" = ( +/obj/machinery/flasher{ + id = "brigentry"; + pixel_x = 28 + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/brig) "amp" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 4"; @@ -4915,14 +5168,17 @@ /turf/open/floor/plasteel/floorgrime, /area/security/brig) "amq" = ( -/obj/machinery/vending/snack/random, -/obj/machinery/flasher{ - id = "brigentry"; - pixel_x = 28 - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 +/obj/structure/bed, +/obj/item/bedsheet, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_x = 25; + pixel_y = -2; + prison_radio = 1 }, +/turf/open/floor/plasteel/floorgrime, /area/security/brig) "amr" = ( /obj/effect/spawner/structure/window/reinforced, @@ -5035,6 +5291,10 @@ /obj/item/trash/plate, /turf/open/floor/plating, /area/maintenance/port/fore) +"amK" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/security/processing) "amL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/spawner/structure/window/reinforced, @@ -5072,9 +5332,30 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "amQ" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/turf/open/floor/plasteel/floorgrime, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "brig shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"amR" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "brig shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/security/brig) "amS" = ( /obj/structure/cable{ @@ -5083,33 +5364,79 @@ /turf/closed/wall/r_wall, /area/security/brig) "amT" = ( -/obj/machinery/button/door{ - id = "seclobby"; - name = "Security Lobby Lockdown"; - pixel_x = -26; - pixel_y = 8; - req_access_txt = "2" +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/southleft{ + name = "Brig Desk"; + req_access_txt = "1" }, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "4-8" }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "lobbyairlock"; - name = "Security Lobby Doors Control"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = -2; - req_access_txt = "63" +/obj/structure/cable{ + icon_state = "1-8" }, /turf/open/floor/plasteel/dark, /area/security/brig) -"amV" = ( +"amU" = ( +/obj/machinery/door/poddoor/preopen{ + id = "briggate"; + name = "security blast door" + }, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"amV" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/open/floor/plasteel/dark, /area/security/brig) +"amW" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/brig) +"amX" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) "amY" = ( /obj/structure/chair{ dir = 1 @@ -5262,8 +5589,7 @@ name = "exit button"; normaldoorcontrol = 1; pixel_x = 26; - pixel_y = -6; - req_access_txt = "0" + pixel_y = -6 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -5289,6 +5615,25 @@ dir = 1 }, /area/hallway/primary/fore) +"anx" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/hallway/primary/fore) +"any" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/hallway/primary/fore) "anz" = ( /turf/open/floor/plasteel, /area/hallway/primary/fore) @@ -5297,14 +5642,21 @@ dir = 4 }, /area/hallway/primary/fore) +"anB" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/hallway/primary/fore) "anC" = ( /obj/effect/spawner/structure/window, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, /turf/open/floor/plating, -/area/security/brig) +/area/security/courtroom) "anD" = ( /obj/structure/cable{ icon_state = "1-2" @@ -5360,6 +5712,16 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) +"anN" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + shuttledocked = 1 + }, +/turf/open/floor/plating, +/area/security/processing) "anO" = ( /obj/docking_port/stationary{ dir = 8; @@ -5377,12 +5739,14 @@ /obj/machinery/door/airlock/security{ id_tag = "laborexit"; name = "Labor Shuttle"; - req_access = null; req_access_txt = "63" }, /turf/open/floor/plasteel, /area/security/processing) "anQ" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, /obj/machinery/light{ dir = 1 }, @@ -5390,34 +5754,23 @@ /area/hallway/primary/fore) "anR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, +/turf/open/floor/plasteel, /area/hallway/primary/fore) "anS" = ( /obj/machinery/holopad, /turf/open/floor/plasteel, /area/hallway/primary/fore) "anT" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, -/area/security/brig) +/area/hallway/primary/fore) "anU" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, /obj/machinery/door/airlock/public/glass{ name = "Courtroom" }, /turf/open/floor/plasteel/dark, -/area/security/brig) +/area/security/courtroom) "anV" = ( /obj/machinery/light/small, /turf/open/floor/plasteel/dark, @@ -5558,6 +5911,13 @@ /obj/item/circuitboard/machine/monkey_recycler, /turf/open/floor/plating, /area/maintenance/port/fore) +"aoq" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) "aor" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -5624,7 +5984,6 @@ codes_txt = "patrol;next_patrol=EVA"; location = "Security" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoz" = ( @@ -5632,25 +5991,31 @@ dir = 2 }, /area/hallway/primary/fore) +"aoA" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) "aoB" = ( /obj/machinery/firealarm{ dir = 1; pixel_y = -24 }, -/turf/open/floor/plasteel/red/side{ - dir = 10 +/turf/open/floor/plasteel/red/corner{ + dir = 2 }, -/area/security/brig) +/area/hallway/primary/fore) "aoC" = ( -/obj/structure/chair{ - dir = 1 +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel/red/corner{ + dir = 2 }, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -29 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) +/area/hallway/primary/fore) "aoD" = ( /obj/machinery/camera{ c_tag = "Fore Primary Hallway East"; @@ -5660,23 +6025,22 @@ pixel_x = 5; pixel_y = -32 }, -/obj/machinery/light, -/obj/structure/chair{ - dir = 1 +/turf/open/floor/plasteel/red/corner{ + dir = 2 }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) +/area/hallway/primary/fore) "aoE" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/bar, -/area/security/brig) +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) "aoF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plasteel/red/side, -/area/security/brig) +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) "aoG" = ( /obj/structure/table, /obj/machinery/firealarm{ @@ -5732,10 +6096,9 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "aoL" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Air Out"; - on = 1 + name = "Air Out" }, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -6065,11 +6428,8 @@ /turf/open/floor/plasteel, /area/janitor) "apI" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - frequency = 1441; - id = "waste_out"; - volume_rate = 200 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ + dir = 1 }, /obj/structure/lattice/catwalk, /turf/open/space, @@ -6519,7 +6879,7 @@ department = "Law office"; pixel_x = -32 }, -/obj/structure/closet/lawcloset, +/obj/machinery/vending/wardrobe/law_wardrobe, /turf/open/floor/wood, /area/lawoffice) "arb" = ( @@ -6531,9 +6891,6 @@ /area/lawoffice) "arc" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "ard" = ( @@ -7206,6 +7563,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/machinery/vr_sleeper, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -7556,11 +7914,8 @@ pixel_y = 7 }, /obj/item/pen, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; +/obj/machinery/computer/security/telescreen/prison{ dir = 1; - name = "Prison Monitor"; - network = list("prison"); pixel_y = -27 }, /turf/open/floor/wood, @@ -8426,9 +8781,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "awl" = ( @@ -8441,9 +8793,6 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "awm" = ( @@ -8456,9 +8805,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plating, /area/maintenance/fore/secondary) "awn" = ( @@ -8466,9 +8812,6 @@ dir = 9 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "2-8" - }, /turf/open/floor/plating, /area/maintenance/fore/secondary) "awo" = ( @@ -8562,6 +8905,7 @@ /area/crew_quarters/fitness) "awB" = ( /obj/effect/landmark/start/assistant, +/obj/machinery/vr_sleeper, /turf/open/floor/plasteel/green/side{ dir = 4 }, @@ -8641,6 +8985,18 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"awN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "awO" = ( /obj/structure/cable{ icon_state = "4-8" @@ -8770,12 +9126,9 @@ /obj/item/wallframe/camera, /obj/item/wallframe/camera, /obj/item/assault_pod/mining, -/obj/machinery/computer/security/telescreen{ - desc = "Used for the Auxillary Mining Base."; +/obj/machinery/computer/security/telescreen/auxbase{ dir = 8; - name = "Auxillary Base Monitor"; - network = list("auxbase"); - pixel_x = 28 + pixel_x = 30 }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -9003,9 +9356,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plating, /area/maintenance/fore/secondary) "axG" = ( @@ -9502,7 +9852,6 @@ name = "Dorm Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; - req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -9578,13 +9927,10 @@ /turf/open/floor/plating, /area/crew_quarters/fitness) "azh" = ( -/obj/machinery/camera{ - c_tag = "Fitness Room South"; - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/vr_sleeper, /turf/open/floor/plasteel/green/side{ dir = 4 }, @@ -9995,6 +10341,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, +/obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/plasteel/neutral/side{ dir = 10 }, @@ -10032,7 +10379,6 @@ /turf/open/floor/plasteel/neutral/side, /area/crew_quarters/fitness) "aAo" = ( -/obj/structure/reagent_dispensers/water_cooler, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral/side{ dir = 6 @@ -10732,18 +11078,14 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "aCd" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 25 +/obj/machinery/airalarm{ + pixel_y = 23 }, -/obj/structure/chair/office/dark{ +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/crew_quarters/cryopod) +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aCe" = ( /obj/effect/landmark/xeno_spawn, /obj/item/bikehorn/rubberducky, @@ -10856,8 +11198,8 @@ /turf/closed/wall, /area/crew_quarters/theatre) "aCs" = ( -/obj/structure/closet/wardrobe/red, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/red/side{ dir = 1 }, @@ -11358,6 +11700,12 @@ /obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) +"aDK" = ( +/obj/machinery/door/airlock{ + name = "Cryo airlock" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aDL" = ( /obj/structure/sink{ dir = 8; @@ -11626,16 +11974,6 @@ /obj/structure/fans/tiny, /turf/open/floor/plating, /area/chapel/main) -"aEs" = ( -/obj/structure/window/reinforced, -/obj/vehicle/ridden/secway, -/obj/item/key/security, -/obj/machinery/door/window/eastleft{ - name = "Secway Docking Port" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/space) "aEz" = ( /obj/machinery/power/apc{ dir = 4; @@ -11877,7 +12215,6 @@ "aFe" = ( /obj/machinery/camera{ c_tag = "Dormitory South"; - c_tag_order = 999; dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -12243,7 +12580,7 @@ /obj/machinery/camera/motion{ c_tag = "Vault"; dir = 1; - network = list("minisat") + network = list("vault") }, /obj/machinery/light, /turf/open/floor/plasteel/vault/corner{ @@ -12728,10 +13065,10 @@ /turf/open/floor/plasteel, /area/storage/primary) "aHf" = ( -/obj/structure/closet/wardrobe/chaplain_black, /obj/item/radio/intercom{ pixel_y = 25 }, +/obj/machinery/vending/wardrobe/chap_wardrobe, /turf/open/floor/plasteel/grimy, /area/chapel/office) "aHg" = ( @@ -12754,7 +13091,7 @@ /turf/open/floor/plasteel, /area/gateway) "aHi" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /obj/structure/window/reinforced{ dir = 8 }, @@ -12779,7 +13116,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "aHl" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /obj/machinery/door/window/eastleft{ name = "Coffin Storage"; req_access_txt = "22" @@ -12811,6 +13148,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) @@ -13125,9 +13465,7 @@ freq = 1400; location = "Bar" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -13315,7 +13653,7 @@ /turf/open/floor/plasteel/grimy, /area/chapel/office) "aID" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /obj/structure/window/reinforced{ dir = 4 }, @@ -13325,6 +13663,11 @@ /obj/structure/table/glass, /turf/open/floor/plasteel/chapel, /area/chapel/main) +"aIF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/warden) "aIH" = ( /obj/structure/table, /obj/item/storage/box/lights/mixed, @@ -13625,19 +13968,16 @@ "aJt" = ( /obj/structure/sign/directions/security{ dir = 1; - icon_state = "direction_sec"; pixel_x = 32; pixel_y = 40 }, /obj/structure/sign/directions/medical{ dir = 4; - icon_state = "direction_med"; pixel_x = 32; pixel_y = 32 }, /obj/structure/sign/directions/evac{ dir = 4; - icon_state = "direction_evac"; pixel_x = 32; pixel_y = 24 }, @@ -13763,9 +14103,7 @@ freq = 1400; location = "Kitchen" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot{ dir = 2 }, @@ -13779,9 +14117,7 @@ freq = 1400; location = "Hydroponics" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot{ dir = 2 }, @@ -13852,7 +14188,7 @@ /turf/open/floor/plasteel/grimy, /area/chapel/office) "aJV" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /obj/machinery/door/window/eastleft{ dir = 8; name = "Coffin Storage"; @@ -14148,7 +14484,10 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/plantgenes, +/obj/machinery/plantgenes{ + pixel_y = 6 + }, +/obj/structure/table, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aKM" = ( @@ -14856,7 +15195,7 @@ /area/library) "aMI" = ( /obj/machinery/light/small, -/obj/structure/closet/wardrobe/botanist, +/obj/machinery/vending/wardrobe/hydro_wardrobe, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aMJ" = ( @@ -15131,12 +15470,12 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aND" = ( -/obj/structure/closet/gmcloset, /obj/item/stack/sheet/metal/fifty, /obj/item/stack/sheet/glass/fifty, /obj/item/stack/cable_coil, /obj/item/flashlight/lamp, /obj/item/flashlight/lamp/green, +/obj/structure/table/wood, /turf/open/floor/wood, /area/crew_quarters/bar) "aNE" = ( @@ -15224,7 +15563,7 @@ dir = 8; pixel_x = 24 }, -/obj/structure/closet/chefcloset, +/obj/machinery/vending/wardrobe/chef_wardrobe, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) "aNP" = ( @@ -15512,13 +15851,11 @@ "aOz" = ( /obj/structure/sign/directions/security{ dir = 4; - icon_state = "direction_sec"; pixel_x = 32; pixel_y = -24 }, /obj/structure/sign/directions/evac{ dir = 4; - icon_state = "direction_evac"; pixel_x = 32; pixel_y = -32 }, @@ -15694,8 +16031,7 @@ /area/hydroponics) "aOY" = ( /obj/structure/chair/comfy/beige{ - dir = 1; - icon_state = "comfychair" + dir = 1 }, /obj/effect/landmark/start/assistant, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -15710,8 +16046,7 @@ /area/hydroponics) "aPa" = ( /obj/structure/chair/comfy/beige{ - dir = 1; - icon_state = "comfychair" + dir = 1 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/grimy, @@ -15766,12 +16101,6 @@ }, /turf/open/floor/engine/cult, /area/library) -"aPj" = ( -/obj/machinery/light_switch{ - pixel_y = 28 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/main) "aPk" = ( /turf/open/floor/plasteel/chapel{ dir = 4 @@ -15870,8 +16199,7 @@ /area/crew_quarters/bar) "aPx" = ( /obj/structure/chair/comfy/beige{ - dir = 1; - icon_state = "comfychair" + dir = 1 }, /turf/open/floor/plasteel/grimy, /area/hallway/secondary/entry) @@ -16164,8 +16492,8 @@ /turf/open/floor/wood, /area/library) "aQr" = ( -/obj/structure/closet/wardrobe/curator, /obj/machinery/light/small, +/obj/machinery/vending/wardrobe/curator_wardrobe, /turf/open/floor/engine/cult, /area/library) "aQs" = ( @@ -16328,7 +16656,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQU" = ( -/obj/machinery/vending/cigarette, +/obj/machinery/vending/kink, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQV" = ( @@ -16445,9 +16773,7 @@ /area/bridge) "aRm" = ( /obj/machinery/computer/communications, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aRn" = ( /obj/machinery/computer/shuttle/labor, @@ -16768,7 +17094,6 @@ "aSh" = ( /obj/structure/closet/wardrobe/mixed, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -27 }, @@ -17374,9 +17699,7 @@ /turf/open/floor/plasteel, /area/bridge) "aUd" = ( -/obj/machinery/computer/security/mining{ - network = list("mine","auxbase") - }, +/obj/machinery/computer/security/mining, /turf/open/floor/plasteel/brown{ dir = 6 }, @@ -18469,9 +18792,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aWP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -18487,9 +18808,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aWR" = ( /obj/structure/fireaxecabinet{ @@ -18498,9 +18817,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aWS" = ( /obj/structure/cable{ @@ -18509,9 +18826,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aWT" = ( /obj/machinery/requests_console{ @@ -18525,17 +18840,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aWU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aWV" = ( /obj/machinery/turretid{ @@ -18550,9 +18861,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aWW" = ( /obj/machinery/power/apc/highcap/five_k{ @@ -18564,9 +18873,7 @@ /obj/structure/cable, /obj/machinery/light, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aWX" = ( /obj/machinery/newscaster{ @@ -18575,9 +18882,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aWY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -19108,9 +19413,7 @@ /area/security/detectives_office) "aYk" = ( /obj/machinery/light, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/hallway/primary/central) "aYl" = ( /turf/open/floor/plasteel/blue/corner, @@ -19126,9 +19429,7 @@ c_tag = "Bridge West Entrance"; dir = 1 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/hallway/primary/central) "aYo" = ( /obj/machinery/door/firedoor, @@ -19147,27 +19448,21 @@ "aYq" = ( /obj/structure/closet/emcloset, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aYr" = ( /obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aYs" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aYt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -19254,9 +19549,7 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/bridge) "aYE" = ( /obj/machinery/door/firedoor, @@ -19272,9 +19565,7 @@ pixel_y = -24 }, /obj/structure/cable, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/hallway/primary/central) "aYG" = ( /obj/structure/disposalpipe/segment, @@ -20499,7 +20790,8 @@ /obj/structure/table, /obj/item/aiModule/supplied/quarantine, /obj/machinery/camera/motion{ - dir = 4 + dir = 4; + network = list("aiupload") }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) @@ -20517,7 +20809,8 @@ pixel_x = 32 }, /obj/machinery/camera/motion{ - dir = 8 + dir = 8; + network = list("aiupload") }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) @@ -20579,13 +20872,11 @@ "bcp" = ( /obj/structure/sign/directions/evac{ dir = 4; - icon_state = "direction_evac"; pixel_x = 32; pixel_y = 28 }, /obj/structure/sign/directions/security{ dir = 1; - icon_state = "direction_sec"; pixel_x = 32; pixel_y = 36 }, @@ -20781,6 +21072,10 @@ }, /turf/closed/wall, /area/quartermaster/warehouse) +"bcU" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) "bcV" = ( /obj/machinery/airalarm{ dir = 8; @@ -21351,13 +21646,11 @@ "beq" = ( /obj/structure/sign/directions/medical{ dir = 4; - icon_state = "direction_med"; pixel_x = 32; pixel_y = -24 }, /obj/structure/sign/directions/science{ dir = 4; - icon_state = "direction_sci"; pixel_x = 32; pixel_y = -32 }, @@ -21378,15 +21671,11 @@ /turf/open/floor/plasteel/blue/corner, /area/hallway/primary/starboard) "bet" = ( -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/hallway/primary/starboard) "beu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/hallway/primary/starboard) "bev" = ( /obj/machinery/light, @@ -22355,7 +22644,7 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "bha" = ( -/obj/structure/closet/secure_closet/chemical, +/obj/machinery/vending/wardrobe/chem_wardrobe, /turf/open/floor/plasteel/white, /area/medical/chemistry) "bhb" = ( @@ -22596,7 +22885,7 @@ /obj/structure/table/reinforced, /obj/machinery/door/window/southright{ name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rnd"; @@ -22821,9 +23110,7 @@ freq = 1400; location = "Bridge" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/bridge/meeting_room) @@ -23306,7 +23593,7 @@ /obj/machinery/camera{ c_tag = "Cargo Bay North" }, -/obj/structure/closet/wardrobe/cargotech, +/obj/machinery/vending/wardrobe/cargo_wardrobe, /turf/open/floor/plasteel, /area/quartermaster/storage) "bjp" = ( @@ -23589,6 +23876,7 @@ "bkb" = ( /obj/machinery/camera{ c_tag = "Medbay Morgue"; + network = list("ss13","medbay"); dir = 8 }, /obj/machinery/airalarm{ @@ -23773,6 +24061,10 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"bkA" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "bkB" = ( /obj/machinery/button/door{ id = "Disposal Exit"; @@ -24111,6 +24403,7 @@ /obj/structure/table/reinforced, /obj/machinery/camera{ c_tag = "Medbay Foyer"; + network = list("ss13","medbay"); dir = 8 }, /obj/machinery/cell_charger, @@ -24388,12 +24681,10 @@ /turf/open/floor/plating, /area/maintenance/disposal) "blT" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-4" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "blU" = ( @@ -24984,9 +25275,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /turf/open/floor/plating, /area/science/lab) "bns" = ( @@ -25208,10 +25497,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) "bnR" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("prison"); +/obj/machinery/computer/security/telescreen/vault{ pixel_y = 30 }, /obj/machinery/disposal/bin, @@ -25471,6 +25757,9 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, +/obj/item/radio/headset/headset_sci{ + pixel_x = -3 + }, /turf/open/floor/plasteel, /area/science/robotics/lab) "bow" = ( @@ -26505,6 +26794,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay West"; + network = list("ss13","medbay"); dir = 2 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -27189,6 +27479,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay East"; + network = list("ss13","medbay"); dir = 8; pixel_y = -22 }, @@ -27393,10 +27684,7 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "bsW" = ( -/obj/structure/closet/wardrobe/robotics_black, -/obj/item/radio/headset/headset_sci{ - pixel_x = -3 - }, +/obj/machinery/vending/wardrobe/robo_wardrobe, /turf/open/floor/plasteel/white, /area/science/robotics/lab) "bsX" = ( @@ -27556,7 +27844,7 @@ /area/maintenance/starboard) "btr" = ( /obj/machinery/camera{ - c_tag = "Cargo Recieving Dock"; + c_tag = "Cargo Receiving Dock"; dir = 4 }, /obj/machinery/button/door{ @@ -27658,8 +27946,9 @@ /turf/open/floor/plasteel/white, /area/science/research) "btB" = ( -/obj/structure/table, -/obj/machinery/recharger, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/plasteel/blue/side{ dir = 9 }, @@ -27677,6 +27966,7 @@ pixel_y = 7 }, /obj/item/pen, +/obj/item/stamp/hop, /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) "btE" = ( @@ -28223,7 +28513,11 @@ "buO" = ( /obj/structure/table, /obj/item/folder/blue, -/obj/item/stamp/hop, +/obj/item/stack/packageWrap{ + pixel_x = -1; + pixel_y = -1 + }, +/obj/item/hand_labeler, /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) "buP" = ( @@ -28514,7 +28808,7 @@ /obj/machinery/camera{ c_tag = "Genetics Research"; dir = 1; - network = list("ss13","rd") + network = list("ss13","medbay") }, /obj/machinery/firealarm{ dir = 1; @@ -28548,6 +28842,7 @@ "bvB" = ( /obj/machinery/camera{ c_tag = "Genetics Access"; + network = list("ss13","medbay"); dir = 8; pixel_y = -22 }, @@ -28577,22 +28872,14 @@ }, /area/science/research) "bvF" = ( -/obj/structure/table, -/obj/item/cartridge/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/cartridge/quartermaster, -/obj/item/cartridge/quartermaster{ - pixel_x = -4; - pixel_y = 7 - }, /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; pixel_x = -30 }, -/obj/item/coin/silver, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/plasteel/brown{ dir = 9 }, @@ -28831,11 +29118,7 @@ /area/crew_quarters/heads/hop) "bwk" = ( /obj/structure/table, -/obj/item/hand_labeler, -/obj/item/stack/packageWrap{ - pixel_x = -1; - pixel_y = -1 - }, +/obj/machinery/recharger, /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) "bwl" = ( @@ -28910,16 +29193,15 @@ freq = 1400; location = "Medbay" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/medical/medbay/central) "bww" = ( /obj/structure/chair, /obj/machinery/camera{ - c_tag = "Surgery Observation" + c_tag = "Surgery Observation"; + network = list("ss13","medbay") }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -29004,6 +29286,7 @@ /obj/structure/table/glass, /obj/machinery/camera{ c_tag = "Medbay Cryogenics"; + network = list("ss13","medbay"); dir = 2 }, /obj/item/reagent_containers/glass/beaker/cryoxadone, @@ -29022,6 +29305,7 @@ "bwL" = ( /obj/machinery/camera{ c_tag = "Genetics Cloning"; + network = list("ss13","medbay"); dir = 4 }, /obj/structure/table, @@ -29274,13 +29558,8 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/heads/hor) "bxj" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons and the AI's satellite from the safety of his office."; - name = "Research Monitor"; - network = list("rd","minisat"); - pixel_y = 2 - }, /obj/structure/table, +/obj/machinery/computer/security/telescreen/rd, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/heads/hor) "bxk" = ( @@ -29626,6 +29905,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/item/stamp/qm, /turf/open/floor/plasteel/brown{ dir = 2 }, @@ -29648,10 +29928,19 @@ "byg" = ( /obj/structure/table, /obj/item/clipboard, -/obj/item/stamp/qm, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/item/cartridge/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/item/cartridge/quartermaster, +/obj/item/coin/silver, /turf/open/floor/plasteel/brown{ dir = 2 }, @@ -29916,8 +30205,7 @@ pixel_x = 27 }, /obj/machinery/computer/security/mining{ - dir = 8; - network = list("mine","auxbase") + dir = 8 }, /turf/open/floor/plasteel/red/side{ dir = 4 @@ -29980,7 +30268,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/closet/wardrobe/red, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/red/side, /area/security/checkpoint/supply) "byU" = ( @@ -30155,11 +30443,11 @@ /turf/open/floor/plasteel/white, /area/medical/genetics) "bzr" = ( -/obj/structure/closet/wardrobe/genetics_white, /obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, +/obj/machinery/vending/wardrobe/gene_wardrobe, /turf/open/floor/plasteel/white, /area/medical/genetics) "bzs" = ( @@ -30260,13 +30548,8 @@ /area/security/checkpoint/science) "bzD" = ( /obj/structure/table, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of your own office."; - name = "Research Monitor"; - network = list("rd"); - pixel_y = 2 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/computer/security/telescreen/circuitry, /turf/open/floor/plasteel/red/side{ dir = 1 }, @@ -30401,7 +30684,7 @@ }, /area/medical/sleeper) "bzV" = ( -/obj/structure/closet/wardrobe/white/medical, +/obj/machinery/vending/wardrobe/medi_wardrobe, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bzW" = ( @@ -30584,6 +30867,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay Treatment Center"; + network = list("ss13","medbay"); dir = 8 }, /turf/open/floor/plasteel, @@ -30695,7 +30979,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/closet/wardrobe/red, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/red/side{ dir = 8 }, @@ -30802,10 +31086,6 @@ /turf/open/floor/engine, /area/science/explab) "bAS" = ( -/obj/machinery/computer/security/mining{ - dir = 4; - network = list("mine","auxbase") - }, /obj/machinery/camera{ c_tag = "Quartermaster's Office"; dir = 4 @@ -30818,12 +31098,15 @@ pixel_x = -32; supply_display = 1 }, +/obj/machinery/computer/security/qm{ + dir = 4 + }, /turf/open/floor/plasteel/brown{ dir = 10 }, /area/quartermaster/qm) "bAT" = ( -/obj/structure/closet/jcloset, +/obj/machinery/vending/wardrobe/jani_wardrobe, /turf/open/floor/plasteel, /area/janitor) "bAU" = ( @@ -31023,13 +31306,11 @@ }, /obj/structure/sign/directions/medical{ dir = 4; - icon_state = "direction_med"; pixel_x = -32; pixel_y = -24 }, /obj/structure/sign/directions/evac{ dir = 4; - icon_state = "direction_evac"; pixel_x = -32; pixel_y = -32 }, @@ -31619,6 +31900,7 @@ /obj/structure/closet/secure_closet/medical3, /obj/machinery/camera{ c_tag = "Medbay Storage"; + network = list("ss13","medbay"); dir = 2 }, /turf/open/floor/plasteel/white, @@ -31701,6 +31983,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay South"; + network = list("ss13","medbay"); dir = 4 }, /turf/open/floor/plasteel/white, @@ -31993,6 +32276,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay Recovery Room"; + network = list("ss13","medbay"); dir = 8 }, /obj/machinery/iv_drip, @@ -32070,9 +32354,7 @@ freq = 1400; location = "Janitor" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/janitor) @@ -32236,6 +32518,7 @@ }, /obj/machinery/camera{ c_tag = "Chief Medical Office"; + network = list("ss13","medbay"); dir = 8; pixel_y = -22 }, @@ -32448,13 +32731,11 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "bEK" = ( -/obj/machinery/computer/security/mining{ - network = list("mine","auxbase") - }, /obj/machinery/camera{ c_tag = "Mining Dock"; dir = 4 }, +/obj/machinery/computer/security/mining, /turf/open/floor/plasteel, /area/quartermaster/miningdock) "bEL" = ( @@ -32818,6 +33099,10 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, +/obj/machinery/computer/security/telescreen/cmo{ + dir = 1; + pixel_y = -24 + }, /turf/open/floor/plasteel/barber, /area/crew_quarters/heads/cmo) "bFF" = ( @@ -33530,17 +33815,13 @@ /turf/open/floor/plasteel, /area/science/mixing) "bHv" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the test chamber."; - dir = 8; - layer = 4; - name = "Test Chamber Telescreen"; - network = list("toxins"); - pixel_x = 30 - }, /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/machinery/computer/security/telescreen/toxins{ + dir = 4; + pixel_x = 30 + }, /turf/open/floor/plasteel, /area/science/mixing) "bHw" = ( @@ -33783,6 +34064,7 @@ }, /obj/machinery/camera{ c_tag = "Surgery Operating"; + network = list("ss13","medbay"); dir = 1; pixel_x = 22 }, @@ -34104,7 +34386,8 @@ pixel_y = 29 }, /obj/machinery/camera{ - c_tag = "Virology Break Room" + c_tag = "Virology Break Room"; + network = list("ss13","medbay") }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -34253,7 +34536,6 @@ /turf/open/floor/plating/airless, /area/science/test_area) "bJa" = ( -/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -34596,8 +34878,8 @@ /turf/open/floor/plasteel, /area/science/misc_lab) "bJP" = ( -/obj/machinery/vending/boozeomat, -/turf/open/floor/plasteel/bar, +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/plating, /area/maintenance/port/aft) "bJQ" = ( /obj/effect/spawner/structure/window/reinforced, @@ -34617,7 +34899,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "bJU" = ( -/obj/structure/closet/wardrobe/science_white, +/obj/machinery/vending/wardrobe/science_wardrobe, /turf/open/floor/plasteel/white, /area/science/mixing) "bJV" = ( @@ -35296,21 +35578,13 @@ }, /area/science/test_area) "bLr" = ( -/obj/machinery/camera{ - active_power_usage = 0; - c_tag = "Bomb Test Site"; - desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site."; - dir = 8; - invuln = 1; - light = null; - name = "Hardened Bomb-Test Camera"; - network = list("toxins"); - use_power = 0 - }, /obj/item/target/alien/anchored, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/camera/preset/toxins{ + dir = 8 + }, /turf/open/floor/plating{ luminosity = 2; initial_gas_mix = "o2=0.01;n2=0.01" @@ -35705,10 +35979,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bMu" = ( -/obj/machinery/door/poddoor{ - id = "mixvent"; - name = "Mixer Room Vent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "bMv" = ( @@ -35718,9 +35989,8 @@ /turf/closed/wall/r_wall, /area/science/mixing) "bMw" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ @@ -35729,9 +35999,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bMx" = ( -/obj/machinery/airlock_sensor{ - id_tag = "tox_airlock_sensor"; - master_tag = "tox_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_toxmix{ pixel_y = 24 }, /obj/machinery/atmospherics/components/binary/pump/on{ @@ -35756,14 +36024,8 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "tox_airlock_pump"; - exterior_door_tag = "tox_airlock_exterior"; - id_tag = "tox_airlock_control"; - interior_door_tag = "tox_airlock_interior"; - pixel_x = -24; - sanitize_external = 1; - sensor_tag = "tox_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ + pixel_x = -24 }, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -35886,8 +36148,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Distro to Waste"; - on = 0 + name = "Distro to Waste" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -35898,11 +36159,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/meter{ - frequency = 1441; - id_tag = "waste_meter"; - name = "Waste Loop" - }, +/obj/machinery/meter/atmos/atmos_waste_loop, /turf/open/floor/plasteel, /area/engine/atmos) "bMU" = ( @@ -35915,11 +36172,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/visible{ dir = 2 }, -/obj/machinery/meter{ - frequency = 1441; - id_tag = "distro_meter"; - name = "Distribution Loop" - }, +/obj/machinery/meter/atmos/distro_loop, /turf/open/floor/plasteel, /area/engine/atmos) "bMW" = ( @@ -35929,10 +36182,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bMX" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Air to Distro"; - on = 1 + name = "Air to Distro" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -36103,33 +36355,17 @@ /area/science/mixing) "bNu" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Mixing Room Exterior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /turf/open/floor/engine, /area/science/mixing) "bNv" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Mixing Room Interior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /turf/open/floor/engine, /area/science/mixing) "bNw" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "tox_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 2 }, /turf/open/floor/engine, /area/science/mixing) @@ -36196,7 +36432,6 @@ /turf/open/floor/plating/airless, /area/science/test_area) "bNF" = ( -/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -36362,8 +36597,7 @@ "bOc" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Mix to Distro"; - on = 0 + name = "Mix to Distro" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -36390,8 +36624,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Mix to Incinerator"; - on = 0 + name = "Mix to Incinerator" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -36451,6 +36684,7 @@ /obj/structure/closet/emcloset, /obj/machinery/camera{ c_tag = "Virology Airlock"; + network = list("ss13","medbay"); dir = 2 }, /obj/effect/turf_decal/stripes/line{ @@ -36508,7 +36742,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/droneDispenser, /turf/open/floor/plasteel, /area/science/misc_lab) "bOx" = ( @@ -36562,9 +36795,8 @@ /turf/open/floor/plasteel, /area/tcommsat/computer) "bOE" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ @@ -36599,15 +36831,11 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/button/door{ - id = "mixvent"; - name = "Mixing Room Vent Control"; +/obj/machinery/button/door/incinerator_vent_toxmix{ pixel_x = -25; - pixel_y = 5; - req_access_txt = "7" + pixel_y = 5 }, -/obj/machinery/button/ignition{ - id = "mixingsparker"; +/obj/machinery/button/ignition/incinerator/toxmix{ pixel_x = -25; pixel_y = -5 }, @@ -36722,9 +36950,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; dir = 4; @@ -36815,10 +37041,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bPd" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Waste In"; - on = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Waste In" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -36831,9 +37055,7 @@ /area/engine/atmos) "bPf" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Air to Mix"; - on = 0 + name = "Air to Mix" }, /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 @@ -36843,8 +37065,7 @@ "bPg" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Mix Outlet Pump"; - on = 0 + name = "Mix Outlet Pump" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -36880,11 +37101,8 @@ /turf/open/floor/engine/vacuum, /area/engine/atmos) "bPl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 8; - frequency = 1441; - id_tag = "mix_out"; - name = "distro out" +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output{ + dir = 8 }, /turf/open/floor/engine/vacuum, /area/engine/atmos) @@ -37196,18 +37414,6 @@ }, /turf/open/floor/plasteel, /area/tcommsat/computer) -"bPR" = ( -/obj/effect/decal/cleanable/robot_debris/old, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bPS" = ( -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bPT" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/port/aft) "bPU" = ( /obj/item/shard, /turf/open/floor/plating, @@ -37376,7 +37582,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/closet/wardrobe/red, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -37386,10 +37592,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bQs" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Mix to Filter"; - on = 1 + name = "Mix to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -37429,13 +37634,8 @@ /turf/open/floor/plating, /area/engine/atmos) "bQz" = ( -/obj/machinery/computer/atmos_control/tank{ - dir = 8; - frequency = 1441; - input_tag = "mix_in"; - name = "Gas Mix Tank Control"; - output_tag = "mix_out"; - sensors = list("mix_sensor" = "Tank") +/obj/machinery/computer/atmos_control/tank/mix_tank{ + dir = 8 }, /turf/open/floor/plasteel/green/side{ dir = 4 @@ -37446,10 +37646,7 @@ /turf/open/floor/plating/airless, /area/engine/atmos) "bQB" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "mix_sensor" - }, +/obj/machinery/air_sensor/atmos/mix_tank, /turf/open/floor/engine/vacuum, /area/engine/atmos) "bQC" = ( @@ -37476,7 +37673,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bQF" = ( -/obj/structure/closet/wardrobe/virology_white, +/obj/machinery/vending/wardrobe/viro_wardrobe, /turf/open/floor/plasteel/white, /area/medical/virology) "bQG" = ( @@ -37620,14 +37817,10 @@ /area/science/misc_lab) "bQY" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of his office."; - dir = 2; - name = "Research Monitor"; - network = list("rd"); - pixel_y = 28 - }, /obj/item/integrated_circuit_printer, +/obj/machinery/computer/security/telescreen/circuitry{ + pixel_y = 30 + }, /turf/open/floor/plasteel/white, /area/science/circuit) "bQZ" = ( @@ -37638,37 +37831,9 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, -/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/ten, /turf/open/floor/plasteel/white, /area/science/circuit) -"bRb" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/libraryconsole/bookmanagement, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"bRc" = ( -/obj/structure/table/wood, -/obj/item/soap/nanotrasen, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/port/aft) -"bRe" = ( -/obj/structure/table/wood, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 4; - name = "4maintenance loot spawner" - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bRf" = ( -/obj/structure/table/wood, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/port/aft) "bRg" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -37739,13 +37904,9 @@ /obj/machinery/computer/secure_data{ dir = 8 }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the Engine."; +/obj/machinery/computer/security/telescreen/engine{ dir = 8; - layer = 4; - name = "Engine Monitor"; - network = list("singularity"); - pixel_x = 30 + pixel_x = 24 }, /turf/open/floor/plasteel/red/side{ dir = 4 @@ -37869,8 +38030,7 @@ "bRE" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Pure to Mix"; - on = 0 + name = "Pure to Mix" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -37881,10 +38041,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bRG" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Unfiltered to Mix"; - on = 1 + name = "Unfiltered to Mix" }, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -37921,11 +38080,8 @@ /turf/open/space, /area/space/nearstation) "bRL" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - frequency = 1441; - id = "mix_in"; - pixel_y = 1 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input{ + dir = 8 }, /turf/open/floor/engine/vacuum, /area/engine/atmos) @@ -38142,12 +38298,12 @@ }, /area/maintenance/starboard/aft) "bSn" = ( -/obj/machinery/space_heater, -/turf/open/floor/wood, +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plating, /area/maintenance/port/aft) "bSo" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood, +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, /area/maintenance/port/aft) "bSp" = ( /obj/structure/grille/broken, @@ -38170,7 +38326,8 @@ /obj/structure/closet/emcloset, /obj/machinery/camera{ c_tag = "Telecomms Monitoring"; - dir = 8 + dir = 8; + network = list("tcomms") }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, @@ -38433,7 +38590,8 @@ icon_state = "0-8" }, /obj/machinery/camera{ - c_tag = "Virology Module" + c_tag = "Virology Module"; + network = list("ss13","medbay") }, /turf/open/floor/plasteel/white, /area/medical/virology) @@ -38625,54 +38783,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"bTs" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/port/aft) -"bTt" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/port/aft) -"bTu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bTv" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bTw" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "12" - }, -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bTx" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bTy" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) "bTz" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -38834,8 +38944,7 @@ "bTV" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "N2O Outlet Pump"; - on = 0 + name = "N2O Outlet Pump" }, /turf/open/floor/plasteel/escape{ dir = 5 @@ -38845,11 +38954,8 @@ /turf/open/floor/engine/n2o, /area/engine/atmos) "bTX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 8; - frequency = 1441; - id_tag = "n2o_out"; - name = "n2o out" +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output{ + dir = 8 }, /turf/open/floor/engine/n2o, /area/engine/atmos) @@ -39040,6 +39146,12 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"bUt" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bUu" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -39050,21 +39162,18 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, /turf/open/floor/plating, /area/maintenance/port/aft) "bUv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/maintenance/bar) +/area/maintenance/port/aft) "bUx" = ( /obj/structure/disposalpipe/junction/yjunction{ dir = 1 @@ -39173,10 +39282,9 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bUK" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Air to External"; - on = 1 + name = "Air to External" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39202,25 +39310,19 @@ /area/engine/atmos) "bUO" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Mix to Port"; - on = 0 + name = "Mix to Port" }, /turf/open/floor/plasteel, /area/engine/atmos) "bUP" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Air to Port"; - on = 0 + name = "Air to Port" }, /turf/open/floor/plasteel, /area/engine/atmos) "bUQ" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Pure to Port"; - on = 0 + name = "Pure to Port" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39233,13 +39335,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bUT" = ( -/obj/machinery/computer/atmos_control/tank{ - dir = 8; - frequency = 1441; - input_tag = "n2o_in"; - name = "Nitrous Oxide Supply Control"; - output_tag = "n2o_out"; - sensors = list("n2o_sensor" = "Tank") +/obj/machinery/computer/atmos_control/tank/nitrous_tank{ + dir = 8 }, /turf/open/floor/plasteel/escape{ dir = 4 @@ -39250,10 +39347,7 @@ /turf/open/floor/engine/n2o, /area/engine/atmos) "bUV" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "n2o_sensor" - }, +/obj/machinery/air_sensor/atmos/nitrous_tank, /turf/open/floor/engine/n2o, /area/engine/atmos) "bUW" = ( @@ -39528,11 +39622,11 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bVG" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -31 +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 }, -/turf/open/floor/wood, -/area/maintenance/bar) +/turf/open/floor/plating, +/area/maintenance/port/aft) "bVI" = ( /turf/closed/wall/r_wall, /area/tcommsat/server) @@ -39596,10 +39690,9 @@ /turf/closed/wall, /area/engine/atmos) "bVT" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "External to Filter"; - on = 1 + name = "External to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39651,10 +39744,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bWb" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "n2o"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39667,11 +39758,8 @@ }, /area/engine/atmos) "bWd" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - frequency = 1441; - id = "n2o_in"; - pixel_y = 1 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input{ + dir = 8 }, /turf/open/floor/engine/n2o, /area/engine/atmos) @@ -39991,9 +40079,7 @@ pixel_x = -27 }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Air to Port"; - on = 0 + name = "Air to Port" }, /obj/machinery/light{ dir = 8 @@ -40004,6 +40090,9 @@ /obj/machinery/light{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bWV" = ( @@ -40430,8 +40519,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Plasma Outlet Pump"; - on = 0 + name = "Plasma Outlet Pump" }, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -40442,11 +40530,8 @@ /turf/open/floor/engine/plasma, /area/engine/atmos) "bXX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 8; - frequency = 1441; - id_tag = "tox_out"; - name = "toxin out" +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output{ + dir = 8 }, /turf/open/floor/engine/plasma, /area/engine/atmos) @@ -40777,13 +40862,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bYT" = ( -/obj/machinery/computer/atmos_control/tank{ - dir = 8; - frequency = 1441; - input_tag = "tox_in"; - name = "Plasma Supply Control"; - output_tag = "tox_out"; - sensors = list("tox_sensor" = "Tank") +/obj/machinery/computer/atmos_control/tank/toxin_tank{ + dir = 8 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -40795,10 +40875,7 @@ /turf/open/floor/engine/plasma, /area/engine/atmos) "bYV" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "tox_sensor" - }, +/obj/machinery/air_sensor/atmos/toxin_tank, /turf/open/floor/engine/plasma, /area/engine/atmos) "bYW" = ( @@ -41098,10 +41175,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bZJ" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "plasma"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41115,11 +41190,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bZL" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - frequency = 1441; - id = "tox_in"; - pixel_y = 1 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input{ + dir = 8 }, /turf/open/floor/engine/plasma, /area/engine/atmos) @@ -41148,7 +41220,7 @@ /turf/closed/wall/r_wall, /area/medical/virology) "bZQ" = ( -/obj/machinery/atmospherics/components/binary/valve/open{ +/obj/machinery/atmospherics/components/binary/valve/on{ dir = 4 }, /obj/effect/turf_decal/stripes/line{ @@ -41360,7 +41432,7 @@ dir = 5 }, /turf/closed/wall, -/area/maintenance/bar) +/area/maintenance/port/aft) "cas" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -41479,9 +41551,7 @@ dir = 4 }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Port to Filter"; - on = 0 + name = "Port to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41777,7 +41847,8 @@ "cbl" = ( /obj/machinery/camera{ c_tag = "Telecomms Server Room"; - dir = 4 + dir = 4; + network = list("tcomms") }, /turf/open/floor/plasteel/dark/telecomms/mainframe, /area/tcommsat/server) @@ -41916,7 +41987,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cbz" = ( -/obj/structure/closet/wardrobe/atmospherics_yellow, +/obj/machinery/vending/wardrobe/atmos_wardrobe, /turf/open/floor/plasteel, /area/engine/atmos) "cbA" = ( @@ -41940,8 +42011,7 @@ "cbD" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Port to Filter"; - on = 0 + name = "Port to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41959,8 +42029,7 @@ "cbG" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "CO2 Outlet Pump"; - on = 0 + name = "CO2 Outlet Pump" }, /turf/open/floor/plasteel/yellow/side{ dir = 5 @@ -41970,11 +42039,8 @@ /turf/open/floor/engine/co2, /area/engine/atmos) "cbI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 8; - frequency = 1441; - id_tag = "co2_out"; - name = "co2 out" +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output{ + dir = 8 }, /turf/open/floor/engine/co2, /area/engine/atmos) @@ -42124,14 +42190,11 @@ /area/science/circuit) "cbZ" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of his office."; - dir = 1; - name = "Research Monitor"; - network = list("rd"); - pixel_y = -28 - }, /obj/item/integrated_circuit_printer, +/obj/machinery/computer/security/telescreen/circuitry{ + dir = 1; + pixel_y = -30 + }, /turf/open/floor/plasteel/white, /area/science/circuit) "cca" = ( @@ -42334,19 +42397,13 @@ "ccz" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - name = "N2 to Pure"; - on = 0 + name = "N2 to Pure" }, /turf/open/floor/plasteel, /area/engine/atmos) "ccA" = ( -/obj/machinery/computer/atmos_control/tank{ - dir = 8; - frequency = 1441; - input_tag = "co2_in"; - name = "Carbon Dioxide Supply Control"; - output_tag = "co2_out"; - sensors = list("co2_sensor" = "Tank") +/obj/machinery/computer/atmos_control/tank/carbon_tank{ + dir = 8 }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -42357,10 +42414,7 @@ /turf/open/floor/engine/co2, /area/engine/atmos) "ccC" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "co2_sensor" - }, +/obj/machinery/air_sensor/atmos/carbon_tank, /turf/open/floor/engine/co2, /area/engine/atmos) "ccD" = ( @@ -42721,26 +42775,19 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "O2 to Pure"; - on = 0 + name = "O2 to Pure" }, /turf/open/floor/plasteel, /area/engine/atmos) "cdA" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ - dir = 4; - node1_concentration = 0.8; - node2_concentration = 0.2; - on = 1; - target_pressure = 4500 +/obj/machinery/atmospherics/components/trinary/mixer/airmix{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) "cdB" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "co2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -42753,11 +42800,8 @@ }, /area/engine/atmos) "cdD" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - frequency = 1441; - id = "co2_in"; - pixel_y = 1 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input{ + dir = 8 }, /turf/open/floor/engine/co2, /area/engine/atmos) @@ -43245,8 +43289,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering/glass{ name = "Power Storage"; - req_access_txt = "11"; - req_one_access_txt = "0" + req_access_txt = "11" }, /turf/open/floor/plasteel, /area/engine/engineering) @@ -43315,11 +43358,7 @@ /turf/open/floor/plasteel/yellow/side, /area/engine/break_room) "cfi" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 2; - filter_type = "n2"; - on = 1 - }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2, /turf/open/floor/plasteel, /area/engine/atmos) "cfj" = ( @@ -43485,6 +43524,16 @@ dir = 5 }, /area/crew_quarters/heads/chief) +"cfI" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/engine/engineering) "cfJ" = ( /obj/machinery/light/small{ dir = 1 @@ -43543,10 +43592,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "cfR" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - filter_type = "o2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -43781,14 +43828,14 @@ /area/engine/engineering) "cgw" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, /turf/open/floor/plasteel, /area/engine/engineering) +"cgx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) "cgy" = ( /obj/machinery/light/small{ dir = 1 @@ -43857,22 +43904,32 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"cgI" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) "cgJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/engineering) "cgK" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 }, -/turf/open/floor/plasteel, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cgL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/engine, /area/engine/engineering) "cgO" = ( /obj/structure/rack, @@ -43886,6 +43943,16 @@ dir = 5 }, /area/crew_quarters/heads/chief) +"cgQ" = ( +/obj/machinery/camera{ + c_tag = "Engineering East"; + dir = 8 + }, +/obj/machinery/vending/wardrobe/engi_wardrobe, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4 + }, +/area/engine/engineering) "cgR" = ( /turf/open/floor/plasteel, /area/engine/engineering) @@ -43925,13 +43992,8 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cgV" = ( -/obj/machinery/computer/atmos_control/tank{ - dir = 1; - frequency = 1441; - input_tag = "n2_in"; - name = "Nitrogen Supply Control"; - output_tag = "n2_out"; - sensors = list("n2_sensor" = "Tank") +/obj/machinery/computer/atmos_control/tank/nitrogen_tank{ + dir = 1 }, /turf/open/floor/plasteel/red/side, /area/engine/atmos) @@ -43948,27 +44010,19 @@ /turf/open/floor/plasteel, /area/engine/atmos) "cgY" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "N2 Outlet Pump"; - on = 1 + name = "N2 Outlet Pump" }, /turf/open/floor/plasteel/red/side{ dir = 6 }, /area/engine/atmos) "cgZ" = ( -/obj/machinery/computer/atmos_control/tank{ - dir = 1; - frequency = 1441; - input_tag = "o2_in"; - name = "Oxygen Supply Control"; - output_tag = "o2_out"; - sensors = list("o2_sensor" = "Tank") - }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 +/obj/machinery/computer/atmos_control/tank/oxygen_tank{ + dir = 1 }, +/turf/open/floor/plasteel/blue/side, /area/engine/atmos) "cha" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, @@ -43977,23 +44031,17 @@ }, /area/engine/atmos) "chb" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "O2 Outlet Pump"; - on = 1 + name = "O2 Outlet Pump" }, /turf/open/floor/plasteel/blue/side{ dir = 6 }, /area/engine/atmos) "chc" = ( -/obj/machinery/computer/atmos_control/tank{ - dir = 1; - frequency = 1441; - input_tag = "air_in"; - name = "Mixed Air Supply Control"; - output_tag = "air_out"; - sensors = list("air_sensor" = "Tank") +/obj/machinery/computer/atmos_control/tank/air_tank{ + dir = 1 }, /turf/open/floor/plasteel/arrival, /area/engine/atmos) @@ -44018,10 +44066,9 @@ c_tag = "Atmospherics South East"; dir = 1 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Air Outlet Pump"; - on = 1 + name = "Air Outlet Pump" }, /turf/open/floor/plasteel/arrival{ dir = 6 @@ -44249,24 +44296,25 @@ /turf/open/floor/plasteel, /area/engine/engineering) "chF" = ( -/obj/effect/landmark/start/station_engineer, -/obj/structure/chair/office/dark{ - dir = 8 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/engineering) "chG" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, /area/engine/engineering) "chH" = ( /obj/structure/closet/firecloset, @@ -44363,15 +44411,35 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"chX" = ( +"chV" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/cable/yellow{ - icon_state = "2-8" +/obj/structure/table/reinforced, +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_x = 5 }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/glasses/meson/engine, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"chX" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, /area/engine/engineering) "chY" = ( /obj/machinery/shieldgen, @@ -44455,6 +44523,24 @@ "cig" = ( /turf/closed/wall, /area/engine/engineering) +"cii" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/suit/radiation, +/obj/item/clothing/head/radiation, +/obj/item/clothing/glasses/meson, +/obj/item/geiger_counter, +/obj/item/geiger_counter, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) "cij" = ( /obj/machinery/modular_computer/console/preset/engineering, /obj/structure/cable{ @@ -44492,6 +44578,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) +"cip" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) "ciq" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -44501,6 +44596,13 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/chief) +"cir" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) "cis" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel, @@ -44642,18 +44744,14 @@ /turf/open/floor/plasteel, /area/engine/engineering) "ciO" = ( -/obj/item/book/manual/engineering_singularity_safety{ - pixel_x = 3; - pixel_y = 3 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/book/manual/wiki/engineering_guide, -/obj/item/book/manual/engineering_particle_accelerator{ - pixel_x = -3; - pixel_y = -3 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/table/glass, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "ciP" = ( /obj/structure/cable{ @@ -44795,6 +44893,12 @@ }, /turf/open/floor/plasteel/vault, /area/crew_quarters/heads/chief) +"cjh" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "cji" = ( /obj/structure/cable{ icon_state = "1-2" @@ -44850,6 +44954,13 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"cjn" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/obj/effect/landmark/blobstart, +/turf/open/floor/wood, +/area/maintenance/bar) "cjo" = ( /obj/structure/closet/toolcloset, /turf/open/floor/plasteel, @@ -45039,9 +45150,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/yellow/side{ - dir = 6 - }, +/turf/open/floor/plasteel, /area/engine/engineering) "cjP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -45059,10 +45168,9 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ name = "Engineering External Access"; - req_access = null; req_access_txt = "10;13" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "cjS" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -45080,11 +45188,8 @@ /obj/machinery/computer/station_alert{ dir = 4 }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of your own office."; +/obj/machinery/computer/security/telescreen/ce{ dir = 4; - name = "Research Monitor"; - network = list("rd"); pixel_x = -24 }, /turf/open/floor/plasteel/vault, @@ -45438,74 +45543,50 @@ }, /area/engine/engineering) "ckU" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "n2_sensor" - }, +/obj/machinery/air_sensor/atmos/nitrogen_tank, /turf/open/floor/engine/n2, /area/engine/atmos) "ckV" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - frequency = 1441; - id = "n2_in" +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input{ + dir = 1 }, /turf/open/floor/engine/n2, /area/engine/atmos) "ckW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 1; - frequency = 1441; - id_tag = "n2_out"; - name = "n2 out" +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output{ + dir = 1 }, /turf/open/floor/engine/n2, /area/engine/atmos) "ckX" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "o2_sensor" - }, +/obj/machinery/air_sensor/atmos/oxygen_tank, /turf/open/floor/engine/o2, /area/engine/atmos) "ckY" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - frequency = 1441; - id = "o2_in" +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input{ + dir = 1 }, /turf/open/floor/engine/o2, /area/engine/atmos) "ckZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 1; - frequency = 1441; - id_tag = "o2_out"; - name = "o2 out" +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output{ + dir = 1 }, /turf/open/floor/engine/o2, /area/engine/atmos) "cla" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "air_sensor" - }, +/obj/machinery/air_sensor/atmos/air_tank, /turf/open/floor/engine/air, /area/engine/atmos) "clb" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - frequency = 1441; - id = "air_in" +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input{ + dir = 1 }, /turf/open/floor/engine/air, /area/engine/atmos) "clc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on{ - dir = 1; - frequency = 1441; - id_tag = "air_out"; - name = "air out" +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{ + dir = 1 }, /turf/open/floor/engine/air, /area/engine/atmos) @@ -45556,19 +45637,13 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "cli" = ( -/obj/machinery/button/door{ - id = "auxincineratorvent"; - name = "Auxiliary Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = 6; - pixel_y = -24; - req_access_txt = "32" + pixel_y = -24 }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Turbine Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = -6; - pixel_y = -24; - req_access_txt = "32" + pixel_y = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 @@ -45782,6 +45857,12 @@ dir = 1 }, /area/engine/engineering) +"clO" = ( +/obj/machinery/vr_sleeper, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/crew_quarters/fitness) "clQ" = ( /turf/open/floor/plasteel/yellow/corner{ dir = 1 @@ -45804,7 +45885,7 @@ /area/engine/engineering) "clS" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/rnd/production/protolathe/department/security, +/obj/machinery/rnd/production/techfab/department/security, /turf/open/floor/plasteel/red/side, /area/security/main) "clT" = ( @@ -45853,14 +45934,7 @@ /area/maintenance/disposal/incinerator) "cmf" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Turbine Interior Airlock"; - req_access_txt = "32" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -45868,17 +45942,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ pixel_x = 38; - pixel_y = 6; - req_access_txt = "12"; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" + pixel_y = 6 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -46041,9 +46107,7 @@ freq = 1400; location = "Engineering" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/engineering) @@ -46117,9 +46181,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_atmos{ pixel_x = 8; pixel_y = 24 }, @@ -46144,10 +46206,8 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 8; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 8 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -46299,11 +46359,16 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cnx" = ( -/obj/structure/chair/sofa/left{ - icon_state = "sofaend_left"; +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/engine, /area/engine/engineering) "cny" = ( /obj/effect/landmark/start/station_engineer, @@ -46336,14 +46401,7 @@ /area/construction) "cnC" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Turbine Exterior Airlock"; - req_access_txt = "32" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -46536,12 +46594,15 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cnZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "coa" = ( @@ -46555,32 +46616,25 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cob" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" + icon_state = "1-2" }, /turf/open/floor/plasteel, /area/engine/engineering) "coc" = ( -/obj/structure/table, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/electronics/apc, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stock_parts/cell/high/plus, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" }, -/obj/item/stack/cable_coil, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "cop" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ @@ -46611,10 +46665,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cos" = ( -/obj/machinery/door/poddoor{ - id = "auxincineratorvent"; - name = "Auxiliary Incinerator Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cot" = ( @@ -46748,27 +46799,38 @@ /turf/open/floor/plasteel, /area/engine/engineering) "coK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"coL" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/chair/office/dark, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, /turf/open/floor/plasteel, /area/engine/engineering) -"coL" = ( -/obj/structure/chair/office/dark, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, +"coM" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/engine, /area/engine/engineering) "coS" = ( /obj/structure/rack, @@ -46830,9 +46892,17 @@ /turf/open/space, /area/space/nearstation) "cpg" = ( +/obj/item/grenade/barrier{ + pixel_x = 4 + }, +/obj/item/grenade/barrier, +/obj/item/grenade/barrier{ + pixel_x = -4 + }, /obj/structure/table, -/obj/item/storage/lockbox/loyalty, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/ai_monitored/security/armory) "cph" = ( /obj/structure/lattice, @@ -46925,43 +46995,58 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cpt" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 8 +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/storage/toolbox/electrical{ + pixel_y = 5 }, +/turf/open/floor/plasteel, /area/engine/engineering) "cpu" = ( -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = 3; - pixel_y = 3 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/book/manual/wiki/engineering_construction, -/obj/item/clothing/gloves/color/yellow, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpv" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpA" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/table/glass, -/obj/item/flashlight, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cpx" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/closet/radiation, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cpy" = ( -/obj/structure/sign/warning/radiation/rad_area, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cpA" = ( /obj/structure/chair/office/dark{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "cpC" = ( @@ -46970,20 +47055,19 @@ /turf/open/floor/plasteel, /area/bridge) "cpD" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/machinery/light{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "cpE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/turf/open/floor/plasteel/yellow/side, +/turf/open/floor/plasteel, /area/engine/engineering) "cpG" = ( /obj/structure/table/optable, @@ -46995,9 +47079,7 @@ dir = 4 }, /obj/machinery/door/airlock/external{ - name = "Escape Pod Four"; - req_access = null; - req_access_txt = "0" + name = "Escape Pod Four" }, /turf/open/floor/plating, /area/engine/engineering) @@ -47093,72 +47175,132 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"cqa" = ( +"cpZ" = ( /obj/structure/table, -/obj/machinery/cell_charger, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqa" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cqb" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) -"cqb" = ( -/obj/structure/chair/sofa/right{ - icon_state = "sofaend_right"; - dir = 4 +"cqc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "cqd" = ( -/obj/structure/closet/radiation, -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/stripes/line, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) -"cqf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"cqg" = ( -/obj/machinery/camera{ - c_tag = "Engineering Center"; - dir = 2; - network = list("ss13","engine"); - pixel_x = 23 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"cqh" = ( +"cqe" = ( +/obj/effect/turf_decal/stripes/corner, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqf" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Gas to Filter" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqh" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Fore"; + dir = 1; + network = list("ss13","engine"); + pixel_x = 23 + }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/engine, /area/engine/engineering) "cqi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/engine, /area/engine/engineering) "cqj" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/stripes/line, +/obj/machinery/button/door{ + id = "engsm"; + name = "Radiation Shutters Control"; + pixel_y = -24; + req_access_txt = "10" + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/engine, +/area/engine/engineering) +"cql" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqm" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, /area/engine/engineering) "cqn" = ( /obj/structure/grille, @@ -47205,10 +47347,7 @@ /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "cqt" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Turbine Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cqu" = ( @@ -47251,39 +47390,53 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"cqC" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 2; - pixel_y = 4 +"cqA" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access_txt = "10;13" }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/engine/engineering) -"cqD" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, +"cqB" = ( /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 4 }, -/turf/open/floor/plating, -/area/engine/engineering) -"cqE" = ( -/obj/structure/particle_accelerator/end_cap, -/turf/open/floor/plating, -/area/engine/engineering) -"cqF" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, /area/engine/engineering) +"cqC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqD" = ( +/obj/structure/sign/warning/radiation, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cqE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber"; + req_access_txt = "10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/engine, +/area/engine/supermatter) +"cqF" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "cqG" = ( /obj/structure/rack, /obj/item/storage/box/rubbershot{ @@ -47305,8 +47458,9 @@ pixel_x = 3; pixel_y = -3 }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/ai_monitored/security/armory) "cqJ" = ( /obj/structure/cable, @@ -47371,49 +47525,70 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cqS" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 10 +/obj/machinery/light/small{ + dir = 8 }, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plating, /area/engine/engineering) "cqT" = ( -/turf/open/floor/plasteel/yellow/side, +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/turf/open/floor/plating, /area/engine/engineering) "cqU" = ( -/obj/machinery/button/door{ - id = "Singularity"; - name = "Shutters Control"; - pixel_x = 25; - req_access_txt = "11" +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side, +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "cqY" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/engineering) "cqZ" = ( -/obj/structure/particle_accelerator/fuel_chamber, -/turf/open/floor/plating, -/area/engine/engineering) +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/engine/supermatter) "cra" = ( -/obj/machinery/particle_accelerator/control_box, -/obj/structure/cable/yellow, -/turf/open/floor/plating, -/area/engine/engineering) -"crb" = ( -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/plating, -/area/engine/engineering) -"crc" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Engine Containment Starboard Fore"; - dir = 2; - network = list("engine") +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Gas to Filter" }, -/turf/open/floor/plating/airless, +/obj/machinery/airalarm/engine{ + dir = 4; + pixel_x = -23 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/engine/supermatter) +"crb" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + icon_state = "pump_map"; + name = "Gas to Chamber" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/engine/supermatter) +"crc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"crd" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "crh" = ( /obj/effect/turf_decal/stripes/line{ @@ -47476,38 +47651,40 @@ /turf/open/floor/plating, /area/engine/engineering) "crs" = ( -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 }, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 - }, -/obj/item/crowbar, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/closed/wall/r_wall, +/area/engine/supermatter) "crt" = ( -/obj/structure/particle_accelerator/power_box, -/turf/open/floor/plating, -/area/engine/engineering) +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber"; + req_access_txt = "10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/supermatter) "cru" = ( -/obj/item/screwdriver, -/turf/open/floor/plating, -/area/engine/engineering) +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"crv" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "crw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, +/turf/open/floor/plasteel, /area/engine/engineering) "cry" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -47596,28 +47773,42 @@ /turf/open/space, /area/solar/starboard/aft) "crH" = ( -/turf/open/space/basic, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space, /area/space/nearstation) "crI" = ( -/obj/structure/chair/stool, -/turf/open/floor/plating, -/area/engine/engineering) +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"crJ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) "crK" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 8 }, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 +/turf/closed/wall/r_wall, +/area/engine/engineering) +"crL" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "crM" = ( -/obj/machinery/light/small{ - dir = 4; - light_color = "#fff4bc" +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "crP" = ( /obj/machinery/light, @@ -47630,12 +47821,25 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"crV" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "2-8" +"crT" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 }, -/turf/open/floor/plating/airless, +/turf/open/space, +/area/space/nearstation) +"crU" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) +"crV" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "crW" = ( /obj/machinery/light/small{ @@ -47655,22 +47859,38 @@ /obj/structure/transit_tube, /turf/open/floor/plating, /area/engine/engineering) -"csa" = ( -/obj/structure/cable{ - icon_state = "1-8" +"crZ" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 }, -/turf/open/floor/plating/airless, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"csa" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, /area/engine/engineering) +"csb" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/space, +/area/space/nearstation) "csc" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/space, /area/maintenance/aft) "csd" = ( -/obj/structure/cable{ - icon_state = "1-4" +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cse" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8 }, -/turf/open/floor/plating/airless, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "csg" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -47678,7 +47898,6 @@ }, /obj/machinery/door/airlock/external{ name = "Engineering External Access"; - req_access = null; req_access_txt = "10;13" }, /turf/open/floor/plating, @@ -47689,6 +47908,13 @@ }, /turf/open/space, /area/space/nearstation) +"csj" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/engine/engineering) "csk" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/airless, @@ -47715,16 +47941,13 @@ /turf/open/space, /area/space/nearstation) "csq" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the turbine vent."; - dir = 1; - name = "turbine vent monitor"; - network = list("turbine"); - pixel_y = -29 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, +/obj/machinery/computer/security/telescreen/turbine{ + dir = 1; + pixel_y = -30 + }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "csr" = ( @@ -47739,6 +47962,27 @@ /obj/machinery/meter, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) +"css" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space, +/area/space/nearstation) +"csu" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"csv" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"csx" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space, +/area/space/nearstation) "csy" = ( /obj/structure/table, /obj/item/weldingtool, @@ -47747,6 +47991,19 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"csA" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) "csD" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -47758,6 +48015,24 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/aft) +"csH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"csI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) "csM" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/yellow/visible, @@ -47775,9 +48050,27 @@ /area/ai_monitored/turret_protected/aisat_interior) "csP" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 4 }, -/turf/open/floor/plating/airless, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"csR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, /area/engine/engineering) "csT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -48302,7 +48595,6 @@ /area/ai_monitored/turret_protected/aisat/atmos) "cuq" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; name = "Air Out" }, /obj/effect/turf_decal/stripes/line, @@ -49011,7 +49303,7 @@ /obj/machinery/camera/motion{ c_tag = "MiniSat Core Hallway"; dir = 4; - network = list("minisat") + network = list("aicore") }, /obj/machinery/firealarm{ dir = 8; @@ -49389,7 +49681,7 @@ /obj/machinery/camera/motion{ c_tag = "MiniSat AI Chamber North"; dir = 1; - network = list("minisat") + network = list("aicore") }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) @@ -49404,15 +49696,18 @@ /area/maintenance/port/fore) "cwM" = ( /obj/structure/rack, -/obj/item/storage/box/chemimp{ - pixel_x = 6 +/obj/item/storage/box/teargas{ + pixel_x = -3; + pixel_y = 3 }, -/obj/item/storage/box/trackimp{ - pixel_x = -3 +/obj/item/storage/box/handcuffs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "cwT" = ( /obj/machinery/camera{ @@ -49445,6 +49740,10 @@ /obj/effect/landmark/carpspawn, /turf/open/space, /area/space/nearstation) +"cxo" = ( +/obj/structure/chair/wood/normal, +/turf/open/floor/wood, +/area/maintenance/bar) "cxA" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -49463,32 +49762,23 @@ /turf/open/space/basic, /area/space) "cxG" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 0; - name = "Escape Pod Three"; - req_access_txt = "0" - }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, +/obj/machinery/door/airlock/external{ + name = "Escape Pod Three" + }, /turf/open/floor/plating, /area/security/main) "cxJ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Shuttle Airlock"; - req_access_txt = "2" - }, -/obj/machinery/button/door{ - id = "prison release"; - name = "Labor Camp Shuttle Lockdown"; - pixel_y = -25; - req_access_txt = "2" - }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plating, /area/security/processing) "cxN" = ( /obj/structure/cable{ @@ -49503,6 +49793,15 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) +"cxP" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock" + }, +/turf/open/floor/plating, +/area/security/processing) "cxW" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -49715,8 +50014,6 @@ }, /obj/machinery/door/airlock/external{ name = "Escape Pod Four"; - req_access = null; - req_access_txt = "0"; shuttledocked = 1 }, /turf/open/floor/plating, @@ -49731,14 +50028,18 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) +"czE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "czF" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 }, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = -32 - }, -/turf/open/floor/plating, +/obj/machinery/meter, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "czG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -49944,40 +50245,95 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"cAm" = ( -/obj/item/wirecutters, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/engine/engineering) -"cAo" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +"cAl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "1-4" }, -/turf/open/floor/plating/airless, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cAm" = ( +/obj/machinery/power/supermatter_crystal/engine, +/turf/open/floor/engine, +/area/engine/supermatter) +"cAo" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/engine, /area/engine/engineering) "cAp" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plating/airless, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Cooling Loop to Gas" + }, +/turf/open/floor/engine, /area/engine/engineering) "cAq" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/plating/airless, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, /area/engine/engineering) "cAr" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plating/airless, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Gas to Mix" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAu" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/emitter/anchored{ + dir = 4; + state = 2 + }, +/turf/open/floor/plating, /area/engine/engineering) "cAy" = ( /obj/structure/closet/secure_closet/freezer/kitchen/maintenance, @@ -50092,17 +50448,9 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "cAP" = ( -/obj/machinery/button/door{ - id = "Singularity"; - name = "Shutters Control"; - pixel_x = 25; - req_access_txt = "11" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "cAQ" = ( /obj/structure/chair, /turf/open/floor/plating, @@ -50233,7 +50581,7 @@ /obj/machinery/camera/motion{ c_tag = "MiniSat AI Chamber South"; dir = 2; - network = list("minisat") + network = list("aicore") }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) @@ -50517,7 +50865,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plating/airless, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/engine, /area/engine/engineering) "cBS" = ( /obj/structure/cable{ @@ -50543,7 +50894,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ name = "Security Office"; - req_access = null; req_access_txt = "1" }, /obj/structure/cable{ @@ -50562,10 +50912,6 @@ /obj/item/clothing/under/burial, /turf/open/floor/plasteel/grimy, /area/chapel/office) -"cCa" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/maintenance/bar) "cCb" = ( /obj/structure/table, /obj/item/stack/cable_coil{ @@ -50678,7 +51024,86 @@ /obj/machinery/deepfryer, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) +"cCB" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cCC" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cCD" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Mix to Engine" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cCE" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"cCF" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/atmos) +"cCG" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) +"cCH" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"cCI" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"cCJ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"cCP" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/space, +/area/space/nearstation) +"cCQ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) "cCS" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/structure/lattice, /turf/open/space, /area/space/nearstation) "cCT" = ( @@ -50700,33 +51125,77 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cDe" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/closet/radiation, /turf/open/floor/plasteel, /area/engine/engineering) -"cDh" = ( +"cDg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, /area/engine/engineering) -"cDk" = ( +"cDh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical, +/obj/item/flashlight, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/pipe_dispenser, +/turf/open/floor/engine, +/area/engine/engineering) +"cDi" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/table/reinforced, +/obj/item/clothing/suit/radiation, +/obj/item/clothing/head/radiation, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, +/area/engine/engineering) +"cDj" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/engineering) "cDl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -50743,39 +51212,89 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cDo" = ( -/obj/item/pen, -/obj/item/storage/belt/utility, -/obj/item/clothing/glasses/meson, -/obj/item/paper_bin{ - layer = 2.9 - }, -/obj/structure/table/glass, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cDt" = ( -/obj/structure/table, -/obj/item/twohanded/rcl/pre_loaded, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cDw" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/structure/cable{ + icon_state = "1-4" }, /turf/open/floor/plasteel, /area/engine/engineering) -"cDx" = ( -/obj/structure/chair/sofa{ - icon_state = "sofamiddle"; +"cDp" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDs" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDv" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDw" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Atmos to Loop" + }, +/turf/open/floor/engine, /area/engine/engineering) "cDy" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/belt/utility, -/obj/item/clothing/glasses/meson, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDz" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "cDB" = ( @@ -50785,18 +51304,103 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel, /area/engine/engineering) +"cDC" = ( +/obj/item/wrench, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDD" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDE" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "External Gas to Loop" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "cDF" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "External Gas to Loop" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDG" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cDH" = ( +/obj/structure/rack, +/obj/item/clothing/mask/gas{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDI" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "cDK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/yellow/side{ +/obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 }, +/turf/open/floor/plasteel, /area/engine/engineering) +"cDL" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cDN" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/engineering) +"cDY" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/turf/open/space, +/area/space/nearstation) "cDZ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -50805,131 +51409,816 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cEa" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cEd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"cEs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Port"; + dir = 4; + network = list("ss13","engine") }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, +/turf/open/floor/engine, /area/engine/engineering) -"cEv" = ( +"cEe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cEf" = ( +/obj/machinery/ai_status_display, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cEg" = ( +/obj/machinery/status_display, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cEh" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plating, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, /area/engine/engineering) -"cEw" = ( -/obj/structure/particle_accelerator/particle_emitter/left, -/turf/open/floor/plating, -/area/engine/engineering) -"cEx" = ( -/obj/structure/particle_accelerator/particle_emitter/right, -/turf/open/floor/plating, -/area/engine/engineering) -"cEy" = ( +"cEi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Starboard"; + dir = 8; + network = list("ss13","engine") + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEk" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cEl" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 6 }, -/turf/open/floor/plating, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cEr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, /area/engine/engineering) -"cEK" = ( +"cEs" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Gas to Cooling Loop" }, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access = null; - req_access_txt = "10;13" +/turf/open/floor/engine, +/area/engine/engineering) +"cEt" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" }, /turf/open/floor/plating, +/area/engine/supermatter) +"cEu" = ( +/obj/machinery/camera{ + c_tag = "Supermatter Chamber"; + dir = 2; + network = list("engine"); + pixel_x = 23 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEv" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEy" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEz" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEA" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cEB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Gas" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cED" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEE" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/turf/open/space, +/area/space/nearstation) +"cEK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cEL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEM" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/item/tank/internals/plasma, +/turf/open/floor/plating, +/area/engine/supermatter) +"cET" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cEU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cEW" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "cFb" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Engine Containment Port Fore"; - dir = 2; - network = list("engine") +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 }, -/turf/open/floor/plating/airless, +/turf/open/floor/engine, +/area/engine/engineering) +"cFc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + icon_state = "pump_map"; + name = "Cooling Loop Bypass" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFe" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cFh" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cFj" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cFk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Mix Bypass" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFm" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cFn" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/turf/open/space, +/area/space/nearstation) +"cFo" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cFu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/engine/engineering) +"cFw" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cFy" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFz" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cFA" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "cFI" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plating/airless, +/turf/open/floor/engine, /area/engine/engineering) "cFJ" = ( -/turf/open/floor/plating/airless, -/area/space) +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/engine, +/area/engine/engineering) "cFK" = ( -/obj/machinery/field/generator{ - anchored = 1; - state = 2 +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Aft"; + dir = 2; + network = list("ss13","engine"); + pixel_x = 23 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cFP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFT" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGd" = ( +/obj/structure/closet/crate/bin, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGe" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGf" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8; + filter_type = "n2" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGg" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGh" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/engine, +/area/engine/engineering) +"cGi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/engine, +/area/engine/engineering) +"cGj" = ( +/obj/structure/table, +/obj/item/pipe_dispenser, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGk" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGl" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGt" = ( +/obj/structure/closet/wardrobe/engineering_yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGu" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/engine/engineering) +"cGC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/components/binary/valve/digital/on{ + dir = 4; + name = "Output Release" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGE" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 10 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGH" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Laser Room"; + req_access_txt = "10" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGK" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"cGR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGT" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGU" = ( +/obj/structure/reflector/double/anchored{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGV" = ( +/obj/structure/reflector/box/anchored{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGZ" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ + dir = 1 }, /turf/open/floor/plating/airless, -/area/space) -"cFU" = ( +/area/engine/engineering) +"cHa" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cHb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHc" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHd" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHe" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHg" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHj" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, /obj/machinery/power/emitter/anchored{ dir = 8; state = 2 }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/engine/engineering) -"cGh" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +"cHn" = ( +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/structure/cable/yellow{ +/turf/open/floor/plating, +/area/engine/engineering) +"cHo" = ( +/obj/structure/reflector/single/anchored{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cHp" = ( +/obj/structure/reflector/single/anchored{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cHr" = ( +/obj/structure/cable{ icon_state = "1-8" }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cGr" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cGE" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cGU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space) -"cGV" = ( -/obj/machinery/the_singularitygen/tesla, -/turf/open/floor/plating/airless, -/area/space) -"cGZ" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/engine/engineering) "cHD" = ( /obj/structure/cable{ @@ -51237,49 +52526,31 @@ /turf/open/floor/plating, /area/hallway/secondary/entry) "cMm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/plasteel, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/engineering) "cMC" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the Engine."; - dir = 8; - layer = 4; - name = "Engine Monitor"; - network = list("singularity"); - pixel_x = 30 - }, /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/machinery/computer/security/telescreen/engine{ + dir = 8; + pixel_x = 30 + }, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/engine/engineering) "cMD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/closed/wall/r_wall, +/area/engine/supermatter) "cMH" = ( -/obj/structure/particle_accelerator/particle_emitter/center, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/open/floor/engine, +/area/engine/supermatter) "cMN" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/supermatter) "cMQ" = ( /obj/structure/cable{ icon_state = "0-2" @@ -51298,13 +52569,6 @@ }, /turf/open/floor/plasteel/airless/solarpanel, /area/solar/starboard/aft) -"cNt" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) "cNE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, @@ -51517,27 +52781,41 @@ /turf/open/floor/plasteel/dark/telecomms/mainframe, /area/tcommsat/server) "cSG" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/engine/engineering) +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "cSH" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/space) +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) "cSI" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space) -"cSK" = ( -/obj/structure/cable/yellow{ - icon_state = "0-4" +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/space) +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cSJ" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cSK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) "cSL" = ( /obj/machinery/button/door{ id = "atmos"; @@ -51862,17 +53140,6 @@ "cVb" = ( /turf/closed/wall, /area/hallway/secondary/service) -"cXd" = ( -/obj/structure/falsewall, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"cZO" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/cleanable/blood/old, -/obj/item/assembly/signaler, -/turf/open/floor/plating, -/area/maintenance/bar) "dfh" = ( /obj/machinery/power/apc{ areastring = "/area/science/circuit"; @@ -51887,9 +53154,9 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"dpp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, +"dfL" = ( +/obj/structure/reagent_dispensers/keg/gargle, +/turf/open/floor/wood, /area/maintenance/bar) "dqu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -51901,21 +53168,11 @@ }, /turf/closed/wall, /area/science/circuit) -"dwQ" = ( -/obj/structure/grille, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) -"dKf" = ( -/turf/closed/wall/r_wall, -/area/security/armory) -"dMY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, +"dKP" = ( +/turf/closed/wall, +/area/maintenance/bar) +"dKV" = ( +/obj/structure/chair/stool/bar, /turf/open/floor/wood, /area/maintenance/bar) "dMZ" = ( @@ -51924,80 +53181,18 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"dPI" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"dTy" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"dUz" = ( -/obj/structure/table/wood, -/obj/item/storage/box/drinkingglasses, -/turf/open/floor/wood, -/area/maintenance/bar) "eaI" = ( /obj/structure/table/reinforced, /obj/item/radio/intercom{ pixel_x = -30 }, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, /turf/open/floor/plasteel/white, /area/science/circuit) -"ebz" = ( -/obj/structure/window/reinforced, -/obj/vehicle/ridden/secway, -/obj/item/key/security, -/obj/machinery/door/window/eastleft{ - name = "Secway Docking Port" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/space/nearstation) -"eeA" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, +"evR" = ( +/turf/open/floor/plating, /area/maintenance/bar) -"eeO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/space) -"ejP" = ( -/obj/machinery/suit_storage_unit/security, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"ekX" = ( -/obj/machinery/flasher{ - id = "Cell 4"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"enX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, -/area/security/armory) -"exs" = ( -/turf/open/floor/plasteel/showroomfloor, -/area/space/nearstation) -"exQ" = ( -/obj/structure/table, -/obj/item/storage/toolbox/drone, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) "eyM" = ( /obj/machinery/mineral/ore_redemption{ input_dir = 2; @@ -52027,39 +53222,17 @@ }, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"faG" = ( -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/crew_quarters/cryopod) "fcG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/science/mixing) -"fev" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/brig) "flc" = ( -/obj/machinery/bookbinder, +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, /turf/open/floor/plasteel/white, /area/science/circuit) -"flZ" = ( -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/security/brig) "fnC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -52073,88 +53246,31 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"fvg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space) -"fBa" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, +"fsQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, /area/engine/engineering) -"fBP" = ( -/obj/machinery/power/emitter/anchored{ - dir = 4; - state = 2 +"fvY" = ( +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"fxa" = ( +/obj/structure/chair/wood/normal, +/turf/open/floor/wood{ + icon_state = "wood-broken4" }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/area/maintenance/bar) "fGf" = ( -/obj/machinery/smartfridge/disks, +/obj/machinery/smartfridge/disks{ + pixel_y = 2 + }, +/obj/structure/table, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) -"fGu" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space, -/area/space) -"fJG" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) "fKl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/science/circuit) -"fVA" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/rack, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/mask/gas/sechailer, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"fVS" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"fXl" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"fZs" = ( -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/engine/engineering) "gbq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -52167,47 +53283,31 @@ /obj/item/stack/sheet/glass/fifty, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"gcN" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"gjf" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) "gjl" = ( /turf/closed/wall, /area/quartermaster/warehouse) -"gqU" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 3"; - name = "Cell 3" +"gsz" = ( +/obj/machinery/camera{ + c_tag = "Fitness Room South"; + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/vr_sleeper, +/turf/open/floor/plasteel/green/side{ + dir = 4 }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) +/area/crew_quarters/fitness) "gwd" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plasteel, /area/science/circuit) -"gKO" = ( +"gBo" = ( /obj/structure/cable{ - icon_state = "0-8" + icon_state = "1-8" }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/security/brig) +/turf/open/floor/wood, +/area/maintenance/bar) "gLH" = ( /obj/machinery/door/airlock/external{ name = "External Access"; @@ -52218,29 +53318,10 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"gMt" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/bot{ - dir = 2 +"gMl" = ( +/obj/structure/chair/wood/normal{ + dir = 4 }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"gMI" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"gUa" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"gVz" = ( -/obj/structure/table/wood/poker, /turf/open/floor/wood, /area/maintenance/bar) "gWd" = ( @@ -52277,189 +53358,29 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"hcV" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ +"hRa" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ dir = 8 }, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"iiW" = ( /turf/open/floor/wood, /area/maintenance/bar) -"heb" = ( -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"heG" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"hkC" = ( -/obj/machinery/flasher{ - id = "Cell 3"; - pixel_x = -28 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"hpF" = ( -/obj/machinery/vending/kink, -/turf/open/floor/wood, -/area/maintenance/bar) -"hrd" = ( -/obj/machinery/door_timer{ - id = "Cell 2"; - name = "Cell 2"; - pixel_y = -32 - }, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/red/corner, -/area/security/brig) -"hrv" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"hse" = ( -/obj/structure/closet/l3closet/security, -/turf/open/floor/plasteel/showroomfloor, -/area/space/nearstation) -"hsU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"htj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/security/armory) -"hyb" = ( +"ijc" = ( /obj/structure/table, -/obj/item/storage/box/firingpins, -/obj/item/storage/box/firingpins, +/obj/item/stack/sheet/metal/fifty, /turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"hHu" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - name = "Incinerator Access"; - req_access_txt = "12" - }, -/obj/structure/barricade/wooden{ - name = "wooden barricade (CLOSED)" - }, +/area/engine/engineering) +"imH" = ( +/obj/structure/falsewall, /turf/open/floor/plating, /area/maintenance/bar) -"hNR" = ( -/obj/structure/table/wood/poker, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"hPY" = ( -/obj/structure/bed, -/obj/item/bedsheet/grey, -/obj/effect/decal/cleanable/semen{ - desc = "Blech."; - name = "dried semen" - }, -/obj/effect/spawner/lootdrop/costume, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/bar) -"hQe" = ( -/obj/machinery/light/small{ - dir = 8; - light_color = "#fff4bc" - }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/engine/engineering) -"hSf" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space) -"hYu" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_x = 2; - pixel_y = 4 - }, -/obj/item/storage/toolbox/electrical{ - pixel_x = -2 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"hZr" = ( -/obj/machinery/door_timer{ - id = "Cell 3"; - name = "Cell 3"; - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner, -/area/security/brig) -"iaO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"iei" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"iex" = ( -/turf/open/space/basic, -/area/engine/engineering) -"ifj" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"ilR" = ( -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 4; - name = "Cryogenics APC"; - pixel_x = 24 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/crew_quarters/cryopod) -"iob" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) "ipA" = ( -/obj/machinery/droneDispenser, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "itG" = ( @@ -52468,13 +53389,13 @@ /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) -"iCL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +"izv" = ( +/obj/machinery/vending/clothing, +/obj/machinery/light/small{ + dir = 4 }, -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/turf/open/floor/wood, +/area/maintenance/bar) "iEJ" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod One" @@ -52492,43 +53413,6 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"iPE" = ( -/obj/structure/bed, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/mask/muzzle, -/turf/open/floor/plasteel, -/area/security/execution/transfer) -"iWy" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"iWK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"iWM" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) -"iXO" = ( -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/machinery/newscaster{ - pixel_x = 30 - }, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) "jbf" = ( /obj/structure/cable{ icon_state = "0-2" @@ -52541,19 +53425,6 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"jbA" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"jbT" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"jcS" = ( -/obj/machinery/light, -/turf/open/floor/plating/airless, -/area/engine/engineering) "jgm" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -52572,43 +53443,24 @@ /obj/machinery/rnd/production/techfab/department/cargo, /turf/open/floor/plasteel, /area/quartermaster/office) -"jnp" = ( -/turf/open/floor/plasteel/dark, -/area/security/processing) +"jqv" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) "jrE" = ( -/obj/machinery/rnd/production/protolathe/department/science, /obj/structure/sign/poster/official/random{ pixel_x = 32 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"jrX" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"jsN" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"juA" = ( -/obj/machinery/flasher/portable, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) "jAD" = ( /obj/structure/grille, /turf/open/floor/plating/airless, /area/space/nearstation) -"jAM" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) "jCq" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -52634,24 +53486,28 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"jJF" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/maintenance/port/aft) "jMF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, /turf/closed/wall, /area/science/circuit) -"jOb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +"jMY" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 }, -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) +/obj/item/stack/cable_coil, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "jSO" = ( /obj/machinery/light{ dir = 4 @@ -52661,23 +53517,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"jTA" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Engine Containment Starboard Aft"; - dir = 1; - network = list("engine") - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"jUO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) "jVl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -52687,64 +53526,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jZP" = ( -/obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -30 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"kbh" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"kbA" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"kcH" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/turf/open/floor/noslip, -/area/crew_quarters/cryopod) -"kdx" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/closet/secure_closet/brig{ - id = "Secure Cell"; - name = "Secure Cell Locker" - }, -/obj/effect/turf_decal/stripes/white/end{ - dir = 4 - }, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) "khb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -52762,20 +53543,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) -"kjK" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"klO" = ( -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) "knx" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering{ @@ -52796,78 +53563,20 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"kso" = ( -/obj/machinery/button/door{ - id = "Singularity"; - name = "Shutters Control"; - pixel_x = -25; - req_access_txt = "11" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"ksW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 2; - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"ktN" = ( -/obj/effect/turf_decal/loading_area/white, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"kwo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) +"kyF" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/wood, +/area/maintenance/bar) "kzT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/closed/wall/r_wall, /area/science/mixing) -"kBh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/brig) -"kNF" = ( -/obj/structure/closet/bombcloset/security, -/turf/open/floor/plasteel/showroomfloor, -/area/space) "kOw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/mixing) -"kOO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) "kPd" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/cable{ @@ -52883,269 +53592,100 @@ }, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"kRe" = ( -/obj/item/restraints/handcuffs/fake, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, -/turf/open/floor/plating, -/area/maintenance/bar) +"kQq" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "kSb" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"kTZ" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" +"lnu" = ( +/obj/structure/chair/wood/normal{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/turf/open/floor/wood{ + icon_state = "wood-broken6" }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"kUh" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"kXH" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, /area/maintenance/bar) -"leL" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"lnm" = ( -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/item/crowbar, -/obj/item/electropack/shockcollar, -/turf/open/floor/plating, -/area/maintenance/bar) -"lyP" = ( -/obj/machinery/flasher{ - id = "Cell 2"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) "lAB" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, /area/science/circuit) -"lCe" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" +"lCi" = ( +/obj/docking_port/stationary/public_mining_dock{ + dir = 8 }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/turf/open/floor/plating, +/area/construction/mining/aux_base) "lMg" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 }, /turf/open/floor/plasteel, /area/science/circuit) -"lNf" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - dir = 4; - id = "Secure Cell"; - name = "Secure Cell" - }, -/obj/machinery/door/window/brigdoor/security/cell{ - dir = 8; - id = "Secure Cell"; - name = "Secure Cell" - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel/dark/side{ - dir = 8 - }, -/area/security/execution/transfer) "lQG" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/science/circuit) -"lSn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +"mjr" = ( +/obj/machinery/vending/wardrobe/bar_wardrobe, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"mpI" = ( +/obj/structure/table/wood, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) +"mqZ" = ( +/obj/structure/reagent_dispensers/keg/aphro/strong, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/plating, +/area/maintenance/bar) +"mrR" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/wood, +/area/maintenance/bar) +"mBv" = ( +/obj/structure/cable{ + icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4; + name = "Output to Waste" + }, +/turf/open/floor/engine, /area/engine/engineering) -"lUX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"lWf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"mjp" = ( -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) -"mtP" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/wood, -/area/maintenance/bar) -"mDn" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - dir = 1; - name = "Armory Desk"; - req_access_txt = "3" - }, -/obj/machinery/door/window/southleft{ - name = "Reception Desk"; - req_access_txt = "63" - }, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/brig) -"mES" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) "mNi" = ( /obj/machinery/light_switch{ pixel_x = -20 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"mOo" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"mOS" = ( -/obj/structure/sign/poster/official/no_erp, -/turf/closed/wall, +"mPE" = ( +/obj/machinery/chem_dispenser/drinks, +/obj/structure/table/wood, +/turf/open/floor/wood, /area/maintenance/bar) -"mQL" = ( -/obj/effect/turf_decal/stripes/white/line, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/obj/machinery/door_timer{ - id = "Secure Cell"; - name = "Secure Cell"; - pixel_y = -32 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) "mRe" = ( /obj/machinery/light{ dir = 8 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"mTp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) -"mZB" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"nfW" = ( -/turf/open/floor/plasteel, -/area/security/execution/transfer) -"nip" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/space) -"nlM" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/brig) -"noe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, +"nfm" = ( +/obj/machinery/vending/autodrobe, /turf/open/floor/wood, /area/maintenance/bar) -"nok" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"nvz" = ( -/obj/structure/table, -/obj/item/grenade/barrier{ - pixel_x = 4 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = -4 - }, -/obj/machinery/light{ - dir = 1 - }, +"noK" = ( +/obj/structure/girder, /turf/open/floor/plasteel/dark, -/area/security/armory) +/area/engine/engineering) "nxv" = ( /obj/machinery/power/apc{ name = "Construction Area APC"; @@ -53157,35 +53697,10 @@ }, /turf/open/floor/plating, /area/construction) -"nzk" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"nzm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/space) -"nDS" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun/dragnet, -/obj/item/gun/energy/e_gun/dragnet, -/obj/effect/turf_decal/bot_white, -/obj/item/gun/energy/pumpaction/blaster, -/obj/item/gun/energy/pumpaction/blaster, +"nzh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, -/area/security/armory) +/area/engine/engineering) "nGt" = ( /obj/structure/cable{ icon_state = "1-2" @@ -53203,73 +53718,29 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"nZe" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/turf/open/floor/plating, -/area/maintenance/bar) "oce" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /turf/open/floor/plasteel/white, /area/science/mixing) -"ohN" = ( -/turf/closed/wall, -/area/space) -"oEn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/camera/motion{ - c_tag = "Armory Motion Sensor"; - dir = 2; - name = "motion-sensitive security camera" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"oFD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 2; - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"oFM" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) +"odx" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plating, +/area/maintenance/bar) +"oDF" = ( +/obj/machinery/light, +/turf/open/floor/plating, +/area/engine/engineering) "oHU" = ( /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/plasteel, /area/science/circuit) -"oLO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +"oKh" = ( +/obj/structure/chair/wood/normal{ + icon_state = "wooden_chair"; dir = 8 }, /turf/open/floor/wood, @@ -53281,70 +53752,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/plasteel/white, /area/science/circuit) -"oUp" = ( -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/brig) -"pjh" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"pvY" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"pye" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/newscaster{ - pixel_x = 30 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"pyu" = ( -/obj/structure/window/reinforced, -/obj/machinery/door/window/eastleft{ - name = "Cyborg Docking Port" - }, -/obj/machinery/recharge_station, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"pzB" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) -"pGb" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/brig) "pHl" = ( /obj/structure/table, /obj/item/storage/box/beakers{ @@ -53380,213 +53787,64 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"pLx" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"pNk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "pNx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/science/misc_lab) -"pRH" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "qeQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, /area/science/circuit) -"qne" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"qpv" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/autolathe, -/turf/open/floor/plasteel/white, -/area/science/circuit) "quT" = ( /obj/structure/lattice, /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) -"qyv" = ( -/obj/machinery/door/poddoor/shutters{ - id = "lowsecarmory"; - name = "Non-Lethal Armoury Shutter" - }, -/obj/machinery/button/door{ - id = "lowsecarmory"; - name = "Non-Lethal Armory Shutters"; - pixel_y = 26; - req_access_txt = "3" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/security/main) -"qyS" = ( -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/plasteel, -/area/engine/atmos) -"qCO" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"qLG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +"qIw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/red/corner{ - dir = 8 +/obj/machinery/computer/cryopod{ + pixel_y = -30 }, -/area/security/brig) -"qRE" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "rcD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall/r_wall, /area/science/circuit) -"rez" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "lobbyairlock"; - name = "Security Lobby"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) "rfW" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"rkz" = ( -/obj/machinery/power/apc{ - areastring = "/area/maintenance/bar"; - dir = 2; - name = "Maintenance Bar APC"; - pixel_x = 1; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"rmR" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/engine/engineering) "rmX" = ( /obj/structure/table, /obj/item/reagent_containers/food/drinks/beer, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"rrQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/space) -"rth" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"rtI" = ( -/turf/open/floor/plasteel/purple/side, -/area/crew_quarters/cryopod) -"rwa" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) -"rzC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) +"rBq" = ( +/obj/item/clothing/head/kitty, +/obj/item/clothing/under/maid, +/obj/item/clothing/mask/muzzle, +/turf/open/floor/plating, +/area/maintenance/bar) "rKP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /turf/open/floor/plating, /area/construction) -"rQi" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/hallway/primary/fore) -"rVy" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"rXD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"rYO" = ( -/turf/closed/wall, -/area/maintenance/bar) -"rZN" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, +"rMN" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/semen, +/turf/open/floor/plating, /area/maintenance/bar) "saK" = ( /obj/structure/closet/crate, @@ -53600,31 +53858,6 @@ /obj/item/gun/energy/laser/practice, /turf/open/floor/plasteel/white, /area/science/circuit) -"sfz" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Engine Containment Port Aft"; - dir = 1; - network = list("engine") - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"sfS" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"siw" = ( -/obj/structure/table/glass, -/obj/item/paper_bin, -/obj/item/pen/blue, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/crew_quarters/cryopod) "slk" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -53637,79 +53870,22 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"soh" = ( -/turf/open/floor/plasteel/showroomfloor, -/area/space) -"svF" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Brig Control"; - req_access_txt = "3" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/brig) -"swV" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access = null; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/engine/engineering) "sxs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table, /obj/item/shovel/spade, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"sxZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 6 +"sAM" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken6" }, -/area/security/brig) -"sCb" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" +/area/maintenance/bar) +"sEt" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken7" }, -/obj/machinery/door/window/southleft{ - base_state = "right"; - icon_state = "right"; - name = "Brig Desk"; - req_access_txt = "1" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"sHb" = ( -/turf/closed/wall/r_wall, -/area/space) -"sHe" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 25 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"sIS" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/warden) -"sLb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating/airless, -/area/space) +/area/maintenance/bar) "sLv" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -53718,9 +53894,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"sOa" = ( -/turf/open/floor/plating/airless, -/area/engine/engineering) "sOs" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -53728,43 +53901,26 @@ /obj/machinery/door/airlock/maintenance/abandoned, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"sPd" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/brig) -"sQG" = ( -/obj/machinery/camera/motion{ - c_tag = "Non-Lethal Armory Motion Sensor"; - dir = 4 - }, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"sRl" = ( -/obj/structure/table/wood, +"sQX" = ( +/turf/open/floor/plating, +/area/space) +"sRT" = ( +/obj/machinery/vending/cola/random, /turf/open/floor/wood, /area/maintenance/bar) -"sSO" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) "sSW" = ( /obj/structure/chair/office/light, /turf/open/floor/plasteel/white, /area/science/circuit) -"sTB" = ( -/turf/open/floor/plasteel/red/side{ - dir = 10 +"sWR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/area/security/brig) +/obj/machinery/computer/bounty{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "sXy" = ( /obj/machinery/door/airlock/external{ name = "Security External Airlock"; @@ -53775,51 +53931,47 @@ }, /turf/open/floor/plating, /area/security/main) +"sXA" = ( +/obj/machinery/vending/boozeomat/all_access, +/turf/closed/wall, +/area/maintenance/bar) "tal" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/hallway/secondary/service) -"tdg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/brig) -"tgb" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"tDm" = ( -/obj/structure/table/wood, +"tkU" = ( /turf/open/floor/wood{ icon_state = "wood-broken5" }, /area/maintenance/bar) -"tII" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +"tqg" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/cryopod{ + icon_state = "cryopod-open"; dir = 1 }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"trb" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"tur" = ( +/obj/item/restraints/handcuffs/fake, +/turf/open/floor/plating, +/area/maintenance/bar) +"tyO" = ( +/obj/item/clothing/under/color/grey, +/turf/open/floor/plating, +/area/maintenance/bar) "tMl" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"tNR" = ( -/obj/structure/sign/poster/random{ - pixel_x = -32 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) "tOq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -53827,31 +53979,61 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) -"tPI" = ( -/obj/structure/table/wood/poker, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/storage/pill_bottle/dice, +"tPT" = ( +/obj/machinery/chem_dispenser/drinks/beer, +/obj/structure/table/wood, /turf/open/floor/wood, /area/maintenance/bar) -"tRB" = ( +"tRF" = ( /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/turf/open/floor/noslip, -/area/crew_quarters/cryopod) +/turf/open/floor/wood, +/area/maintenance/bar) "tXL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"uaw" = ( +/obj/machinery/power/apc{ + areastring = "/area/storage/art"; + dir = 1; + name = "Maint bar"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"udp" = ( +/obj/item/crowbar/large, +/obj/structure/rack, +/obj/item/flashlight, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"uhH" = ( +/obj/item/wrench, +/obj/item/weldingtool, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/structure/rack, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"ujF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/cryopod{ + icon_state = "cryopod-open"; + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "uoB" = ( /obj/structure/table/reinforced, /obj/item/multitool, @@ -53862,84 +54044,26 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"uqz" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) -"uuU" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/shield/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/shield/riot, -/obj/item/shield/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) -"uCa" = ( -/obj/structure/chair/stool, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -35 +"usO" = ( +/obj/machinery/vending/snack/random, +/obj/machinery/light/small{ + dir = 4 }, /turf/open/floor/wood, /area/maintenance/bar) -"uCz" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken6" +"uuG" = ( +/obj/structure/cable{ + icon_state = "4-8" }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"uvZ" = ( +/obj/structure/mineral_door/wood, +/turf/open/floor/wood, /area/maintenance/bar) -"uJC" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) "uNu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53971,15 +54095,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"uXp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) "vbD" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ @@ -53991,30 +54106,14 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) -"vnJ" = ( -/obj/machinery/vending/games{ - name = "\improper Good 'Clean' Fun" +"vjm" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/rag, +/obj/machinery/light/small{ + dir = 1 }, /turf/open/floor/wood, /area/maintenance/bar) -"vob" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"vrL" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/engine/engineering) -"vvD" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "vxh" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -54029,8 +54128,15 @@ dir = 8; pixel_x = -24 }, +/obj/item/stock_parts/cell/high, /turf/open/floor/plasteel/white, /area/science/circuit) +"vzO" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/maintenance/bar) "vCb" = ( /obj/machinery/rnd/production/techfab/department/service, /turf/open/floor/plasteel/hydrofloor, @@ -54039,72 +54145,17 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, /area/science/circuit) -"vDk" = ( -/obj/machinery/flasher{ - id = "brigentry"; - pixel_y = -28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"vEf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"vEr" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"vHG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"vMr" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) "vPE" = ( /obj/machinery/light{ dir = 4 }, -/obj/machinery/libraryscanner, /turf/open/floor/plasteel/white, /area/science/circuit) -"vSg" = ( -/turf/open/floor/wood, -/area/maintenance/bar) -"weO" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks, -/turf/open/floor/wood, -/area/maintenance/bar) -"whD" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"wjY" = ( -/obj/effect/spawner/structure/window/reinforced, +"wfR" = ( +/obj/item/electropack/shockcollar, +/obj/item/assembly/signaler, /turf/open/floor/plating, -/area/space/nearstation) +/area/maintenance/bar) "wkN" = ( /turf/closed/wall, /area/science/circuit) @@ -54122,13 +54173,6 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) -"wpT" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "wrp" = ( /obj/machinery/light{ dir = 8 @@ -54141,9 +54185,7 @@ "wvX" = ( /obj/structure/table/reinforced, /obj/machinery/light, -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, -/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/ten, /turf/open/floor/plasteel/white, /area/science/circuit) "wBd" = ( @@ -54152,62 +54194,23 @@ }, /turf/closed/wall, /area/hallway/secondary/service) -"wCj" = ( -/obj/item/lighter/greyscale, -/obj/effect/decal/cleanable/semen{ - desc = "Blech."; - name = "dried semen" - }, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/bar) "wHz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"wJD" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "lobbyairlock"; - name = "Security Lobby"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"wUX" = ( -/obj/structure/table/wood/poker, -/obj/item/coin/iron, -/turf/open/floor/wood, -/area/maintenance/bar) "wUY" = ( /obj/structure/table, /obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"wWN" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"wXT" = ( -/obj/structure/chair/stool, +"xgF" = ( +/obj/structure/chair/stool/bar, /turf/open/floor/wood{ - icon_state = "wood-broken" + icon_state = "wood-broken5" }, /area/maintenance/bar) -"wZS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/space) "xhV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -54228,36 +54231,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/service) -"xjt" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood, -/area/maintenance/bar) -"xte" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"xvH" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/wood, -/area/maintenance/bar) -"xxh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/bar) -"xCS" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/eastright{ - name = "Brig Desk"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) "xEu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -54269,60 +54242,12 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"xMc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"xOe" = ( -/obj/item/shard, -/obj/item/wirecutters, -/obj/item/wallframe/camera, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/bar) -"xWy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"ycr" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/engine/engineering) "ycu" = ( /obj/structure/cable{ icon_state = "2-4" }, /turf/open/floor/plasteel, /area/science/circuit) -"yeG" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"ylH" = ( -/obj/effect/landmark/start/station_engineer, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) (1,1,1) = {" aaa @@ -65472,7 +65397,7 @@ apN apN apN apN -apN +lCi apN apN apN @@ -71965,7 +71890,7 @@ aoV bVz aaf aaf -aoV +sQX aaa aaS aaf @@ -73756,10 +73681,10 @@ aaa aaa aaa bCq -bPS -aad -bPS -bPS +bHE +bJP +bHE +bJP bCq cbk bLv @@ -74012,11 +73937,11 @@ aaa aaa aaa aaa -bLv -bPR -bRc -bSo -bTs +bCq +bHE +bHE +bHE +bHE bCq bVy bLv @@ -74270,10 +74195,10 @@ aaa aaa aaa bCq -bPS -bRf -bSo -bTu +bHE +bPW +bHE +bHE bCq bVB bHE @@ -74526,11 +74451,11 @@ aaa aaa aaa aaa -bLv -bPT -bRe +bCq +bHE +bHE bSo -bTt +bHE bCq bVA bWw @@ -74787,7 +74712,7 @@ bCq bPV bCq bCq -bTw +cTF bCq bVD bWy @@ -75044,7 +74969,7 @@ bCq bPU bHE bSp -bTv +bHE bCq bVC bWx @@ -75301,7 +75226,7 @@ bCq bPW bCq bCq -bTy +cOw bCq bVF bWA @@ -75558,7 +75483,7 @@ bCq bHE bHE bSq -bTx +cdb bCq bVE bWz @@ -75815,20 +75740,20 @@ bCq bPY cOw bCq -rYO -rYO -rYO -rYO -rYO -hHu -rYO -rYO -rYO -rYO -rYO -rYO -rYO -rYO +bCq +bCq +bCq +bCq +bYy +bCq +bCq +bCq +bCq +bCq +bCq +bCq +bCq +bCq bUs bLv aaa @@ -76072,20 +75997,20 @@ bCq bPX bRg bRg -rYO -vSg +bCq +bHE bVG -lWf -jZP -vSg -xjt -rYO -vSg -tNR -bVG -vSg -dTy -rYO +bHE +bHE +bCq +tPT +tRF +mrR +dKP +odx +rBq +tur +bCq bUs bLv aaa @@ -76329,20 +76254,20 @@ bLv bQa bHE bHE -rYO -hsU -vHG -iWM -xte -kOO -xte -ifj -xte -xte -vEf -jrX -yeG -rYO +bCq +bHE +bCq +bCq +bCq +sXA +mPE +kyF +sAM +imH +evR +evR +rMN +bCq bUs bLv aaf @@ -76586,20 +76511,20 @@ bLv bPZ bHE bHE -nZe -noe -sfS -jbT -pLx -hcV -iWK -uXp -iWK -mES -iWy -cCa -vSg -rYO +cTF +bHE +bCq +iiW +iiW +iiW +iiW +iiW +dfL +dKP +mqZ +tyO +wfR +bCq bUs bLv aaa @@ -76843,20 +76768,20 @@ bLv bHE bHE bSs -rYO -qne -nok -tDm -sRl -nok -vSg -mOS -uCz -cCa -hNR -gVz -wXT -rYO +bCq +bHE +bCq +uvZ +dKP +vjm +bcU +bcU +bcU +dKP +dKP +dKP +dKP +bCq bUs bLv aaa @@ -77079,7 +77004,7 @@ bnG bnz bpA bbR -bkM +sWR jlm bud eyM @@ -77100,20 +77025,20 @@ bCq bHE bRh bLu -rYO -rXD -pye -heG -pjh -dMY -rkz -rYO -vSg -whD -hNR -gVz -uCa -rYO +bCq +bHE +bCq +iiW +iiW +dKV +xgF +dKV +dKV +iiW +gMl +gMl +iiW +bLv bUs bLv aaf @@ -77357,20 +77282,20 @@ bCq bOK bCq bCq -rYO -jOb -xxh -mjp -weO -dUz -rYO -rYO -vSg -cCa -tPI -wUX -cCa -rYO +bCq +bUt +bCq +uaw +tkU +iiW +lnu +cjn +iiW +cxo +bcU +bcU +vzO +bLv bUs bLv aaa @@ -77534,20 +77459,20 @@ abc aea aeH aft -cXd -ktN -sSO -rVy abc -pzB -pzB +aaa +aaa +aaa +aaa +aaa +aaa aaa aiU aln aiU aaa aiU -aln +anN aiU aaa aaa @@ -77615,19 +77540,19 @@ bHE bLv aaa bLv -xMc -xxh -rYO -rYO -rYO -rYO -vSg -vSg -vSg -kjK -cCa -gMI -rYO +uuG +jJF +gBo +sEt +cxo +bcU +bcU +jqv +cxo +bcU +mpI +vzO +bLv bUs bLv aaa @@ -77655,8 +77580,8 @@ aaa aaa aaa aaa -aaa -aaa +aaT +aaT aaa aaa aaa @@ -77793,18 +77718,18 @@ aeJ afw abc abc -fJG -mQL -abc +aaf +aaa +aaf aaf aaf aaf aiU -jnp +alp aiU aaa aiU -jnp +alp aiU aaf aaf @@ -77872,19 +77797,19 @@ bHE bLv aaf bLv -xMc -xxh -kRe -lnm -wCj -kXH -vSg -uCz -jrX -oLO -vSg -vSg -rYO +bUs +bCq +iiW +iiW +fxa +bcU +bcU +vzO +iiW +oKh +oKh +iiW +bLv bUs bLv aaf @@ -77900,21 +77825,21 @@ cjJ aaa aaa crn +aaf +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaT aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aaf +ctv +aaT +aaT aaa aaa aaa @@ -78050,19 +77975,19 @@ aeI afv agf abc -kdx -lNf -abc +aaf +aaa +aaa aiT aiT aiV -aiU +akG cxJ aiU -aiT -aiU -cxJ +amK aiU +cxP +aoq aiV aiT aiT @@ -78129,19 +78054,19 @@ bLv bCq aaa bLv -xMc -xxh -xOe -hPY -cZO -rYO -xvH -mtP -iXO -rZN -vnJ -hpF -rYO +bUs +bCq +sRT +usO +iiW +oKh +oKh +iiW +iiW +iiW +izv +nfm +bCq bUs bCq aaa @@ -78157,21 +78082,21 @@ cjJ aaa aaa crn +aaf +aaT +ctv +ctv +ctv +ctv +ctv +ctv +ctv +aaT aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aaf +ctv +ctv +aaT aaa aaa aaa @@ -78307,10 +78232,10 @@ aeL afy agh abc -nfW -nfW -nfW -aiV +aaf +aaa +aaf +aiT ajs akb akI @@ -78387,17 +78312,17 @@ aaa aaa bTB bUv -eeA -dpp -dpp -dpp -dpp -dpp -dpp -dpp -dpp -dpp -dpp +bES +bES +bES +bES +bGp +bGp +bGp +bGp +bES +bES +bES car bUs bCq @@ -78414,20 +78339,20 @@ cjJ aaf aaf cig -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aaf +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaT +aaf +aaf +aaf +aaf aaa aaa aaa @@ -78564,10 +78489,10 @@ aeK afx agg abc -nfW -iPE -nfW -aiV +aaf +aaa +aaa +aiU ajr aka akH @@ -78672,17 +78597,17 @@ ccw ccw ccw aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aaf aaa aaa aaa @@ -78821,10 +78746,10 @@ aeN afA afA afA -nfW -nfW -nfW -aiV +aaf +aaa +aaa +aiU aju akd akK @@ -78929,19 +78854,19 @@ cqw cqO crp aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aaT +aaT +aaT aaa aaa aaa @@ -79185,20 +79110,20 @@ cgR cgR cqN cro +cEl +cEE +cEl +cFm +csx +cFm +cFm +csx +csv aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aaT +ctv +aaT aaa aaa aaa @@ -79442,20 +79367,20 @@ ciN cji cDZ crr -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +crJ +crT +crJ +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +ctv +aaT aaa aaa aaa @@ -79699,20 +79624,20 @@ cgR cDB cqP crq +crZ +crT +crZ +cFo +css +cFm +cFm +css +csv aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aaT +ctv +aaT aaa aaa aaa @@ -79835,7 +79760,7 @@ aak aap aay aaD -aau +aat aat aat aat @@ -79956,21 +79881,21 @@ cgR cqx cqR crp -gXs -gXs -gXs -gXs -gXs -gXs -gXs -gXs -gXs -gXs -gXs -gXs -gXs -gXs -pzB +crJ +crT +crJ +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +ctv +aaT +aaa aaa aaa aaa @@ -80214,24 +80139,24 @@ cqz cqQ ccw crH +crT +crZ +cFo +css +cFm +cFm +css +csv aaa aaa -sHb -sHb -sHb +aaT +ctv +aaT aaa aaa aaa aaa aaa -sHb -sHb -sHb -pzB -pzB -aaa -aaa -aaa aaa aaa aaa @@ -80470,24 +80395,24 @@ clJ cig cig ccw -crH -crH -sHb -sHb -sHb -sHb -sHb +crJ +crT +crJ +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +ctv +aaT +aaa aaa aaa aaa -sHb -sHb -sHb -sHb -sHb -pzB -pzB -pzB aaa aaa aaa @@ -80627,11 +80552,11 @@ agj ajz aki akM -aly +alv amf amQ -aiX anw +anz aov cCi arT @@ -80721,30 +80646,30 @@ ccw ccw ccw cnZ -pNk -cpt -cpt +coH cpt +cpZ +cig cqS ccw -ccw -ccw -ccw -ccw -ccw -ccw -ccw -ccw -cpy -ccw -ccw -ccw -ccw -ccw -ccw -ccw -sHb -pzB +crH +crT +crZ +cFo +css +cFm +cFm +css +csv +aaa +aaa +aaT +ctv +aaT +aaa +aaa +aaf +aaa aaa aaa aaa @@ -80885,10 +80810,10 @@ auj akl akO alx -tII -amg -aiX +alx +amR anw +anz aox cCi cCi @@ -80980,28 +80905,28 @@ cnt cob coL cDo -ylH cgR +cqA cqT -ccw -hQe -ccw -wpT -fBa -vEr -fBa -qRE -ccw -ccw -ccw -cGE -fBa -pRH -dPI -dPI -ccw -sHb -cSI +csg +crJ +crU +csb +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +aaT +aaT +gXs +aaf +aaf +aaf aaa aaa aaa @@ -81140,11 +81065,11 @@ aid agj aiZ akk -akQ -agj -agj -agj -aiX +akN +alw +amg +amR +anw anR aow apg @@ -81238,27 +81163,27 @@ cgw coK cpu cMm -ckH -qCO -swV +ccw +ccw +ccw crK cEK csa -sOa -fBP -sOa +csj +csa +csa cGr -vob -kbh -vob -cNt -sOa -fBP -sOa -sOa -ccw -sHb -pzB +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa aaa aaa aaa @@ -81395,14 +81320,14 @@ ahP ahP aiF agj -ajD -akm -mTp -aly -lyP -amQ -aiX -anw +aja +ajG +akQ +agj +agj +amS +anx +anz aov aph aph @@ -81491,31 +81416,31 @@ ckG clJ cmF cgR -cnZ +cgI chF ciO -ylH -cgR -cqT -ccw -cig -ccw +cqc +cqc +cqc +cEd +cEr +cEL cFb -sOa +cFu cFI -sOa -sOa -sOa -sOa -sOa -sOa -sOa -cFI -sOa -sfz +cGd +cGs +cGr ccw -sHb -hSf +ccw +ccw +ccw +ccw +ccw +aaa +eRz +aaT +eRz aaa aaa aaa @@ -81631,7 +81556,7 @@ aaa aag aaf aai -sHe +aau aaA aaG aaK @@ -81652,14 +81577,14 @@ ahD aiw aiO agj -aja -akl +ajD +akm akP -alx -tII -ami -aiX +aly +amh +amR anw +anz aov aph aob @@ -81748,31 +81673,31 @@ cTa ceZ clQ cgR -cnZ -pNk -cgR -cgR -cgR -cqT -kTZ +cgx +coM +cpv +cqb +cqb +cqb +cqb cEs -sOa -fZs +cqb +cqb cAp -tgb +cqb cAo -tgb -cAo -tgb -cAo -tgb -lCe -sOa -sOa -sOa +cGt +cgx +jMY +csd +cHa +csd +uhH ccw -sHb -fGu +aaa +aaT +ctv +aaT aaa aaa aaa @@ -81910,13 +81835,13 @@ agP agP aiz ajg -hrd -akQ -agj -agj -agj -aiX +akl +akR +alx +alx +amR anw +anz aov aph aoc @@ -82006,30 +81931,30 @@ cTd ckF ckF cgK -pNk -cgR -cgR -cgR -cqT -kTZ +cDg +cDp +cqe +cqB +cqB +cEe csP -sOa -sOa +cAl +cFc cAq cFJ cSH -cFJ -cSH -cFJ -cSH -cFJ -cSH -cFJ -sOa -sOa +cGu +cGH +fsQ +fsQ +cGR +csd +csd ccw -sHb -fGu +aaa +aaT +ctv +aaT aaa aaa aaa @@ -82148,7 +82073,7 @@ aaa aaa aaf aaf -dwQ +aaa aaf aai abi @@ -82170,10 +82095,10 @@ ajb ajF akN alw -hkC -amQ -aiX +ami +amR anw +anz aov api ata @@ -82266,27 +82191,27 @@ cgJ chG cpx cqd -cjc +cDC cqU -kTZ -csP -sOa -fZs -cAq +cEf +cEt +cEM +csA +cEg cFK -aoV -aoV -cFK -pzB -aaa -aoV -aoV -cFK -cFJ -sOa +cGe +cGv +cGI +cGS +cHb +cHg +cHn +oDF ccw -sHb -fGu +aaf +aaT +ctv +aaT aaf aaa aaa @@ -82405,8 +82330,8 @@ aaf aaf aaf aaf -aaS aaf +aaR aaZ aaZ aaZ @@ -82421,16 +82346,16 @@ agn agR agn agR -sIS -aiX -kUh -akv -gqU -xWy -aww -amk -aiX -rQi +agn +ajc +ajI +ako +akQ +agj +agj +amS +any +anz aov aph aqb @@ -82519,31 +82444,31 @@ cig cig cTf cgR -cnZ +ccw cDh cpy +cDv +cDD +cqU +cMD +cEu +cEz +cEz +cMD +cFL +cGf +kQq +cMm +ciZ +cHc +cAu +cAu +ciZ ccw -fXl -ccw -ccw -cqY -cqY -cqY -cAq -aoV -aoV -aoV -pzB -cSI aaa -aoV -aoV -aoV -cFJ -sOa -ccw -sHb -fGu +aaT +ctv +aaT aaa aaa aaa @@ -82662,32 +82587,32 @@ aaa aaa aaa aaf -dwQ +aaa +aaf +aaf +aaT aaf -dKf -juA -sQG -jAM aaZ +abm cpg acv adi -hyb +adi aaZ aeW -fVA +agQ ahv ahQ aiI aiH -ajI -hZr -akQ -agj -agj -agj -aiX +ajB +akm +akP +aly +amj +amR anw +anz aov aph aph @@ -82776,31 +82701,31 @@ ckI clJ cmL cBO -cnZ -cDh ccw +chV +cpx cqf cqD -kso +cMD crs cEv -ycr -cqY -cAq -aoV -aoV -aaa -aaa -pzB -aaa -aaa -aoV -aoV -cFJ -sOa +cEv +cFe +cMD +cFM +czE +kQq ccw -sHb -fGu +cGT +csd +csd +csd +csd +ccw +aaf +aaT +ctv +aaT aaa aaa aaa @@ -82919,32 +82844,32 @@ aaa aaa aaa aaf -dwQ +aaa aaf -dKf -juA -gcN -jAM +aaf +aaT +aaa aaZ +abH acl -cxA +ajC acL -exQ +adi aaZ agp agT ahx ahS aiK -mDn -kUh -akm +ajc +ajI +akl akT -aly -ekX -amQ -aiX +aww +alx +amR anw +anz aov apk anw @@ -83033,31 +82958,31 @@ ckK clJ cmL cgR -cnZ +cgL chX -nzk +cpx cqh cqF cra crI cEw -rmR -cqY -cAq -aaa -aaa -aaa -rrQ +cEw +cEw +cFw +cFN +csH +csR +cMm cGU -eeO -aaa -pzB -cFK -cFJ -sOa +csd +csd +cHo +csd ccw -sHb -fGu +aaa +aaT +ctv +aaT aaa aaa aae @@ -83176,31 +83101,31 @@ aaa aaa aaa aaf -dwQ +aaa aaf -dKf -juA -wWN -iCL +aaf +abY +aaa aaZ +abn ack adk adK cqG aeX -agt +ago agS agQ -agt +ahR aiJ -akV +ajc ajI -akl +akk akS -alx -tII -amp -aiX +alw +amk +amR +anw anS aoy apj @@ -83290,31 +83215,31 @@ ckI clJ cmL cnv -cnZ -lSn -ccw +cMm +chX +cpx cqg cqE cqZ crt cMH cAm -fVS +cMH cMN -pzB +cFO cSI cSI -fvg +cMm cGV -sLb -cSI -cSI -pzB -cFJ -jcS +csd +cGV +noK +csd ccw -sHb -fGu +aaa +aaT +ctv +aaT aaa aaa aaa @@ -83433,14 +83358,14 @@ aaa aaa aaa aaf -dwQ +aaa aaf -dKf -juA -gcN -ejP +aaf +aaT +aaa aaZ -oEn +abJ +ack acM adQ cwM @@ -83450,15 +83375,15 @@ agU ahy ahX aiL -gKO -tdg +ajc +ajI akq akQ agj agj -agj -aiX -anA +amS +anx +anz aoz apm aqd @@ -83547,31 +83472,31 @@ cfb ccw cmN cgR -cnZ -lSn -fXl +cgL +chX +cpx cqj cSG crb cru cEx -vrL -cqY -cAq -cFK -pzB -aaa -wZS -rzC -nzm -aaa -aaa -aaa -cFJ -sOa +cEx +cEx +cAP +cFP +csI +cAt +cMm +csd +csd +csd +cHp +csd ccw -sHb -fGu +aaf +aaT +ctv +aaT aaa aaa aaa @@ -83690,14 +83615,14 @@ aaa aaa aaa aaf -dwQ +aaa aaf -dKf -nvz -htj -ejP +aaf +aaT +aaa aaZ -pvY +abI +ack coS aet cxA @@ -83706,17 +83631,17 @@ agt agt ahz aie -agt -svF -vMr +aiN +ajc +ajI akp akU alz aml amT -aiX -rez -wJD +anw +anz +aoz apl aqc aqc @@ -83804,31 +83729,31 @@ cfb clM cfz cgR -cnZ -lSn ccw +cii +cpx cqi cMD cAP -cMD -cMD +crv cEy -cqY -cAq -aoV -aoV -aaa -aaa -cSI -aaa -aaa -aoV -aoV -cFJ -sOa +cEy +cFh +cMD +cFM +czE +kQq ccw -sHb -fGu +cGT +csd +csd +csd +csd +ccw +aaf +aaT +ctv +aaT aaa aaa aaa @@ -83947,14 +83872,14 @@ aaa aaa aaa aaf -dwQ +aaa aaf -dKf -nDS -jUO -iaO +aaf +abY +aaa +aaZ abQ -mZB +ack adj arc blT @@ -83964,16 +83889,16 @@ agV cxk aig aiM -aiX -kBh -qLG -pGb +ajc +ajI +akp +akV alB amn amV -sCb -aiG -flZ +anw +anz +aoz aod aqf ahT @@ -83983,11 +83908,11 @@ ahT ahT awn axF -hrv -hrv -hrv -hrv -ilR +anF +anF +anF +anF +anF anF anF aoa @@ -84061,31 +83986,31 @@ cfb cfa cje cgR -cnZ -lSn -cpy ccw -fXl +cDi +cDr +cDw +cDE +cEa +cMD +cEz +cEz +cEz +cMD +cFR +cSJ +kQq +cMm +ciZ +cHd +cHj +cHd +ciZ ccw -ccw -cqY -cqY -cqY -cAq -aoV -aoV aaa -aaa -cSI -pzB -aaa -aoV -aoV -cFJ -sOa -ccw -sHb -fGu +aaT +ctv +aaT aaa aaa aaa @@ -84204,33 +84129,33 @@ aaa aaa aaa aaf -dwQ +aaa aaf -dKf -uqz -kwo -mOo +aaf +abY +aaa +aaZ abN -rth -acF +ack +bkA acF aes avB amN agt -ahB +awN aHp -agn -aiX -oFD -ksW -amS +aIF +ajc +ajI +akp +akQ alA -xCS amm -fev -anT +amU +anw anT +aoA apn aqe arf @@ -84242,10 +84167,10 @@ arf arf arf arf -rwa -rwa -rwa -rwa +arf +arf +arf +arf anF ahn aJn @@ -84318,31 +84243,31 @@ ckL cmF cje cgR -cnZ -cjS +cMm +chX cpD cDw cDF cEa -kTZ -csP -sOa -fZs -cAq -cFK -aoV -aaa -aaa -pzB -cFK -aoV -aoV -cFK -cFJ -sOa +cEg +cEA +cET +cFj +cEf +cFS +cGg +mBv +cGI +cGS +cHe +cHe +cHr +oDF ccw -sHb -fGu +aaf +aaT +ctv +aaT aaf aaa aaa @@ -84461,12 +84386,12 @@ aaa aaa aaa aaf -dwQ +aaa aaf -dKf -uuU -enX -jsN +aaf +aaT +aaf +aaZ aci acm cpA @@ -84482,11 +84407,11 @@ aje ajJ akr akX -aje -oUp -oUp -oUp -oUp +alC +alC +amX +anz +anz aoB aod aqe @@ -84499,10 +84424,10 @@ atf arf aqa atf -rwa -tRB -kcH -rwa +arf +tqg +ujF +arf anF ahn aaa @@ -84575,31 +84500,31 @@ ceq clQ cje cgR -cnZ -cjS -cgR -cgR -cgR -cqT -kTZ -csP -sOa -sOa -cAq -cFJ +cMm +cDj +cDs +cql +cDG +cDG +cEh +cEB +cEU +cFk +cAs +cFT cSK -cFJ -cSK -cFJ -cSK -cFJ -cSK -cFJ -sOa -sOa +cGx +cGK +nzh +nzh +cGY +csd +csd ccw -sHb -fGu +aaf +aaT +ctv +aaT aaa aaa aaa @@ -84718,12 +84643,12 @@ aaa aaa aaf aaf -ctv -ctv -sHb +aaf +aaf +aaa adR -qyv -avB +abo +aaZ aaZ aaZ acT @@ -84736,15 +84661,15 @@ ahE aii agn ajd -ajb +ajI ahY -akX -ajc -alC -oUp -oUp -leL -vDk +akW +aiG +amo +amW +anz +anz +aoz aod aqe arf @@ -84756,10 +84681,10 @@ ath arf apY ath -rwa -faG -rtI -rwa +arf +fvY +ath +arf anF ahn aaa @@ -84832,31 +84757,31 @@ ckO ckH cja cny -cnZ -cjS +ccw +cip cnx cDx cqb -cqT -kTZ -cEs -sOa -fZs +cqb +cqb +cEC +cqb +cqb cAr -tgb +cqb cGh -tgb -cGh -tgb -cGh -tgb -gUa -sOa -sOa -sOa +cGC +cey +ijc +csd +cEk +csd +udp ccw -sHb -fGu +aaf +aaT +ctv +aaT aaa aaa aaa @@ -84975,32 +84900,32 @@ aaa aaa aaa aaa -atS -ebz -aEs -pyu -abO -abO +aaf +aaf +aaa +abp +abP +aco acO -abO +abl abO abO afc -abo +afQ agw agY ahA ahZ adR aiQ -kUh +ajI akt -oFM -nlM -ajc -flZ -aiG -heb +akQ +agj +agj +aiX +anB +anz aoD aod aqe @@ -85013,10 +84938,10 @@ ath arf ayV ath -rwa +arf aCd -rtI -rwa +qIw +arf anF ahn aJw @@ -85089,31 +85014,31 @@ cfb clR cgR cgR -cnZ -cjS +cMm +cir cDt cDy cqC -cqT -ccw -ccw -ccw crc -sOa +cEi +cED +crc +crc +cFy cBR -sOa -sOa -sOa -sOa -sOa -sOa -sOa -cBR -sOa -jTA +cGi +cGD +cGL ccw -sHb -fGu +ccw +ccw +ccw +ccw +ccw +aaa +aaT +aaT +aaT aaa aaa aaa @@ -85232,10 +85157,10 @@ aaa aaa aaa aaa -nip -exs -soh -abO +aaa +aaf +aaa +abo abO abO abO @@ -85253,11 +85178,11 @@ ajf ajK aks akY -sPd -ajc -sTB -alC -heb +alx +amp +aiX +anA +anz aoC aod aqe @@ -85270,10 +85195,10 @@ awo arf asd aAb -rwa -siw -rtI -rwa +arf +asd +aDK +arf aoa ahn aJv @@ -85350,27 +85275,27 @@ cDe cDk coc cqa -hYu -qCO -swV -czF -cEK -csd -sOa -cFU -sOa -cGE -vob -cGZ -vob -qRE -sOa -cFU -sOa -sOa +cig ccw -sHb -pzB +ccw +czF +csd +csd +cFz +cFU +cGj +cGE +cGM +cGZ +aag +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa aaa aaa aaa @@ -85489,15 +85414,15 @@ aaa aaa aaa aaa -ohN -exs -soh -klO -klO -klO -klO -klO +aaa +aaf +aaa +abp abO +acq +acq +acq +acq aew afe afS @@ -85508,13 +85433,13 @@ aia aiP aiR ajB -lUX -aiX +akv +ala akz alf -iei -iei -sxZ +aiX +anA +anz aoF apo aqh @@ -85606,28 +85531,28 @@ cgU cgU cis cjN -cgR -cgR -cqT -ccw +cDz +cDH +cMm +csd crM -ccw crV -fBa -kbA -fBa -cNt +crV +cFA +csd +cGk ccw -ccw -ccw -cGr -fBa -vvD -dPI -dPI -ccw -sHb -cSI +aag +aag +aag +aaf +aaf +aaf +aaf +gXs +aaf +aaf +aaf aaf aaa aaa @@ -85746,10 +85671,10 @@ aaa aaa aaa aaf -wjY -exs -exs -abO +aaf +aaf +aaf +abo abO acp acP @@ -85766,12 +85691,12 @@ adR aiG ajL aku -aiX +akZ alE amq -iob -gjf -uJC +aiX +anA +anz aoE aod aqg @@ -85859,32 +85784,32 @@ ccw cet cfd cfB -cfB -cfB +cfI +cgQ cjS cjN +cqm cgR -cgR -cqT +crd +cEk +crL +cEW +cse +cse +csu +cGl ccw -ccw -ccw -ccw -ccw -ccw -ccw -ccw -ccw -cpy -ccw -ccw -ccw -ccw -ccw -ccw -jbA -sHb -pzB +aaa +aaa +aaf +aaa +aaf +ctv +aaT +aaa +aaa +aaf +aaa aaa aaa aaa @@ -86003,15 +85928,15 @@ aaa aaa aaa aaa -ohN -kNF -hse -gMt +aaa +aaa +aaf +abp abR -gMt -gMt -gMt -abl +abP +abP +abP +abP abp abp abp @@ -86120,28 +86045,28 @@ ccw ccw cDl cjN -cgR -cgR -cgR -cqS +cjh +cDI ccw ccw ccw ccw ccw +cMm +cMm +cMm ccw -iex -crH -crH -crH -sHb -sHb -sHb -sHb -sHb +aaf +aaf +aaf +aaf +aaf +ctv +aaT +aaa +aaa +aaf aaa -cSI -pzB aaa aaa aaa @@ -86260,9 +86185,9 @@ aaa aaa aaf aaf -atS -atS -atS +aaf +aaf +aaf abq abq abq @@ -86378,7 +86303,7 @@ ccw cDm cjP ckF -ckF +cDJ ckF cpE cjR @@ -86391,13 +86316,13 @@ aaa aaa aaa aaa -crH -sHb -sHb -sHb -pzB -pzB -pzB +ctv +ctv +ctv +aaT +aaa +aaa +aaa aaa aaa aaa @@ -86620,7 +86545,7 @@ caE cbA ccy bOd -qyS +bOd bQu cfO cgW @@ -86642,17 +86567,17 @@ ccw crX cfK aag -pzB -pzB -pzB -pzB -pzB -pzB -gXs -gXs -gXs -gXs -pzB +aaa +aaa +aaa +aaa +aaa +aaa +aaT +aaT +aaT +aaT +aaa aaa aaa aae @@ -86865,7 +86790,7 @@ bIF bOZ bQp bRA -qyS +bOd bTO bUL bVU @@ -86892,7 +86817,7 @@ ccw cpa cjc cqo -ccw +cDL cjk cjm ccw @@ -86908,7 +86833,7 @@ aaa aaa aaa aaa -gXs +eRz aaa aaa aaa @@ -87149,7 +87074,7 @@ ccw ccw cpI ccw -ccw +cDL cjl cjQ cjV @@ -87406,7 +87331,7 @@ cig cpb ciZ cqp -cig +cDN cjT cgR crP @@ -87663,7 +87588,7 @@ cig cig czg cig -cig +cDN crh crA crR @@ -87920,7 +87845,7 @@ cig aaa afp aaa -cig +cDN cqY cqY cqY @@ -88079,7 +88004,7 @@ abp ajp ajU ajn -ajn +trb ajn amr ajp @@ -88153,7 +88078,7 @@ bRF bSM bTS bUQ -bWa +agd bUO bVZ bVZ @@ -88177,7 +88102,7 @@ cig aaa aaa aaa -cig +cDN aaa aaa aaa @@ -88410,8 +88335,8 @@ bRE bSJ bPe bOd -bOd -bOd +cCB +cCC bXT bXT bXT @@ -88434,7 +88359,7 @@ ccw aaa aaa aaa -ccw +cDL aaf aaa aaa @@ -88578,7 +88503,7 @@ aaa aaa aaa aaa -aag +acw abp abp adR @@ -88668,7 +88593,7 @@ bSM bTU bUS bUS -bUS +cCD bXU bUS bUS @@ -88691,7 +88616,7 @@ aaa aaa aaa aaa -aaf +cCQ aaf aaa aaa @@ -88925,7 +88850,7 @@ bSN bTT bUR bWb -bUR +cCE bTT bUR bZJ @@ -88948,7 +88873,7 @@ aaa aaa czN aaa -aaf +cCQ aaf aaa aaa @@ -89205,7 +89130,7 @@ aaa aaa aaa aaa -aaf +cCQ aaf aaa aaa @@ -89439,7 +89364,7 @@ bSP bPh bQy bRI -bQy +cCF bPh bQy bRI @@ -89462,7 +89387,7 @@ aaa aaa aaa aaa -aaf +cCQ aaf aaa aaa @@ -89696,16 +89621,16 @@ aaf bRK aaf bVv -aaf -bRK -aaf -bVv -aaf -bRK -aaf -bVv -aaf -aaf +cCG +cCH +cCI +cCJ +cCI +cCH +cCI +cCJ +cCI +cCP bLK chg bLK @@ -89719,7 +89644,7 @@ aoV aoV aoV aoV -aaf +cCQ aoV aaa aaa @@ -89962,7 +89887,7 @@ bPj bQA bPj bOh -aaf +cCQ bLK cyG bLK @@ -89976,7 +89901,7 @@ aoV aoV aoV aoV -aaf +cCQ aoV aaa aaa @@ -90145,14 +90070,14 @@ aaa aaa aaf arj -arj +clO asZ aua -aua +clO awB axY azh -arj +gsz arj aaf aaa @@ -90219,21 +90144,21 @@ cbI ccC cdD bOh -aaf +cCG cCS cCS -aaf -aaf -aaf -aaf -aaf -cCS -cCS -cCS -cCS -cCS -cCS -aaf +cCI +cCI +cCI +cCI +cCI +cCI +cCI +cCI +cCI +cCI +cCI +cDY aaf aaf aaf @@ -91446,7 +91371,7 @@ aGL aHM aJm aKz -aKR +mjr aND aJC aab @@ -100186,7 +100111,7 @@ aJT aLc aMX aFw -aPj +aFz aFz aRR aTe @@ -103056,7 +102981,7 @@ bOH dvO bQY vzp -bTo +hRa bUp mNi mRe @@ -104082,16 +104007,16 @@ bMB bNA cOe bSl -bRb +bUq flc vPE -bUq +bXs bVt dfh jSO jgm oUh -qpv +vPE jrE saK bSl diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index f36112effa..0540a2f1d8 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -204,6 +204,7 @@ roundstart_template = /datum/map_template/shuttle/escape_pod/default; width = 3 }, +/obj/structure/fans/tiny/invisible, /turf/open/space/basic, /area/space) "abv" = ( @@ -896,7 +897,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/airlock/engineering{ name = "Auxiliary Construction Storage"; - req_access_txt = "10;32;47;48" + req_one_access_txt = "10;32;47;48" }, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -4866,7 +4867,7 @@ /turf/open/floor/plasteel/grimy, /area/hallway/secondary/entry) "aqr" = ( -/obj/structure/closet/wardrobe/red, +/obj/machinery/vending/wardrobe/sec_wardrobe, /obj/machinery/newscaster{ pixel_x = -32 }, @@ -7545,18 +7546,15 @@ /turf/open/floor/plasteel/neutral, /area/janitor) "avA" = ( -/obj/vehicle/ridden/janicart, /obj/machinery/status_display{ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, -/obj/item/storage/bag/trash, -/obj/item/key/janitor, /obj/effect/turf_decal/bot, +/obj/machinery/vending/wardrobe/jani_wardrobe, /turf/open/floor/plasteel/neutral, /area/janitor) "avB" = ( -/obj/structure/closet/jcloset, /obj/machinery/power/apc{ dir = 1; name = "Custodial Closet APC"; @@ -7566,9 +7564,10 @@ /obj/structure/cable/white{ icon_state = "0-2" }, -/obj/item/clothing/under/maid, -/obj/item/clothing/shoes/laceup, /obj/effect/turf_decal/bot, +/obj/vehicle/ridden/janicart, +/obj/item/storage/bag/trash, +/obj/item/key/janitor, /turf/open/floor/plasteel/neutral, /area/janitor) "avC" = ( @@ -9054,11 +9053,9 @@ /turf/open/floor/plasteel/redblue, /area/maintenance/port/fore) "ayW" = ( -/obj/machinery/vending/autodrobe{ - req_access_txt = "0" - }, /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/autodrobe/all_access, /turf/open/floor/plasteel/redblue/redside{ dir = 8 }, @@ -10334,9 +10331,7 @@ /turf/open/floor/plasteel, /area/quartermaster/warehouse) "aBQ" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -11708,6 +11703,7 @@ pixel_y = 32 }, /obj/item/storage/box/beanbag, +/obj/item/gun/ballistic/revolver/doublebarrel, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) "aET" = ( @@ -12196,9 +12192,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/service) "aGb" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -12337,9 +12331,7 @@ id = "cargodeliver" }, /obj/effect/decal/cleanable/dirt, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /turf/open/floor/plating, /area/quartermaster/sorting) "aGo" = ( @@ -14484,14 +14476,6 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) "aKv" = ( -/obj/structure/table/wood, -/obj/item/gun/ballistic/revolver/doublebarrel, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/bar) -"aKw" = ( -/obj/structure/closet/gmcloset, /obj/item/wrench, /obj/item/stack/sheet/glass{ amount = 30 @@ -14502,8 +14486,15 @@ /obj/item/stack/cable_coil/random, /obj/item/stack/cable_coil/random, /obj/machinery/light, +/obj/structure/closet, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) +"aKw" = ( +/obj/machinery/vending/wardrobe/bar_wardrobe, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/bar) "aKx" = ( /obj/structure/table/wood, /obj/machinery/reagentgrinder{ @@ -14723,6 +14714,9 @@ icon_state = "0-8" }, /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/status_display{ + pixel_x = 32 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/security/prison) @@ -15287,10 +15281,6 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/cryopod, -/obj/machinery/computer/cryopod{ - pixel_y = 28 - }, /turf/open/floor/plasteel/red/corner{ dir = 1 }, @@ -15410,9 +15400,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_atmos{ pixel_y = 24 }, /turf/open/floor/engine, @@ -15969,10 +15957,7 @@ }, /area/security/execution/education) "aNO" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Turbine Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aNP" = ( @@ -16006,9 +15991,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aNR" = ( -/obj/machinery/igniter{ - id = "Incinerator" - }, +/obj/machinery/igniter/incinerator_atmos, /obj/structure/cable{ icon_state = "4-8" }, @@ -16020,14 +16003,7 @@ /area/maintenance/disposal/incinerator) "aNS" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Incinerator Exterior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /obj/structure/cable{ icon_state = "4-8" }, @@ -16042,23 +16018,14 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 2 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "aNU" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Incinerator Interior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, /obj/structure/cable{ icon_state = "4-8" }, @@ -16066,16 +16033,8 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; - pixel_y = 27; - req_access_txt = "12"; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ + pixel_y = 27 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -16744,24 +16703,17 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "aPA" = ( -/obj/machinery/button/ignition{ - id = "Incinerator"; +/obj/machinery/button/ignition/incinerator/atmos{ pixel_x = 8; pixel_y = -36 }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Turbine Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = -8; - pixel_y = -36; - req_access_txt = "12" + pixel_y = -36 }, -/obj/machinery/button/door{ - id = "auxincineratorvent"; - name = "Auxiliary Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = -8; - pixel_y = -24; - req_access_txt = "12" + pixel_y = -24 }, /obj/machinery/computer/turbine_computer{ dir = 1; @@ -17117,9 +17069,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/theatre) "aQi" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/decal/cleanable/dirt, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; @@ -17633,10 +17583,7 @@ /turf/open/floor/plating/airless, /area/maintenance/disposal/incinerator) "aRo" = ( -/obj/machinery/door/poddoor{ - id = "auxincineratorvent"; - name = "Incineration Chamber Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aRp" = ( @@ -18180,6 +18127,7 @@ /area/quartermaster/storage) "aSm" = ( /obj/structure/table/reinforced, +/obj/item/paper_bin, /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) "aSn" = ( @@ -19111,11 +19059,12 @@ }, /area/quartermaster/storage) "aUa" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) "aUb" = ( @@ -19271,9 +19220,6 @@ /turf/open/floor/plasteel/neutral, /area/quartermaster/qm) "aUs" = ( -/obj/machinery/computer/security/mining{ - dir = 8 - }, /obj/machinery/status_display{ pixel_x = 32 }, @@ -19282,6 +19228,9 @@ dir = 8; name = "cargo camera" }, +/obj/machinery/computer/security/qm{ + dir = 8 + }, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -20694,9 +20643,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aXf" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 4 @@ -20894,9 +20841,6 @@ /turf/open/floor/plasteel/neutral, /area/quartermaster/qm) "aXD" = ( -/obj/machinery/computer/security/mining{ - dir = 8 - }, /obj/machinery/requests_console{ department = "Quartermaster's Desk"; name = "Quartermaster RC"; @@ -20909,6 +20853,9 @@ /obj/machinery/light_switch{ pixel_x = 23 }, +/obj/machinery/computer/bounty{ + dir = 8 + }, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -21541,6 +21488,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, /turf/open/floor/plasteel/brown{ dir = 10 }, @@ -21564,11 +21515,7 @@ /turf/open/floor/plasteel/brown, /area/quartermaster/storage) "aYV" = ( -/obj/structure/closet/wardrobe/cargotech, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, +/obj/machinery/vending/wardrobe/cargo_wardrobe, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -21576,7 +21523,6 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aYW" = ( -/obj/structure/closet/wardrobe/cargotech, /obj/machinery/ai_status_display{ pixel_y = -32 }, @@ -21584,6 +21530,7 @@ dir = 4 }, /obj/effect/turf_decal/bot, +/obj/machinery/vending/wardrobe/cargo_wardrobe, /turf/open/floor/plasteel, /area/quartermaster/storage) "aYX" = ( @@ -22455,7 +22402,6 @@ /turf/open/floor/plasteel/brown, /area/quartermaster/office) "baP" = ( -/obj/structure/table/reinforced, /obj/machinery/light{ dir = 4 }, @@ -22467,6 +22413,9 @@ name = "Station Intercom (General)"; pixel_x = 28 }, +/obj/machinery/computer/bounty{ + dir = 8 + }, /turf/open/floor/plasteel/brown{ dir = 6 }, @@ -22474,10 +22423,6 @@ "baQ" = ( /turf/closed/wall, /area/quartermaster/miningoffice) -"baR" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/quartermaster/miningoffice) "baS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -22503,9 +22448,7 @@ /turf/open/floor/plating, /area/quartermaster/miningoffice) "baV" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/delivery, @@ -22781,6 +22724,7 @@ roundstart_template = /datum/map_template/shuttle/escape_pod/default; width = 3 }, +/obj/structure/fans/tiny/invisible, /turf/open/space/basic, /area/space) "bbz" = ( @@ -22968,11 +22912,7 @@ /turf/open/floor/plasteel, /area/hydroponics) "bbX" = ( -/obj/structure/closet/wardrobe/botanist, -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_y = 26 - }, +/obj/machinery/vending/wardrobe/hydro_wardrobe, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hydroponics) @@ -22981,6 +22921,10 @@ /obj/item/wrench, /obj/item/clothing/suit/apron, /obj/effect/turf_decal/bot, +/obj/item/radio/intercom{ + name = "Station Intercom"; + pixel_y = 26 + }, /turf/open/floor/plasteel, /area/hydroponics) "bbZ" = ( @@ -23018,9 +22962,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/service) "bcc" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -23786,7 +23728,7 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen) "bdG" = ( -/obj/structure/closet/chefcloset, +/obj/machinery/vending/wardrobe/chef_wardrobe, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/crew_quarters/kitchen) @@ -24147,15 +24089,12 @@ /turf/open/floor/plasteel, /area/engine/atmos) "beD" = ( -/obj/structure/closet/wardrobe/atmospherics_yellow, +/obj/machinery/vending/wardrobe/atmos_wardrobe, /obj/effect/decal/cleanable/dirt, /obj/machinery/light{ dir = 4 }, -/obj/item/storage/backpack/satchel/eng, /obj/effect/turf_decal/bot, -/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, -/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, /turf/open/floor/plasteel, /area/engine/atmos) "beE" = ( @@ -24268,12 +24207,6 @@ /area/hydroponics) "beR" = ( /obj/structure/cable/white, -/obj/machinery/power/apc{ - dir = 2; - name = "Hydroponics APC"; - areastring = "/area/hydroponics"; - pixel_y = -26 - }, /turf/open/floor/plasteel/greenblue/side, /area/hydroponics) "beS" = ( @@ -24287,17 +24220,11 @@ /turf/open/floor/plasteel/greenblue/side, /area/hydroponics) "beU" = ( -/obj/machinery/light_switch{ - pixel_x = 8; - pixel_y = -26 - }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hydroponics) "beV" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/decal/cleanable/dirt, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; @@ -27974,13 +27901,16 @@ pixel_x = 26; pixel_y = 8 }, -/obj/machinery/plantgenes, +/obj/machinery/plantgenes{ + pixel_y = 6 + }, /obj/machinery/camera{ c_tag = "Hydroponics"; dir = 8; name = "service camera" }, /obj/effect/turf_decal/delivery, +/obj/structure/table, /turf/open/floor/plasteel, /area/hydroponics) "bnn" = ( @@ -28067,11 +27997,8 @@ dir = 4; pixel_y = 8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Supply department is."; - dir = 4; - icon_state = "direction_supply"; - name = "supply department" +/obj/structure/sign/directions/supply{ + dir = 4 }, /obj/structure/sign/directions/medical{ pixel_y = -8 @@ -28128,9 +28055,7 @@ /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "bnA" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -28626,7 +28551,10 @@ /turf/open/floor/plasteel, /area/hydroponics) "boC" = ( -/obj/machinery/smartfridge/disks, +/obj/machinery/smartfridge/disks{ + pixel_y = 2 + }, +/obj/structure/table, /turf/open/floor/plasteel, /area/hydroponics) "boD" = ( @@ -28918,14 +28846,11 @@ }, /area/security/execution/transfer) "bpg" = ( -/obj/machinery/computer/security{ - name = "Labor Camp Monitoring"; - network = list("labor") - }, /obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, +/obj/machinery/computer/security/labor, /turf/open/floor/plasteel/red, /area/security/execution/transfer) "bph" = ( @@ -30193,12 +30118,12 @@ /turf/open/floor/plasteel/grimy, /area/crew_quarters/heads/hos) "brC" = ( -/obj/machinery/computer/security{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/machinery/computer/security/hos{ + dir = 1 + }, /turf/open/floor/plasteel/grimy, /area/crew_quarters/heads/hos) "brD" = ( @@ -32476,7 +32401,7 @@ /obj/machinery/camera/motion{ c_tag = "AI Chamber - Fore"; name = "motion-sensitive ai camera"; - network = list("ai") + network = list("aichamber") }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/dark, @@ -32513,8 +32438,7 @@ "bwt" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Air to Distro"; - target_pressure = 101 + name = "Air to Distro" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/caution, @@ -32651,9 +32575,7 @@ /area/engine/atmos) "bwG" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/structure/cable/white{ icon_state = "1-8" }, @@ -32933,7 +32855,8 @@ "bxe" = ( /obj/machinery/camera/motion{ c_tag = "Vault"; - dir = 4 + dir = 4; + network = list("vault") }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -35040,9 +34963,7 @@ /area/maintenance/port/fore) "bBt" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -40929,7 +40850,7 @@ c_tag = "Telecomms - Monitoring"; dir = 2; name = "telecomms camera"; - network = list("ss13","tcomm") + network = list("ss13","tcomms") }, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) @@ -41413,7 +41334,7 @@ c_tag = "AI Chamber - Aft"; dir = 1; name = "motion-sensitive ai camera"; - network = list("ai") + network = list("aichamber") }, /turf/open/floor/plasteel/vault, /area/ai_monitored/turret_protected/ai) @@ -41872,9 +41793,7 @@ /area/bridge/meeting_room/council) "bOy" = ( /obj/structure/chair/comfy/brown{ - color = "#c45c57"; - dir = 4; - icon_state = "comfychair" + dir = 4 }, /obj/structure/cable/white{ icon_state = "4-8" @@ -43706,11 +43625,8 @@ dir = 8; pixel_y = 8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Command department is."; +/obj/structure/sign/directions/command{ dir = 4; - icon_state = "direction_bridge"; - name = "command department"; pixel_y = -8 }, /turf/closed/wall, @@ -43920,17 +43836,11 @@ dir = 2; pixel_y = -8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Command department is."; - dir = 1; - icon_state = "direction_bridge"; - name = "command department" +/obj/structure/sign/directions/command{ + dir = 1 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Supply department is."; +/obj/structure/sign/directions/supply{ dir = 1; - icon_state = "direction_supply"; - name = "supply department"; pixel_y = 8 }, /turf/closed/wall, @@ -45813,12 +45723,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the AI's satellite."; - dir = 4; - name = "Research Monitor"; - network = list("minisat"); - pixel_y = 2 +/obj/machinery/computer/security/telescreen/minisat{ + dir = 4 }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -45859,12 +45765,8 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the Engine."; +/obj/machinery/computer/security/telescreen/ce{ dir = 4; - layer = 4; - name = "Engine Monitor"; - network = list("engine"); pixel_x = -30 }, /mob/living/simple_animal/parrot/Poly, @@ -49138,6 +49040,10 @@ /obj/item/stack/packageWrap, /obj/item/hand_labeler, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/computer/security/telescreen/vault{ + dir = 8; + pixel_x = 26 + }, /turf/open/floor/wood, /area/crew_quarters/heads/hop) "ccD" = ( @@ -49148,7 +49054,7 @@ c_tag = "Telecomms - Chamber Port"; dir = 4; name = "telecomms camera"; - network = list("ss13","tcomm") + network = list("ss13","tcomms") }, /turf/open/floor/plasteel/vault/telecomms{ dir = 8 @@ -49432,7 +49338,7 @@ /turf/open/floor/wood, /area/lawoffice) "cdk" = ( -/obj/structure/closet/lawcloset, +/obj/machinery/vending/wardrobe/law_wardrobe, /obj/machinery/firealarm{ dir = 4; pixel_x = 24 @@ -49592,7 +49498,7 @@ /obj/machinery/camera/motion{ c_tag = "AI - Upload"; name = "motion-sensitive ai camera"; - network = list("minisat") + network = list("aiupload") }, /turf/open/floor/plasteel/vault, /area/ai_monitored/turret_protected/ai_upload) @@ -49620,10 +49526,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/power/emitter{ - anchored = 1; - state = 2 - }, /turf/open/floor/plating/airless, /area/engine/engineering) "cdE" = ( @@ -50178,9 +50080,7 @@ /area/crew_quarters/heads/captain/private) "ceF" = ( /obj/structure/chair/comfy/brown{ - color = "#c45c57"; - dir = 8; - icon_state = "comfychair" + dir = 8 }, /obj/structure/cable/white{ icon_state = "1-4" @@ -50691,7 +50591,6 @@ dir = 8; network = list("singularity") }, -/obj/machinery/power/grounding_rod, /turf/open/floor/plating/airless, /area/engine/engineering) "cfC" = ( @@ -51042,7 +50941,7 @@ c_tag = "Telecomms - Chamber Starboard"; dir = 8; name = "telecomms camera"; - network = list("ss13","tcomm") + network = list("ss13","tcomms") }, /turf/open/floor/plasteel/vault/telecomms{ dir = 8 @@ -51666,6 +51565,7 @@ /turf/open/space, /area/space/nearstation) "chu" = ( +/obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/engine/engineering) @@ -52269,19 +52169,13 @@ }, /area/security/brig) "ciK" = ( -/obj/structure/closet/wardrobe/red, -/obj/item/clothing/under/rank/security/grey, -/obj/item/clothing/under/rank/security/grey, -/obj/item/clothing/under/rank/security/grey, +/obj/machinery/vending/wardrobe/sec_wardrobe, /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/item/storage/backpack/satchel/sec, /obj/structure/sign/poster/official/do_not_question{ pixel_y = -32 }, -/obj/item/clothing/suit/hooded/wintercoat/security, -/obj/item/clothing/suit/hooded/wintercoat/security, /turf/open/floor/plasteel/red, /area/security/brig) "ciL" = ( @@ -52409,48 +52303,65 @@ network = list("singularity") }, /turf/open/space, -/area/engine/engineering) +/area/space/nearstation) "ciZ" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ icon_state = "2-4" }, /turf/open/space, -/area/space) +/area/space/nearstation) "cja" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/space, -/area/space) +/area/space/nearstation) "cjb" = ( /obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/space, -/area/space) +/area/space/nearstation) "cjc" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ icon_state = "2-8" }, /turf/open/space, -/area/space) +/area/space/nearstation) "cjd" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/engineering) "cje" = ( +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable{ + icon_state = "0-4" + }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plating, /area/engine/engineering) +"cjf" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cjg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -52686,7 +52597,7 @@ /obj/machinery/camera/motion{ c_tag = "Bridge - Captain's Emergency Escape"; dir = 4; - name = "command camera" + name = "motion-sensitive command camera" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -53000,27 +52911,34 @@ icon_state = "1-2" }, /turf/open/space, -/area/space) +/area/space/nearstation) "ckv" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "ckw" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "ckx" = ( /obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cky" = ( +/obj/structure/cable, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/machinery/power/tesla_coil, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "ckz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -53028,20 +52946,43 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/power/grounding_rod, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "ckA" = ( /obj/effect/decal/cleanable/oil, /obj/machinery/door/poddoor/shutters/preopen{ id = "engpa"; name = "Engineering Chamber Shutters" }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plating, /area/engine/engineering) +"ckB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ckC" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/neutral, +/area/engine/engineering) "ckD" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, @@ -53610,14 +53551,25 @@ dir = 8 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "clS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, /obj/machinery/field/generator{ - anchored = 1; - state = 2 + anchored = 1 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) +"clT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/field/generator{ + anchored = 1 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) "clU" = ( /obj/structure/cable{ icon_state = "1-2" @@ -53626,7 +53578,20 @@ dir = 4 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) +"clV" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) "clW" = ( /obj/structure/rack, /obj/item/crowbar, @@ -53636,6 +53601,9 @@ /turf/open/floor/plasteel, /area/engine/engineering) "clX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) @@ -53664,11 +53632,8 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cmb" = ( -/obj/structure/closet/wardrobe/engineering_yellow, -/obj/item/storage/backpack/satchel/eng, +/obj/machinery/vending/wardrobe/engi_wardrobe, /obj/effect/turf_decal/delivery, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/obj/item/clothing/suit/hooded/wintercoat/engineering, /turf/open/floor/plasteel, /area/engine/engineering) "cmc" = ( @@ -54477,7 +54442,7 @@ icon_state = "1-2" }, /turf/open/space, -/area/space) +/area/space/nearstation) "cnB" = ( /obj/structure/cable{ icon_state = "0-8" @@ -54486,7 +54451,7 @@ dir = 8 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "cnC" = ( /obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, @@ -54500,6 +54465,9 @@ id = "engpa"; name = "Engineering Chamber Shutters" }, +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -54755,7 +54723,7 @@ c_tag = "Telecomms - Cooling Room"; dir = 8; name = "telecomms camera"; - network = list("ss13","tcomm") + network = list("ss13","tcomms") }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -55177,6 +55145,9 @@ /obj/structure/cable{ icon_state = "2-8" }, +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -55646,9 +55617,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard) "cqg" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; dir = 1; @@ -55718,13 +55687,13 @@ dir = 9 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "cqp" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "cqq" = ( /obj/structure/cable{ icon_state = "1-2" @@ -55735,10 +55704,6 @@ /turf/open/floor/plating, /area/engine/engineering) "cqr" = ( -/obj/structure/particle_accelerator/particle_emitter/left{ - icon_state = "emitter_left"; - dir = 8 - }, /turf/open/floor/plating, /area/engine/engineering) "cqs" = ( @@ -55747,7 +55712,6 @@ /area/engine/engineering) "cqt" = ( /obj/structure/cable, -/obj/machinery/particle_accelerator/control_box, /turf/open/floor/plating, /area/engine/engineering) "cqu" = ( @@ -56304,17 +56268,17 @@ }, /obj/machinery/power/tesla_coil, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "crJ" = ( -/obj/machinery/the_singularitygen/tesla, +/obj/item/wrench, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "crK" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "crL" = ( /obj/structure/cable{ icon_state = "1-4" @@ -56326,7 +56290,7 @@ dir = 4 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "crM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -56347,10 +56311,7 @@ /turf/open/floor/plating, /area/engine/engineering) "crO" = ( -/obj/structure/particle_accelerator/fuel_chamber{ - icon_state = "fuel_chamber"; - dir = 8 - }, +/obj/item/weldingtool/largetank, /turf/open/floor/plating, /area/engine/engineering) "crP" = ( @@ -57121,24 +57082,19 @@ dir = 10 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "ctn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "cto" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "ctp" = ( -/obj/structure/particle_accelerator/particle_emitter/right{ - icon_state = "emitter_right"; - dir = 8 - }, +/obj/item/wrench, /turf/open/floor/plating, /area/engine/engineering) "ctq" = ( @@ -57800,9 +57756,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/computer/cryopod{ - pixel_x = 28 - }, /turf/open/floor/plasteel/neutral/side{ dir = 4 }, @@ -57951,6 +57904,9 @@ /obj/structure/cable{ icon_state = "1-8" }, +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/engine/engineering) @@ -58116,11 +58072,8 @@ }, /area/library) "cvn" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Command department is."; - dir = 1; - icon_state = "direction_bridge"; - name = "command department" +/obj/structure/sign/directions/command{ + dir = 1 }, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) @@ -58267,11 +58220,8 @@ /turf/open/floor/plasteel, /area/hallway/secondary/command) "cvF" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Command department is."; - dir = 1; - icon_state = "direction_bridge"; - name = "command department" +/obj/structure/sign/directions/command{ + dir = 1 }, /turf/closed/wall/r_wall, /area/gateway) @@ -58525,12 +58475,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "cwd" = ( -/obj/item/twohanded/required/kirbyplants/random, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/crew_quarters/fitness/recreation) -"cwe" = ( +/obj/machinery/vr_sleeper, /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, @@ -58667,7 +58612,7 @@ /turf/open/floor/plasteel/dark, /area/library) "cwv" = ( -/obj/structure/closet/wardrobe/curator, +/obj/machinery/vending/wardrobe/curator_wardrobe, /turf/open/floor/plasteel/dark, /area/library) "cww" = ( @@ -59055,6 +59000,9 @@ /obj/machinery/light{ dir = 4 }, +/obj/machinery/computer/cryopod{ + pixel_x = 30 + }, /obj/machinery/cryopod, /turf/open/floor/plasteel/vault{ dir = 5 @@ -59160,6 +59108,24 @@ dir = 4 }, /area/crew_quarters/fitness/recreation) +"cxA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/field/generator{ + anchored = 1 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cxB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/field/generator{ + anchored = 1 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) "cxD" = ( /obj/structure/rack, /obj/item/crowbar, @@ -59916,6 +59882,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/item/twohanded/required/kirbyplants/random, /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, @@ -59978,23 +59945,54 @@ dir = 1 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "czp" = ( /obj/structure/cable{ icon_state = "0-2" }, /obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"czq" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/power/tesla_coil, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "czr" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/effect/turf_decal/stripes/corner, -/obj/machinery/power/grounding_rod, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) +"czs" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engpa"; + name = "Engineering Chamber Shutters" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"czt" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/neutral, +/area/engine/engineering) "czu" = ( /obj/structure/cable/white{ icon_state = "0-2" @@ -60583,32 +60581,33 @@ network = list("singularity") }, /turf/open/space, -/area/engine/engineering) +/area/space/nearstation) "cAH" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ icon_state = "1-4" }, /turf/open/space, -/area/space) +/area/space/nearstation) "cAI" = ( /obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "1-4" }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/space, -/area/space) +/area/space/nearstation) "cAJ" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ icon_state = "1-8" }, /turf/open/space, -/area/space) +/area/space/nearstation) "cAK" = ( +/obj/machinery/power/rad_collector/anchored, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ icon_state = "0-4" @@ -62196,7 +62195,6 @@ dir = 8; network = list("singularity") }, -/obj/machinery/power/grounding_rod, /turf/open/floor/plating/airless, /area/engine/engineering) "cDW" = ( @@ -63080,12 +63078,6 @@ icon_state = "0-2" }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/power/emitter{ - anchored = 1; - dir = 1; - icon_state = "emitter"; - state = 2 - }, /turf/open/floor/plating/airless, /area/engine/engineering) "cFI" = ( @@ -63611,9 +63603,7 @@ }, /area/crew_quarters/locker) "cGO" = ( -/obj/machinery/vending/autodrobe{ - req_access_txt = "0" - }, +/obj/machinery/vending/autodrobe/all_access, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -64380,9 +64370,7 @@ /area/maintenance/port) "cIq" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; dir = 1; @@ -67132,11 +67120,7 @@ /turf/open/floor/plasteel/neutral/side, /area/medical/storage) "cNO" = ( -/obj/structure/closet/wardrobe/white/medical, -/obj/structure/extinguisher_cabinet{ - pixel_y = 32 - }, -/obj/item/storage/backpack/satchel/med, +/obj/machinery/vending/wardrobe/medi_wardrobe, /turf/open/floor/plasteel/neutral/side, /area/medical/storage) "cNP" = ( @@ -67909,6 +67893,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay - Storage"; + network = list("ss13","medbay"); dir = 4; name = "medbay camera" }, @@ -68406,11 +68391,10 @@ /turf/open/floor/plasteel/vault/killroom, /area/science/xenobiology) "cQz" = ( -/obj/structure/closet/wardrobe/science_white, +/obj/machinery/vending/wardrobe/science_wardrobe, /obj/machinery/light/small{ dir = 8 }, -/obj/item/storage/backpack/satchel/tox, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/research) @@ -68652,9 +68636,7 @@ /turf/open/floor/plasteel, /area/medical/storage) "cRk" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -71304,25 +71286,15 @@ /turf/open/floor/plasteel, /area/maintenance/port) "cWI" = ( -/obj/machinery/atmospherics/components/binary/valve{ - dir = 1 - }, /obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel, -/area/maintenance/department/electrical) -"cWJ" = ( /obj/machinery/atmospherics/components/binary/valve{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, /turf/open/floor/plasteel, /area/maintenance/department/electrical) "cWK" = ( @@ -71840,6 +71812,7 @@ /obj/machinery/light, /obj/machinery/camera{ c_tag = "Medbay - Waiting Room"; + network = list("ss13","medbay"); dir = 1; name = "medbay camera" }, @@ -71979,6 +71952,7 @@ "cYc" = ( /obj/machinery/camera{ c_tag = "Medbay - Break Room"; + network = list("ss13","medbay"); dir = 2; name = "medbay camera" }, @@ -72545,7 +72519,7 @@ /obj/item/pen, /obj/machinery/door/window/southleft{ name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab1"; @@ -72656,6 +72630,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/camera{ c_tag = "Medbay - Fore Port"; + network = list("ss13","medbay"); dir = 8; name = "medbay camera" }, @@ -72737,6 +72712,7 @@ /obj/item/stack/medical/ointment, /obj/machinery/camera{ c_tag = "Medbay - Sleepers"; + network = list("ss13","medbay"); dir = 2; name = "medbay camera" }, @@ -75505,9 +75481,9 @@ }, /obj/machinery/camera{ c_tag = "Medbay - Chemistry"; + network = list("ss13","medbay"); dir = 8; - name = "medbay camera"; - network = list("ss13","medbay") + name = "medbay camera" }, /turf/open/floor/plasteel/whiteyellow/corner, /area/medical/chemistry) @@ -76078,7 +76054,7 @@ /obj/machinery/door/window/southleft{ dir = 4; name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/window/westleft, /obj/effect/turf_decal/delivery, @@ -76336,6 +76312,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay - Center"; + network = list("ss13","medbay"); dir = 2; name = "medbay camera" }, @@ -76743,7 +76720,7 @@ /obj/machinery/door/window/southleft{ dir = 8; name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab2"; @@ -77192,19 +77169,17 @@ /area/science/research/abandoned) "djp" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/glass/fifty, +/obj/machinery/cell_charger, /turf/open/floor/plasteel/white/side, /area/science/circuit) "djq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/rnd/production/protolathe/department/science, /obj/machinery/light{ dir = 1 }, /turf/open/floor/plasteel/white/side, /area/science/circuit) "djr" = ( -/obj/machinery/autolathe, /turf/open/floor/plasteel/white/side, /area/science/circuit) "djs" = ( @@ -77394,6 +77369,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /turf/open/floor/plasteel/whitepurple/corner{ dir = 8 }, @@ -77402,6 +77380,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/research) "djO" = ( @@ -77409,13 +77390,18 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/corner, /area/science/research) "djP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/junction/flip{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/research) "djQ" = ( @@ -77443,6 +77429,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/research) "djT" = ( @@ -77638,14 +77627,10 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_y = -26 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/closet/secure_closet/chemical, +/obj/machinery/vending/wardrobe/chem_wardrobe, /turf/open/floor/plasteel/whiteyellow/corner, /area/medical/chemistry) "dkl" = ( @@ -77653,12 +77638,17 @@ icon_state = "4-8" }, /obj/machinery/light_switch{ - pixel_x = 7; + pixel_x = 10; pixel_y = -26 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/item/radio/intercom{ + name = "Station Intercom"; + pixel_x = -6; + pixel_y = -26 + }, /turf/open/floor/plasteel/whiteyellow/corner, /area/medical/chemistry) "dkm" = ( @@ -77713,6 +77703,7 @@ /obj/machinery/light, /obj/machinery/camera{ c_tag = "Medbay - Port"; + network = list("ss13","medbay"); dir = 1; name = "medbay camera" }, @@ -77811,6 +77802,7 @@ /obj/machinery/light, /obj/machinery/camera{ c_tag = "Medbay - Starboard"; + network = list("ss13","medbay"); dir = 1; name = "medbay camera" }, @@ -78212,6 +78204,7 @@ "dlw" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/science/research) "dlx" = ( @@ -78226,52 +78219,19 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/science/research) "dly" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/science/research) "dlz" = ( /obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/science/research) -"dlA" = ( -/obj/structure/cable/white{ - icon_state = "0-4" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"dlB" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/obj/machinery/door/airlock/research{ - name = "Firing Range"; - req_access_txt = "47" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) -"dlC" = ( -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/science/misc_lab/range) "dlD" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall/r_wall, @@ -78288,6 +78248,7 @@ id = "rdoffice"; name = "Research Director's Shutters" }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/crew_quarters/heads/hor) "dlG" = ( @@ -78586,12 +78547,11 @@ /area/crew_quarters/abandoned_gambling_den) "dmr" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, /obj/structure/sign/departments/science{ pixel_x = -32 }, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, /turf/open/floor/plasteel/white/side{ dir = 4 }, @@ -78724,6 +78684,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/science/research) "dmM" = ( @@ -78739,6 +78700,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/science/research) "dmO" = ( @@ -78754,75 +78716,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/research) -"dmP" = ( -/obj/structure/table/reinforced, -/obj/machinery/magnetic_controller{ - autolink = 1 - }, -/obj/item/gun/energy/laser/practice{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/gun/energy/laser/practice, -/obj/item/clothing/ears/earmuffs, -/obj/item/clothing/ears/earmuffs, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "0-4" - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24; - pixel_y = 32 - }, -/obj/machinery/power/apc{ - dir = 8; - name = "Firing Range APC"; - areastring = "/area/science/misc_lab/range"; - pixel_x = -26; - pixel_y = 3 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) -"dmQ" = ( -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) -"dmR" = ( -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/metal/fifty, -/obj/item/target, -/obj/item/target/syndicate, -/obj/item/target/alien, -/obj/item/target/clown, -/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 = "47" - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) "dmS" = ( /obj/structure/table/reinforced, /obj/item/folder/white, @@ -78844,6 +78737,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/crew_quarters/heads/hor) "dmU" = ( @@ -79392,9 +79286,8 @@ pixel_x = -26 }, /obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, /turf/open/floor/plasteel/white/side{ dir = 4 }, @@ -79673,12 +79566,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, /turf/open/floor/plasteel, /area/science/research) "doF" = ( @@ -79686,104 +79579,23 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/research) "doG" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/science/research) -"doH" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Firing Range"; - req_access_txt = "47" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/research) -"doI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) -"doJ" = ( -/obj/machinery/holopad, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) -"doK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) -"doL" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/crew_quarters/heads/hor) "doM" = ( /obj/structure/table/reinforced, /obj/item/aicard, /obj/item/circuitboard/aicore, -/obj/structure/disposalpipe/sorting/mail{ - dir = 4; - name = "RD's Junction"; - sortType = 13 - }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/crew_quarters/heads/hor) @@ -79791,19 +79603,21 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /turf/open/floor/plasteel, /area/crew_quarters/heads/hor) "doO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/sorting/mail{ + dir = 4; + name = "RD's Junction"; + sortType = 13 + }, /turf/open/floor/plasteel, /area/crew_quarters/heads/hor) "doP" = ( @@ -80560,104 +80374,33 @@ /turf/open/floor/plasteel, /area/science/research) "dqu" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/research) "dqv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/research) "dqw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/science/research) -"dqx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/science/research) -"dqy" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/obj/machinery/light_switch{ - pixel_x = -26; - pixel_y = -26 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) -"dqz" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) -"dqA" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) -"dqB" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/machinery/door/airlock/command{ - name = "Research Director's Office"; - req_access_txt = "30" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/heads/hor) "dqC" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /turf/open/floor/plasteel, /area/crew_quarters/heads/hor) "dqD" = ( @@ -80667,6 +80410,9 @@ /obj/structure/cable/white{ icon_state = "1-4" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 }, @@ -80681,6 +80427,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -80737,9 +80486,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, /turf/open/floor/plasteel, /area/crew_quarters/heads/hor) "dqI" = ( @@ -81107,6 +80853,7 @@ /obj/structure/sign/poster/official/random{ pixel_y = -32 }, +/obj/machinery/cell_charger, /turf/open/floor/plasteel/white/side{ dir = 1 }, @@ -81140,16 +80887,16 @@ }, /area/science/circuit) "drD" = ( -/obj/machinery/vending/assist, /turf/open/floor/plasteel/white/side{ dir = 1 }, /area/science/circuit) "drE" = ( -/obj/machinery/bookbinder, /obj/structure/sign/poster/official/build{ pixel_y = -32 }, +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, /turf/open/floor/plasteel/white/side{ dir = 1 }, @@ -81158,11 +80905,11 @@ /obj/machinery/light_switch{ pixel_x = 36 }, -/obj/machinery/libraryscanner, /obj/machinery/firealarm{ dir = 4; pixel_x = 24 }, +/obj/machinery/vending/assist, /turf/open/floor/plasteel/white/corner{ dir = 1 }, @@ -81241,6 +80988,7 @@ id = "rdtoxins"; name = "Toxins Lab Shutters" }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/science/mixing) "drS" = ( @@ -81259,36 +81007,15 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/mixing) "drT" = ( /obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/mixing) -"drU" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"drV" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/door/window/northright{ - name = "Shooting Range" - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"drW" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/science/misc_lab/range) "drX" = ( /obj/machinery/power/apc{ dir = 8; @@ -81526,6 +81253,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay - Cloning Lab"; + network = list("ss13","medbay"); dir = 1; name = "medbay camera" }, @@ -81585,6 +81313,7 @@ /obj/item/clothing/neck/stethoscope, /obj/machinery/camera{ c_tag = "Medbay - Cryogenics"; + network = list("ss13","medbay"); dir = 1; name = "medbay camera" }, @@ -81787,6 +81516,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "dtj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 }, @@ -81797,6 +81527,7 @@ }, /area/science/mixing) "dtl" = ( +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whitepurple/corner{ dir = 4 }, @@ -81812,31 +81543,7 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"dtn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"dto" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"dtp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) "dtq" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -81845,9 +81552,6 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/hor) "dtr" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, /turf/open/floor/plasteel/whitepurple/side{ dir = 8 }, @@ -81857,9 +81561,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/structure/cable/white{ - icon_state = "1-8" - }, /obj/machinery/button/door{ id = "rdxeno"; name = "Xenobiology Containment Control"; @@ -82079,6 +81780,7 @@ /obj/machinery/iv_drip, /obj/machinery/camera{ c_tag = "Medbay - Recovery Room"; + network = list("ss13","medbay"); dir = 8; name = "medbay camera" }, @@ -82428,35 +82130,11 @@ /turf/open/floor/plasteel, /area/science/mixing) "duG" = ( -/turf/open/floor/plasteel/neutral, -/area/science/mixing) -"duH" = ( -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_x = 26; - pixel_y = 26 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/science/mixing) -"duI" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/sign/warning/securearea{ - pixel_x = -32 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"duJ" = ( -/obj/machinery/light{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/science/misc_lab/range) +/turf/open/floor/plasteel/neutral, +/area/science/mixing) "duK" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -82470,13 +82148,16 @@ receive_ore_updates = 1 }, /obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/crew_quarters/heads/hor) "duL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/whitepurple/corner{ dir = 8 }, @@ -83200,22 +82881,22 @@ }, /area/science/explab) "dwg" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, /obj/machinery/camera{ c_tag = "Science - Toxins Mixing Lab Fore"; dir = 4; name = "science camera"; network = list("ss13","rd") }, -/turf/open/floor/plasteel/escape{ - dir = 8 +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, /area/science/mixing) "dwh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 }, /turf/open/floor/plasteel/whitepurple/corner{ @@ -83226,58 +82907,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/neutral, /area/science/mixing) -"dwj" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 - }, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 4 - }, -/area/science/mixing) -"dwk" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/science/mixing) -"dwl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/camera{ - c_tag = "Science - Firing Range"; - dir = 4; - name = "science camera"; - network = list("ss13","rd") - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"dwm" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/science/misc_lab/range) -"dwn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) "dwo" = ( /obj/structure/table/reinforced, /obj/machinery/light, -/obj/structure/cable/white{ - icon_state = "4-8" - }, /obj/item/storage/secure/briefcase, /obj/item/taperecorder, /obj/machinery/newscaster{ @@ -83292,8 +82924,8 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/hor) "dwp" = ( -/obj/structure/cable/white{ - icon_state = "4-8" +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 }, /turf/open/floor/plasteel/whitepurple/corner{ dir = 8 @@ -83303,10 +82935,9 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/structure/cable/white{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/whitepurple/side, /area/crew_quarters/heads/hor) "dwr" = ( @@ -83546,6 +83177,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay - Genetics Lab"; + network = list("ss13","medbay"); dir = 4; name = "medbay camera" }, @@ -84016,7 +83648,6 @@ /turf/open/floor/plasteel, /area/science/research/abandoned) "dxP" = ( -/obj/machinery/portable_atmospherics/scrubber, /obj/machinery/light{ dir = 8 }, @@ -84026,14 +83657,16 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 }, -/turf/open/floor/plasteel/escape{ - dir = 8 - }, -/area/science/mixing) -"dxQ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/portable_atmospherics/pump{ + name = "Lil Pump" + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"dxQ" = ( +/obj/machinery/atmospherics/components/trinary/filter, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 }, @@ -84043,42 +83676,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral, /area/science/mixing) -"dxS" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 4 - }, -/area/science/mixing) -"dxT" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 26 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science/mixing) -"dxU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"dxV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) "dxW" = ( /turf/closed/wall, /area/crew_quarters/heads/hor) @@ -84212,6 +83809,7 @@ /obj/item/storage/box/disks, /obj/machinery/camera{ c_tag = "Medbay - Genetics Desk"; + network = list("ss13","medbay"); dir = 4; name = "medbay camera" }, @@ -84519,6 +84117,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay - Surgery"; + network = list("ss13","medbay"); dir = 1; name = "medbay camera" }, @@ -84838,63 +84437,27 @@ /turf/open/floor/plating, /area/maintenance/port) "dzt" = ( -/obj/machinery/portable_atmospherics/pump, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 }, -/turf/open/floor/plasteel/arrival{ - dir = 8 +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, +/turf/open/floor/plasteel, /area/science/mixing) "dzu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 }, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 }, /area/science/mixing) "dzv" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral, /area/science/mixing) -"dzw" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 4 - }, -/area/science/mixing) -"dzx" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/structure/sign/warning/fire{ - pixel_x = 32 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science/mixing) -"dzy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"dzz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) "dzA" = ( /obj/structure/closet/secure_closet/RD, /obj/machinery/computer/security/telescreen/entertainment{ @@ -85149,6 +84712,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/camera{ c_tag = "Medbay - Aft Port"; + network = list("ss13","medbay"); dir = 8; name = "medbay camera" }, @@ -85207,6 +84771,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay - Chief Medical Officer's Office"; + network = list("ss13","medbay"); dir = 8; name = "medbay camera" }, @@ -85377,7 +84942,6 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/whitepurple/side{ dir = 8 }, @@ -85390,14 +84954,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/neutral, /area/science/mixing) -"dAz" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 4 - }, -/area/science/mixing) "dAA" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 @@ -85408,23 +84964,10 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"dAB" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/science/misc_lab/range) -"dAC" = ( -/obj/item/target/syndicate, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/science/misc_lab/range) "dAD" = ( -/turf/open/floor/plating, -/area/science/misc_lab/range) +/obj/structure/lattice, +/turf/open/space/basic, +/area/science/mixing) "dAE" = ( /obj/machinery/light{ dir = 8 @@ -85444,7 +84987,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/neutral, +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 8 + }, /area/crew_quarters/heads/hor) "dAG" = ( /obj/structure/cable/white{ @@ -85460,7 +85005,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/turf/open/floor/plasteel/neutral, +/turf/open/floor/plasteel/whitepurple/corner, /area/crew_quarters/heads/hor) "dAI" = ( /obj/machinery/light{ @@ -85608,7 +85153,7 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/medical/genetics) "dAU" = ( -/obj/structure/closet/wardrobe/genetics_white, +/obj/machinery/vending/wardrobe/gene_wardrobe, /turf/open/floor/plasteel/whitepurple/corner, /area/medical/genetics) "dAV" = ( @@ -86135,14 +85680,12 @@ /turf/open/floor/wood, /area/crew_quarters/abandoned_gambling_den) "dBR" = ( -/obj/machinery/vending/boozeomat{ - req_access_txt = "0" - }, /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/random{ pixel_y = -32 }, +/obj/machinery/vending/boozeomat/all_access, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dBS" = ( @@ -86214,10 +85757,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/item/radio/intercom{ + pixel_x = -26 + }, /turf/open/floor/plasteel, /area/science/mixing) "dCb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/whitepurple/side{ dir = 8 }, @@ -86232,39 +85777,11 @@ /turf/open/floor/plasteel, /area/science/mixing) "dCd" = ( +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whitepurple/side{ dir = 4 }, /area/science/mixing) -"dCe" = ( -/obj/machinery/newscaster{ - pixel_x = 32 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/science/mixing) -"dCf" = ( -/obj/machinery/light/small, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"dCg" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/science/misc_lab/range) -"dCh" = ( -/obj/machinery/light/small, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/science/misc_lab/range) "dCi" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/suit_storage_unit/rd, @@ -86475,8 +85992,9 @@ /obj/structure/table/glass, /obj/item/clipboard, /obj/item/toy/figure/cmo, -/obj/machinery/status_display{ - pixel_x = -32 +/obj/machinery/computer/security/telescreen/cmo{ + dir = 4; + pixel_x = -30 }, /turf/open/floor/plasteel/neutral/side{ dir = 4 @@ -86523,6 +86041,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay - Aft Starboard"; + network = list("ss13","medbay"); dir = 4; name = "medbay camera" }, @@ -86814,7 +86333,6 @@ }, /obj/item/assembly/timer, /obj/structure/table/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -86831,6 +86349,7 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 6 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whitepurple/corner, /area/science/mixing) "dDr" = ( @@ -86842,20 +86361,9 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"dDs" = ( -/obj/structure/sign/warning/fire, -/turf/closed/wall/r_wall, -/area/science/misc_lab/range) "dDt" = ( /obj/machinery/door/firedoor/heavy, -/obj/structure/cable/white{ - icon_state = "1-2" - }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/research{ - name = "Toxins Secure Storage"; - req_access_txt = "8" - }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rdtoxins"; name = "Toxins Lab Shutters" @@ -86866,11 +86374,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/door/airlock/research{ + name = "Toxins Secure Storage"; + req_access_txt = "8" + }, /turf/open/floor/plasteel, -/area/science/misc_lab/range) -"dDu" = ( -/turf/closed/wall/r_wall, -/area/science/misc_lab/range) +/area/science/mixing) "dDv" = ( /obj/machinery/door/firedoor/heavy, /obj/effect/spawner/structure/window/reinforced, @@ -87320,12 +86829,12 @@ /obj/structure/chair/office/light{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, /turf/open/floor/plasteel, /area/science/mixing) "dEs" = ( @@ -87343,6 +86852,7 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 8 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whitepurple/corner, /area/science/mixing) "dEu" = ( @@ -87355,6 +86865,7 @@ /obj/structure/sign/poster/official/science{ pixel_x = 32 }, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plasteel, /area/science/mixing) "dEv" = ( @@ -87367,9 +86878,6 @@ /turf/open/floor/plasteel, /area/science/storage) "dEw" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -87921,6 +87429,7 @@ dir = 8 }, /obj/machinery/meter, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whitepurple/corner, /area/science/mixing) "dFL" = ( @@ -87939,6 +87448,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/portable_atmospherics/pump, /turf/open/floor/plasteel, /area/science/mixing) "dFM" = ( @@ -87954,9 +87464,6 @@ /turf/open/floor/plasteel, /area/science/storage) "dFN" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -87983,6 +87490,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, /turf/open/floor/plasteel, /area/science/storage) "dFR" = ( @@ -88556,16 +88067,12 @@ /area/science/test_area) "dGY" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the testing site."; - dir = 4; - layer = 4; - name = "Testing Site Telescreen"; - network = list("toxins") - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/computer/security/telescreen/toxins{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/mixing) "dGZ" = ( @@ -88662,12 +88169,10 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whitepurple/corner, /area/science/mixing) "dHl" = ( -/obj/structure/cable/white{ - icon_state = "2-4" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -88675,9 +88180,6 @@ /turf/open/floor/plasteel, /area/science/storage) "dHm" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, @@ -89296,6 +88798,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whitepurple/corner, /area/science/mixing) "dIy" = ( @@ -89334,9 +88837,6 @@ /turf/open/floor/plasteel, /area/science/mixing) "dIA" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, @@ -89475,7 +88975,7 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "dIN" = ( -/obj/structure/closet/wardrobe/robotics_black, +/obj/machinery/vending/wardrobe/robo_wardrobe, /obj/structure/window/reinforced{ dir = 4 }, @@ -89571,6 +89071,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ c_tag = "Medbay - Morgue"; + network = list("ss13","medbay"); dir = 1; name = "medbay camera" }, @@ -89623,7 +89124,7 @@ /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "dJd" = ( -/obj/structure/closet/wardrobe/white/medical, +/obj/machinery/vending/wardrobe/medi_wardrobe, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "dJe" = ( @@ -89682,6 +89183,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay - Chief Medical Officer's Quarters"; + network = list("ss13","medbay"); dir = 1; name = "medbay camera" }, @@ -90048,6 +89550,9 @@ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/mixing) "dJX" = ( @@ -90174,9 +89679,7 @@ /turf/open/floor/plasteel, /area/maintenance/port/aft) "dKk" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/navbeacon{ @@ -90878,17 +90381,8 @@ /obj/item/target, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/camera{ - active_power_usage = 0; - c_tag = "Bomb Test Site"; - desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site."; - dir = 4; - invuln = 1; - light = null; - name = "hardened testing camera"; - network = list("toxins"); - start_active = 1; - use_power = 0 +/obj/machinery/camera/preset/toxins{ + dir = 4 }, /turf/open/floor/plating/airless, /area/science/test_area) @@ -92981,6 +92475,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/camera{ c_tag = "Virology - Containment Lock"; + network = list("ss13","medbay"); dir = 8; name = "virology camera" }, @@ -93161,12 +92656,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"dQF" = ( -/obj/machinery/droneDispenser, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/maintenance/port/aft) "dQG" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -93499,6 +92988,7 @@ }, /obj/machinery/camera{ c_tag = "Virology - Break Room"; + network = list("ss13","medbay"); dir = 8; name = "virology camera" }, @@ -94695,8 +94185,7 @@ }, /area/medical/virology) "dUb" = ( -/obj/structure/closet/wardrobe/virology_white, -/obj/item/storage/backpack/satchel/vir, +/obj/machinery/vending/wardrobe/viro_wardrobe, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -95206,6 +94695,7 @@ }, /obj/machinery/camera{ c_tag = "Virology - Lab"; + network = list("ss13","medbay"); name = "virology camera" }, /obj/effect/turf_decal/bot, @@ -95225,6 +94715,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/camera{ c_tag = "Virology - Hallway"; + network = list("ss13","medbay"); dir = 8; name = "virology camera" }, @@ -96928,6 +96419,7 @@ }, /obj/machinery/camera{ c_tag = "Virology - Cells"; + network = list("ss13","medbay"); dir = 8; name = "virology camera" }, @@ -99071,6 +98563,10 @@ name = "Station Intercom"; pixel_x = -26 }, +/obj/machinery/airalarm{ + dir = 2; + pixel_y = 22 + }, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -99094,6 +98590,12 @@ /obj/structure/cable/white{ icon_state = "0-8" }, +/obj/structure/table/wood, +/obj/item/grown/log, +/obj/item/grown/log, +/obj/item/grown/log, +/obj/item/grown/log, +/obj/item/grown/log, /turf/open/floor/plasteel/grimy, /area/chapel/office) "eey" = ( @@ -99241,7 +98743,7 @@ }, /area/security/checkpoint/escape) "eeM" = ( -/obj/structure/closet/wardrobe/red, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/red/side{ dir = 5 }, @@ -99704,16 +99206,7 @@ /turf/open/floor/plasteel/grimy, /area/chapel/office) "ega" = ( -/obj/structure/closet/wardrobe/chaplain_black, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/obj/item/grown/log, -/obj/item/grown/log, -/obj/item/grown/log, -/obj/item/grown/log, -/obj/item/grown/log, +/obj/machinery/vending/wardrobe/chap_wardrobe, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -99966,6 +99459,16 @@ /obj/effect/landmark/xeno_spawn, /turf/open/space, /area/solar/port/aft) +"ehb" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/computer/bounty{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/heads/hop) "ehq" = ( /obj/structure/cable{ icon_state = "0-2" @@ -100075,19 +99578,20 @@ }, /turf/open/floor/plasteel/dark, /area/library) +"exE" = ( +/obj/machinery/air_sensor/atmos/toxins_mixing_tank, +/turf/open/floor/engine/vacuum, +/area/science/mixing) "eCM" = ( /obj/structure/cable/white{ icon_state = "4-8" }, /turf/open/floor/plasteel/whitepurple/side, /area/science/misc_lab) -"eIf" = ( -/obj/structure/particle_accelerator/end_cap{ - icon_state = "end_cap"; - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/engineering) +"eJc" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/closed/wall/r_wall, +/area/science/mixing) "eMD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -100095,6 +99599,22 @@ }, /turf/open/floor/plating, /area/science/research/abandoned) +"eMJ" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"eTv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) "faI" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -100113,6 +99633,24 @@ dir = 4 }, /area/science/misc_lab) +"fno" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"fow" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"fpQ" = ( +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/engine, +/area/science/mixing) "fGq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, @@ -100133,10 +99671,18 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"gbW" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) +"gbV" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/obj/machinery/airlock_sensor/incinerator_toxmix{ + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/science/mixing) "gmj" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, @@ -100154,6 +99700,21 @@ dir = 8 }, /area/science/misc_lab) +"gNS" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"gPv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/corner, +/area/science/research) "gQS" = ( /turf/open/floor/plasteel/white/side{ dir = 9 @@ -100165,11 +99726,27 @@ "gUH" = ( /obj/machinery/light, /obj/structure/table/reinforced, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/item/stack/sheet/metal/ten, /turf/open/floor/plasteel/white/side{ dir = 1 }, /area/science/circuit) +"gVS" = ( +/obj/item/clothing/head/kitty, +/obj/item/clothing/under/maid, +/obj/item/clothing/mask/muzzle, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"gXn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/department/electrical) "hdH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor{ @@ -100247,15 +99824,25 @@ dir = 9 }, /area/science/circuit) -"hWz" = ( -/turf/open/space, -/area/space) -"iji" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/vault{ - dir = 5 +"hPM" = ( +/obj/item/restraints/handcuffs/fake, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"iaF" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/research) +"ijB" = ( +/obj/structure/reagent_dispensers/keg/aphro/strong, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"ixL" = ( +/obj/structure/sign/warning/vacuum{ + pixel_x = 32 }, -/area/crew_quarters/locker) +/turf/open/floor/engine/vacuum, +/area/science/mixing) "iQh" = ( /obj/structure/bodycontainer/morgue{ dir = 1 @@ -100264,6 +99851,29 @@ dir = 8 }, /area/medical/morgue) +"iTj" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"jdO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 8 + }, +/area/science/research) "jeu" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -100310,10 +99920,53 @@ }, /turf/open/floor/plasteel, /area/engine/atmospherics_engine) +"juf" = ( +/obj/machinery/atmospherics/components/binary/valve, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/button/ignition/incinerator/toxmix{ + pixel_x = -6; + pixel_y = 30 + }, +/obj/machinery/button/door/incinerator_vent_toxmix{ + pixel_x = 8; + pixel_y = 30 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Science - Toxins Mixing Lab Burn Chamber"; + dir = 8; + name = "science camera"; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) "jBE" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/medical/morgue) +"jRy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 4 + }, +/area/science/mixing) +"jSe" = ( +/obj/machinery/door/firedoor/heavy, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "rdtoxins"; + name = "Toxins Lab Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/science/mixing) "kam" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor{ @@ -100322,9 +99975,12 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) -"knk" = ( -/turf/open/floor/plating/airless, -/area/space) +"kvf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/heads/hor) "kwx" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/whitepurple/corner, @@ -100339,6 +99995,20 @@ dir = 8 }, /area/maintenance/port) +"kLu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 26 + }, +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 4 + }, +/area/science/mixing) "lak" = ( /turf/open/floor/plasteel/white/side{ dir = 10 @@ -100348,7 +100018,7 @@ /obj/machinery/autolathe, /obj/machinery/door/window/southleft{ name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters/preopen{ @@ -100359,6 +100029,18 @@ dir = 4 }, /area/science/lab) +"lti" = ( +/obj/machinery/atmospherics/components/trinary/mixer/flipped, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"lyU" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 8 + }, +/turf/open/floor/engine, +/area/science/mixing) "lEl" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -100411,12 +100093,33 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) +"lXF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 4 + }, +/area/science/mixing) "lXM" = ( /obj/structure/target_stake, /turf/open/floor/plasteel/white/side{ dir = 1 }, /area/science/circuit) +"mkm" = ( +/obj/machinery/atmospherics/components/binary/valve, +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ + pixel_y = 26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) "mvm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -100428,21 +100131,102 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/circuit/green, /area/science/research/abandoned) -"ntr" = ( -/obj/structure/cable/white{ - icon_state = "4-8" +"mIi" = ( +/obj/item/electropack/shockcollar, +/obj/item/assembly/signaler, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"mQE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/light, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 8 + }, +/area/science/research) +"mWZ" = ( +/obj/machinery/atmospherics/components/binary/pump, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4; + light_color = "#d8b1b1" + }, +/turf/open/floor/engine, +/area/science/mixing) +"nyN" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "nSh" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"oIl" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"oIE" = ( +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/engine, +/area/science/mixing) +"oMw" = ( +/obj/docking_port/stationary/public_mining_dock{ + dir = 4 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"oNd" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"oSD" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"oUW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 8 + }, +/area/science/research) +"oYI" = ( +/obj/machinery/igniter/incinerator_toxmix, +/turf/open/floor/engine/vacuum, +/area/science/mixing) "oZC" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ @@ -100465,10 +100249,13 @@ dir = 1 }, /area/science/circuit) -"pqi" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space) +"poI" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "psi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bodycontainer/morgue{ @@ -100501,22 +100288,19 @@ dir = 9 }, /area/science/circuit) -"qlj" = ( -/obj/structure/lattice, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/space, -/area/engine/engineering) +"qnx" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input, +/turf/open/floor/engine/vacuum, +/area/science/mixing) "qpq" = ( /turf/open/floor/plasteel/white/side{ dir = 5 }, /area/science/circuit) -"qLI" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space) +"qBG" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "rhO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -100530,6 +100314,16 @@ dir = 6 }, /area/science/circuit) +"rUD" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) "rUL" = ( /obj/machinery/mineral/ore_redemption, /obj/machinery/door/firedoor, @@ -100539,16 +100333,26 @@ "saw" = ( /turf/closed/wall, /area/science/circuit) -"sDj" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/space) +"sfo" = ( +/obj/effect/decal/remains/xeno, +/turf/open/floor/engine/vacuum, +/area/science/mixing) +"svv" = ( +/obj/machinery/door/poddoor/incinerator_toxmix, +/turf/open/floor/engine/vacuum, +/area/science/mixing) "tmi" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plasteel, /area/science/circuit) +"twt" = ( +/obj/machinery/vr_sleeper, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/crew_quarters/fitness/recreation) "tCh" = ( /turf/closed/wall, /area/science/misc_lab) @@ -100557,17 +100361,6 @@ dir = 10 }, /area/science/misc_lab) -"ugB" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "upk" = ( /obj/machinery/door/airlock/public/glass{ name = "Holodeck Access" @@ -100596,6 +100389,15 @@ }, /turf/open/floor/plasteel/whitepurple/side, /area/science/misc_lab) +"uNP" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) "uYS" = ( /obj/machinery/door/airlock/atmos/glass/critical{ heat_proof = 1; @@ -100607,6 +100409,10 @@ }, /turf/open/floor/engine, /area/engine/supermatter) +"vhA" = ( +/obj/item/clothing/under/color/grey, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "vqd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bodycontainer/morgue{ @@ -100616,13 +100422,14 @@ dir = 5 }, /area/medical/morgue) -"vRm" = ( -/obj/structure/particle_accelerator/particle_emitter/center{ - icon_state = "emitter_center"; - dir = 8 +"vAb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 4 + }, +/area/science/mixing) "wei" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -100659,6 +100466,14 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"xmt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 1 + }, +/area/science/mixing) "xwK" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -100684,6 +100499,16 @@ }, /turf/open/floor/plasteel, /area/science/research/abandoned) +"xDZ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) "xJl" = ( /obj/structure/table, /obj/item/folder/white, @@ -100699,13 +100524,26 @@ }, /turf/open/floor/plasteel/white/side, /area/science/circuit) -"ybu" = ( -/obj/structure/particle_accelerator/power_box{ - icon_state = "power_box"; - dir = 8 +"xOo" = ( +/obj/machinery/light/small, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/science/research) +"xXn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output, +/turf/open/floor/engine/vacuum, +/area/science/mixing) +"xZM" = ( +/obj/structure/fans/tiny/invisible, +/turf/open/space/basic, +/area/space) +"yiv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/turf/open/floor/plating, -/area/engine/engineering) +/area/science/mixing) "yjc" = ( /obj/machinery/power/apc{ areastring = "/area/science/research/abandoned"; @@ -120382,17 +120220,17 @@ aaa car car car -pqi +aad aaa ciY aaa aaa aaa -qlj +aad aaa aaa aaa -qlj +aad aaa aaa aaa @@ -120897,7 +120735,7 @@ car cbN cdC cfA -pqi +aad cja ckv clR @@ -120911,7 +120749,7 @@ cnB clR czo cja -pqi +aad cDT cdC cHb @@ -121158,15 +120996,15 @@ aaa cja ckw clS -hWz -hWz -clS -gbW +aad +aad +clR aaa -hWz -hWz -clS -sDj +abj +aad +aad +cxA +ctn cja aaa cDT @@ -121411,21 +121249,21 @@ car cbP cdC cfA -pqi +aad cjb ckx -hWz -hWz -hWz -gbW -pqi +aad aaa -hWz -hWz -hWz +aaa +abj +aad +abj +aaa +aaa +aad czp cAI -pqi +aad cDT cdC cFJ @@ -121671,16 +121509,16 @@ cfA aaa cja ckw -hWz -hWz +aad aaa +abj +abj +abj +abj +abj aaa -pqi -aaa -aaa -hWz -hWz -sDj +aad +ctn cja aaa cDT @@ -121695,7 +121533,7 @@ cQf cRA cTn cVp -cWJ +gXn cYy cMO dbR @@ -121925,21 +121763,21 @@ car car cbP cfA -qLI -cjb -ckx -aaa -aaa -aaa +abj +cja +ckw +ckw +abj +abj cqo clR ctm -aaa -gbW -clS -czp -cAI -qLI +abj +abj +abj +ctn +cja +abj cDT cFJ car @@ -122180,25 +122018,25 @@ bWd bYp car car -ugB +cbP cdC -pqi -cja -ckw -gbW -pqi -pqi +aad +cjb +cky +aaa +aad +abj ckw crJ ctn -pqi -pqi -gbW -sDj -cja -pqi +abj +aad +aaa +czq +cAI +aad cdC -ntr +cFJ car car cJL @@ -122439,21 +122277,21 @@ car car cbP cfA -qLI -cjb -ckx -clS -gbW -aaa +abj +cja +ckw +abj +abj +abj cqp crK cto -aaa -aaa -aaa -czp -cAI -qLI +abj +abj +ctn +ctn +cja +abj cDT cFJ car @@ -122699,16 +122537,16 @@ cfA aaa cja ckw -hWz -hWz +aad aaa +abj +abj +abj +abj +abj aaa -pqi -aaa -aaa -hWz -hWz -sDj +aad +ctn cja aaa cDT @@ -122953,21 +122791,21 @@ car cbP cdC cfA -pqi +aad cjb ckx -hWz -hWz +aad aaa aaa -pqi -gbW +abj +aad +abj aaa -hWz -hWz +aaa +aad czp cAI -pqi +aad cDU cdC cFJ @@ -123000,7 +122838,7 @@ dvV dsW dsW dmj -dod +qBG dhD aaa aad @@ -123213,16 +123051,16 @@ cfA aaa cja ckw -clS -hWz +clT +aad +aad +abj aaa -aaa -gbW -clS -hWz -hWz -clS -sDj +crK +aad +aad +cxB +ctn cja aaa cDT @@ -123467,7 +123305,7 @@ car cbP cdC cfA -pqi +aad cjc ckz clU @@ -123481,7 +123319,7 @@ clU clU czr cAJ -pqi +aad cDT cdC cFJ @@ -123724,10 +123562,10 @@ car cbT cdG cfB -knk -knk aaa -pqi +aad +aaa +aad cjd cjd cjd @@ -123735,10 +123573,10 @@ crM cjd cjd cjd -pqi +aad +aaa +aad aaa -knk -knk cDV cFL cHg @@ -124245,7 +124083,7 @@ cje cjd cpa cqr -vRm +cqr ctp cuQ cjd @@ -124284,11 +124122,11 @@ dui dvW dxG dzc -dhD -dhD -dhD -aaa -aad +dfY +dfY +dfY +dfY +dfY aaa aaa aaa @@ -124496,19 +124334,19 @@ cbV cdJ car chv -chv +cjf ckA -chv +clV cnC cpa cqs -ybu +cqr ctq cuR cnC -chv -chv -chv +cjf +czs +clV chv car cFO @@ -124542,10 +124380,10 @@ dvX dlc dzd dfY -aad -aaa -aaa -aad +nyN +gVS +hPM +dfY ajr aaa aaa @@ -124754,7 +124592,7 @@ cdK cfD chw cjg -chw +ckB clW cnD cpb @@ -124764,7 +124602,7 @@ ctr cuS cnD cxD -chw +ckB chw chw cDW @@ -124798,11 +124636,11 @@ dlc dlc dmn djm -dhD -aad -aad -aad -aad +fow +dod +dod +poI +dfY ajr aad aad @@ -125011,17 +124849,17 @@ cdL cfE chx cjh -cjn +ckC clX cnE cpc cqu -eIf +cqr cts cuT cnE clX -cjn +czt cAL cCs cDX @@ -125056,10 +124894,10 @@ dvY dod dmi dfY -aad -aaa -aaa -aad +ijB +vhA +mIi +dfY ajr aaa aaa @@ -125316,7 +125154,7 @@ dhQ dhQ dhQ dhQ -aad +dfY ajr aaa aaa @@ -132245,9 +132083,9 @@ dlw dmL doE dqu -drR -dtj +jSe dtj +xmt dwh dxQ dzu @@ -132761,11 +132599,11 @@ doG dqw drR dtl +jRy +dtl +dtl +dtl dtl -dwj -dxS -dzw -dAz dCd dDq dEt @@ -133011,19 +132849,19 @@ ddU cMY dgx dhX -cUm +gPv dlz dmO -doD -dqt +iaF +xOo drT dtm -duH -dwk -dxT -dzx -dAA -dCe +kLu +lXF +vAb +vAb +vAb +vAb dDr dEu dFL @@ -133268,19 +133106,19 @@ ddV cMY dgy cQQ -cUm -cOR -cOR -doH -dqx -drP -drP +gPv drP drP drP drP drP drP +dJP +drQ +fno +eTv +iTj +oIl drP drP drP @@ -133525,20 +133363,20 @@ cMY cMY dgz cQP -cUm -dlA -dmP -doI -dqy -drU -dtn -duI -dwl -dxU -dzy -dAB -dCf -dDs +gPv +drP +dAD +svv +sfo +qnx +eJc +gbV +eJc +mkm +rUD +lti +xDZ +drQ dEv dFM dHl @@ -133783,18 +133621,18 @@ dfg dgA dhY djP -dlB -dmQ -doJ -dqz -drV -dto -dto -dwm -dto -dto -dAC -dCg +dEn +dAD +svv +oYI +exE +oIE +lyU +fpQ +yiv +eMJ +yiv +gNS dDt dEw dFN @@ -134039,20 +133877,20 @@ cQQ cNt dgB dhZ -djQ -dlC -dmR -doK -dqA -drW -dtp -duJ -dwn -dxV -dzz +mQE +drP dAD -dCh -dDu +svv +ixL +xXn +eJc +mWZ +eJc +juf +oSD +uNP +oNd +drP dEx dFO dHn @@ -134296,15 +134134,15 @@ ddW dfh dgC dia -djR +oUW dlD dlE -doL -dqB dlE -dlH dlE -dlH +dlE +dlE +kvf +dlE dlE dlE dlE @@ -134321,7 +134159,7 @@ dNC dNC dOT dPM -dQF +dOb dRE dSC dTA @@ -134810,7 +134648,7 @@ cZe dfj cSx dic -djQ +jdO dlF dmT doN @@ -136831,7 +136669,7 @@ caP bZb caP cge -caP +ehb cjB ckX cmA @@ -136995,7 +136833,7 @@ aaa aaa aaa aaa -aaa +xZM abE aaO aca @@ -137509,7 +137347,7 @@ aaa aaa aaa aaa -aaa +xZM abG aaO acc @@ -141621,7 +141459,7 @@ aaa aaa aaa aaa -aaa +xZM abE aaO aca @@ -142135,7 +141973,7 @@ aaa aaa aaa aaa -aaa +xZM abG aaO acc @@ -143222,7 +143060,7 @@ aTZ aVH aXr aYR -baR +baQ bct bdW bfr @@ -143691,7 +143529,7 @@ aeF aeF aeF aeF -aeF +oMw aeF aeF aeF @@ -149173,7 +149011,7 @@ clt cnc coE cqd -iji +crr csT cuy cvU @@ -154316,7 +154154,7 @@ clA aad aad cuM -cwe +cwd cxx czh cAz @@ -154573,7 +154411,7 @@ clA aaa aaa cuM -cwe +cwd cxy czi cAA @@ -155601,7 +155439,7 @@ ajr aad aad cuM -cwi +twt cxy czk cAD @@ -155858,7 +155696,7 @@ aaa aaa aaa cuM -cwi +twt cxy czl cAE @@ -156115,7 +155953,7 @@ aad ajr aad cuM -cwi +twt cwi czm cAF @@ -158898,9 +158736,9 @@ aaa ajr aad aKV -aaa +xZM bbv -aaa +xZM aKV aad aad diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index a4883676a4..680bc711fc 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -466,6 +466,7 @@ roundstart_template = /datum/map_template/shuttle/escape_pod/default; width = 3 }, +/obj/structure/fans/tiny/invisible, /turf/open/space/basic, /area/space) "abv" = ( @@ -902,11 +903,6 @@ dir = 8; pixel_x = 24 }, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (WEST)"; - icon_state = "cryopod-open"; - dir = 8 - }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "acy" = ( @@ -1061,9 +1057,6 @@ pixel_y = 7 }, /obj/item/pen, -/obj/machinery/computer/cryopod{ - pixel_x = 28 - }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "acN" = ( @@ -1526,6 +1519,7 @@ roundstart_template = /datum/map_template/shuttle/escape_pod/default; width = 3 }, +/obj/structure/fans/tiny/invisible, /turf/open/space/basic, /area/space) "adG" = ( @@ -1916,7 +1910,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "aev" = ( -/obj/machinery/computer/security, +/obj/machinery/computer/security/hos, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "aew" = ( @@ -3561,13 +3555,6 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching certain areas."; - dir = 1; - name = "Head of Security's Monitor"; - network = list("prison","minisat","tcomm"); - pixel_y = -30 - }, /turf/open/floor/plasteel/vault, /area/crew_quarters/heads/hos) "ahK" = ( @@ -4130,14 +4117,6 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) -"aiW" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 8 - }, -/area/crew_quarters/fitness/recreation) "aiX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, @@ -5154,7 +5133,10 @@ /turf/open/floor/plating, /area/maintenance/fore) "alf" = ( -/obj/structure/closet/firecloset, +/obj/machinery/cryopod{ + icon_state = "cryopod-open"; + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) "alg" = ( @@ -5190,9 +5172,7 @@ }, /area/crew_quarters/fitness/recreation) "alk" = ( -/obj/structure/chair{ - dir = 8 - }, +/obj/machinery/vr_sleeper, /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, @@ -5257,6 +5237,10 @@ "alq" = ( /turf/closed/wall, /area/maintenance/starboard) +"alr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboard) "als" = ( /obj/machinery/light{ dir = 8 @@ -5859,7 +5843,10 @@ /turf/open/floor/plating, /area/maintenance/fore) "amv" = ( -/obj/structure/closet/emcloset, +/obj/machinery/cryopod{ + icon_state = "cryopod-open"; + dir = 1 + }, /turf/open/floor/plasteel/vault, /area/crew_quarters/fitness/recreation) "amw" = ( @@ -5893,11 +5880,6 @@ /obj/structure/window/reinforced, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) -"amB" = ( -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/crew_quarters/fitness/recreation) "amC" = ( /obj/structure/chair{ dir = 4 @@ -6060,8 +6042,7 @@ /obj/machinery/door/window/westleft{ base_state = "right"; dir = 2; - icon_state = "right"; - name = "windoor" + icon_state = "right" }, /obj/item/book/manual/wiki/engineering_hacking, /obj/item/tape/random, @@ -6370,6 +6351,7 @@ /obj/structure/chair{ dir = 1 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "anJ" = ( @@ -6844,9 +6826,7 @@ freq = 1400; location = "Security" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/security/main) @@ -7404,11 +7384,11 @@ /obj/structure/reagent_dispensers/peppertank{ pixel_x = 32 }, -/obj/structure/closet/wardrobe/red, /obj/machinery/camera{ c_tag = "Security - Gear Room"; dir = 8 }, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "apR" = ( @@ -7870,10 +7850,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aqY" = ( -/obj/machinery/computer/security{ - name = "Labor Camp Monitoring"; - network = list("labor") - }, +/obj/machinery/computer/security/labor, /turf/open/floor/plasteel/dark, /area/security/brig) "aqZ" = ( @@ -8796,12 +8773,8 @@ /area/security/main) "asN" = ( /obj/structure/chair, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching proceedings in the interrogation room."; +/obj/machinery/computer/security/telescreen/interrogation{ dir = 1; - layer = 4; - name = "interrogation monitor"; - network = list("interrogation"); pixel_y = -30 }, /turf/open/floor/plasteel/grimy, @@ -9115,13 +9088,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"atw" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/port) "atx" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -9892,6 +9858,10 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/machinery/computer/security/telescreen/interrogation{ + dir = 8; + pixel_x = 30 + }, /turf/open/floor/plasteel/red/side{ dir = 5 }, @@ -10558,7 +10528,7 @@ /area/security/brig) "awz" = ( /obj/machinery/camera{ - c_tag = "Interrogation"; + c_tag = "Interrogation room"; dir = 8; network = list("interrogation") }, @@ -11215,9 +11185,7 @@ freq = 1400; location = "Engineering" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/engineering) @@ -11225,25 +11193,20 @@ /obj/machinery/door/window/southright{ dir = 4; name = "Engineering Deliveries"; - req_access_txt = "10"; - req_one_access_txt = "0" + req_access_txt = "10" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, +/turf/open/floor/plasteel, /area/engine/engineering) "axV" = ( /obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, +/turf/open/floor/plasteel, /area/engine/engineering) "axW" = ( /obj/structure/disposalpipe/segment, @@ -11253,9 +11216,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/turf/open/floor/plasteel/yellow/side{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/turf/open/floor/plasteel, /area/engine/engineering) "axX" = ( /obj/machinery/light_switch{ @@ -11271,21 +11235,41 @@ /obj/structure/sign/warning/securearea{ pixel_y = 32 }, -/turf/open/floor/plasteel/yellow/side{ +/obj/effect/turf_decal/stripes/line{ dir = 5 }, +/turf/open/floor/plasteel, /area/engine/engineering) "axY" = ( /turf/closed/wall/r_wall, /area/engine/engineering) -"ayc" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/turf/open/floor/plating/airless, +"axZ" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel/dark, /area/engine/engineering) +"aya" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"ayc" = ( +/obj/structure/table/reinforced, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"aye" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) "ayf" = ( /obj/structure/closet/crate, /obj/item/stack/sheet/glass{ @@ -11624,59 +11608,46 @@ dir = 1; pixel_y = 2 }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, +/turf/open/floor/plasteel, /area/engine/engineering) "ayT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/side{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/turf/open/floor/plasteel, /area/engine/engineering) "ayV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, /turf/open/floor/plasteel, /area/engine/engineering) "ayW" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ayX" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/external{ - name = "External Containment Access"; - req_access_txt = "10; 13" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine"; + req_access_txt = "10" }, /turf/open/floor/plating, /area/engine/engineering) -"aza" = ( -/obj/structure/cable/white{ - icon_state = "1-8" +"ayX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 }, -/turf/open/floor/plating/airless, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"aza" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "azb" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, @@ -11688,18 +11659,13 @@ }, /area/security/brig) "azd" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 }, -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) "aze" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" @@ -12325,20 +12291,13 @@ "aAo" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, +/turf/open/floor/plasteel, /area/engine/engineering) "aAp" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/item/clothing/suit/hooded/wintercoat/engineering, /obj/effect/turf_decal/delivery, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, +/turf/open/floor/plasteel, /area/engine/engineering) "aAr" = ( /obj/item/radio/intercom{ @@ -12351,12 +12310,15 @@ c_tag = "Engineering - Fore"; dir = 2 }, -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel/yellow/side{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/turf/open/floor/plasteel, /area/engine/engineering) "aAt" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, @@ -12370,21 +12332,27 @@ sortType = 4 }, /obj/effect/landmark/start/station_engineer, -/obj/structure/cable/white{ - icon_state = "1-4" - }, /turf/open/floor/plasteel, /area/engine/engineering) "aAv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel, /area/engine/engineering) +"aAw" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "aAx" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, /area/engine/engineering) "aAz" = ( /obj/structure/table/wood, @@ -12964,14 +12932,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, +/turf/open/floor/plasteel, /area/engine/engineering) "aBK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aBL" = ( @@ -13012,10 +12984,15 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aBO" = ( -/obj/machinery/light{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"aBQ" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aBS" = ( /obj/item/stack/ore/silver, @@ -13133,6 +13110,7 @@ "aCg" = ( /obj/machinery/camera/motion{ c_tag = "Vault"; + network = list("vault"); dir = 1 }, /obj/machinery/light, @@ -13524,6 +13502,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aCV" = ( @@ -13533,33 +13514,38 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/engineering) "aCW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/turf/open/floor/plasteel, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/engineering) "aCX" = ( -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, /area/engine/engineering) "aCY" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24; - pixel_y = -26 +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/plasteel, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine"; + req_access_txt = "10" + }, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aCZ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/space) +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) "aDa" = ( /turf/open/floor/plating, /area/construction/mining/aux_base) @@ -14153,9 +14139,10 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/side{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/turf/open/floor/plasteel, /area/engine/engineering) "aEo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -14178,16 +14165,31 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aEq" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aEr" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Fore Port"; - dir = 4; - network = list("singularity") +/obj/structure/cable/white{ + icon_state = "4-8" }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, /area/engine/engineering) "aEt" = ( /obj/structure/table, @@ -14205,8 +14207,7 @@ /area/quartermaster/warehouse) "aEv" = ( /obj/machinery/computer/security/mining{ - dir = 4; - network = list("mine","auxbase") + dir = 4 }, /turf/open/floor/plasteel, /area/quartermaster/miningoffice) @@ -14721,9 +14722,10 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 2 }, -/turf/open/floor/plasteel/yellow/side{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/turf/open/floor/plasteel, /area/engine/engineering) "aFw" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -14741,26 +14743,52 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"aFz" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine"; + req_access_txt = "10" + }, +/turf/open/floor/plating, +/area/engine/engineering) "aFA" = ( -/turf/open/floor/plasteel/yellow/side, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, /area/engine/engineering) "aFB" = ( -/obj/structure/rack, -/obj/machinery/button/door{ - id = "engpa"; - name = "Engineering Chamber Shutters Control"; - pixel_y = -26; - req_access_txt = "11" +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/clothing/gloves/color/black, -/obj/item/wrench, -/obj/item/clothing/glasses/meson/engine, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/yellow/side, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/turf/open/floor/engine, /area/engine/engineering) "aFC" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel/yellow/side, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"aFD" = ( +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/meter, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/turf/open/floor/engine, /area/engine/engineering) "aFE" = ( /obj/structure/table/wood, @@ -15486,9 +15514,10 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -27 }, -/turf/open/floor/plasteel/yellow/side{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/turf/open/floor/plasteel, /area/engine/engineering) "aGW" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -15499,15 +15528,32 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aGZ" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/engineering) +"aGY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"aGZ" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "External Gas to Loop" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"aHa" = ( +/obj/structure/cable/white, +/turf/open/floor/plating, +/area/engine/engineering) "aHc" = ( /obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -15745,9 +15791,7 @@ /area/hallway/primary/fore) "aHC" = ( /obj/structure/sign/directions/security{ - desc = "A direction sign, pointing out which way the security department is."; dir = 1; - icon_state = "direction_sec"; pixel_y = 8 }, /turf/closed/wall, @@ -15915,21 +15959,42 @@ dir = 8; pixel_x = -24 }, -/turf/open/floor/plasteel/yellow/side{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/turf/open/floor/plasteel, /area/engine/engineering) "aHY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/engineering) -"aIe" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" +"aHZ" = ( +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/effect/turf_decal/delivery, +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/space, -/area/space) +/turf/open/floor/plasteel, +/area/engine/engineering) +"aIc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plating, +/area/engine/engineering) +"aIe" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/engine/engineering) "aIf" = ( /obj/machinery/camera{ c_tag = "Auxillary Base Construction"; @@ -16602,9 +16667,32 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) +"aJp" = ( +/obj/structure/table, +/obj/effect/turf_decal/delivery, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser, +/turf/open/floor/plasteel, +/area/engine/engineering) "aJu" = ( /turf/open/floor/plating, /area/engine/engineering) +"aJv" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "aJB" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/vacuum/external, @@ -17042,6 +17130,12 @@ }, /turf/open/floor/plating, /area/engine/engineering) +"aKA" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "aKB" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -17056,34 +17150,50 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aKF" = ( +/obj/machinery/button/door{ + id = "engsm"; + name = "Radiation Shutters Control"; + pixel_x = 24; + req_access_txt = "10" + }, /obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 8 }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plating, +/turf/open/floor/engine, /area/engine/engineering) "aKG" = ( -/obj/structure/particle_accelerator/end_cap{ - icon_state = "end_cap"; +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/closed/wall/r_wall, +/area/engine/supermatter) "aKH" = ( -/obj/structure/particle_accelerator/fuel_chamber{ - icon_state = "fuel_chamber"; - dir = 4 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Gas to Chamber" }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/open/floor/engine, +/area/engine/supermatter) "aKI" = ( -/obj/structure/particle_accelerator/power_box{ - icon_state = "power_box"; - dir = 4 +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 }, -/turf/open/floor/plating, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"aKL" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix Bypass" + }, +/turf/open/floor/engine, /area/engine/engineering) "aKN" = ( /obj/machinery/door/poddoor{ @@ -17191,9 +17301,7 @@ name = "MuleBot Supply Access"; req_access_txt = "50" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /turf/open/floor/plating, /area/maintenance/port/fore) "aLa" = ( @@ -17373,7 +17481,7 @@ /obj/structure/table, /obj/machinery/camera/motion{ c_tag = "AI Upload Chamber - Fore"; - network = list("ss13","rd","aiupload") + network = list("aiupload") }, /obj/item/twohanded/required/kirbyplants/photosynthetic{ pixel_y = 10 @@ -17629,6 +17737,12 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/engine/engineering) +"aMc" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "aMd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -17649,52 +17763,62 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aMg" = ( +/obj/machinery/door/firedoor, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine"; + req_access_txt = "10" }, +/turf/open/floor/plating, /area/engine/engineering) "aMh" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aMi" = ( /obj/structure/cable{ icon_state = "2-8" }, +/obj/structure/cable{ + icon_state = "1-8" + }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/engine, /area/engine/engineering) -"aMk" = ( -/obj/machinery/particle_accelerator/control_box, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1 +"aMi" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Gas to Filter" }, -/turf/open/floor/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"aMj" = ( +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber"; + req_access_txt = "10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"aMk" = ( +/turf/open/floor/engine, +/area/engine/supermatter) +"aMm" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aMo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 +/obj/structure/reflector/box/anchored{ + dir = 8 }, -/turf/open/floor/plating/airless, -/area/space) +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "aMq" = ( /obj/structure/window/reinforced, /turf/open/space, @@ -18151,27 +18275,16 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aNu" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Gas to Filter" }, -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Particle Accelerator"; - dir = 1; - network = list("singularity") - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/open/floor/engine, +/area/engine/supermatter) "aNv" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/engine/engineering) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/engine, +/area/engine/supermatter) "aNw" = ( /obj/structure/window/reinforced{ dir = 4 @@ -18342,7 +18455,6 @@ /obj/machinery/camera/autoname{ dir = 2 }, -/obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -18355,24 +18467,37 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, +/obj/structure/filingcabinet/chestdrawer, /turf/open/floor/plasteel/brown{ dir = 1 }, /area/quartermaster/qm) "aNQ" = ( -/obj/structure/filingcabinet/chestdrawer, /obj/machinery/airalarm{ pixel_y = 23 }, /obj/machinery/light{ dir = 1 }, +/obj/machinery/computer/bounty, /turf/open/floor/plasteel/brown{ dir = 1 }, /area/quartermaster/qm) "aNR" = ( /obj/structure/table, +/obj/item/cartridge/quartermaster{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/cartridge/quartermaster, +/obj/item/gps{ + gpstag = "QM0" + }, /turf/open/floor/plasteel/brown{ dir = 1 }, @@ -18592,10 +18717,10 @@ /turf/open/floor/wood, /area/lawoffice) "aOr" = ( -/obj/structure/closet/lawcloset, /obj/machinery/light_switch{ pixel_y = -28 }, +/obj/machinery/vending/wardrobe/law_wardrobe, /turf/open/floor/wood, /area/lawoffice) "aOs" = ( @@ -18829,9 +18954,10 @@ /obj/structure/cable/yellow{ icon_state = "0-4" }, -/turf/open/floor/plasteel/yellow/side{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/turf/open/floor/plasteel, /area/engine/engineering) "aOP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -18854,12 +18980,26 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"aOS" = ( -/obj/effect/turf_decal/stripes/corner{ +"aOR" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plating/airless, -/area/space) +/turf/open/floor/plasteel, +/area/engine/engineering) +"aOS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/open/floor/engine, +/area/engine/engineering) "aOT" = ( /obj/structure/window/reinforced{ dir = 4 @@ -19020,9 +19160,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aPm" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; dir = 4; @@ -19385,21 +19523,34 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) -"aQd" = ( -/obj/structure/rack, -/obj/machinery/button/door{ - id = "engpa"; - name = "Engineering Chamber Shutters Control"; - pixel_y = 26; - req_access_txt = "11" +"aQa" = ( +/obj/structure/table, +/obj/effect/turf_decal/delivery, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, /obj/item/storage/belt/utility, -/obj/item/weldingtool, -/obj/item/clothing/head/welding, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/yellow/side{ +/obj/item/storage/belt/utility, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aQd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ dir = 1 }, +/turf/open/floor/engine, +/area/engine/engineering) +"aQe" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aQg" = ( /obj/machinery/door/poddoor{ @@ -19486,13 +19637,12 @@ /turf/closed/wall, /area/quartermaster/qm) "aQq" = ( -/obj/machinery/computer/security/mining{ - dir = 4; - network = list("mine","auxbase") - }, /obj/machinery/light_switch{ pixel_x = -23 }, +/obj/machinery/computer/cargo{ + dir = 4 + }, /turf/open/floor/plasteel/brown{ dir = 8 }, @@ -19503,6 +19653,7 @@ /area/quartermaster/qm) "aQs" = ( /obj/structure/disposalpipe/segment, +/obj/machinery/holopad, /turf/open/floor/plasteel, /area/quartermaster/qm) "aQt" = ( @@ -19513,18 +19664,6 @@ pixel_x = 32; supply_display = 1 }, -/obj/item/cartridge/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/cartridge/quartermaster, -/obj/item/cartridge/quartermaster{ - pixel_x = -4; - pixel_y = 7 - }, -/obj/item/gps{ - gpstag = "QM0" - }, /turf/open/floor/plasteel, /area/quartermaster/qm) "aQu" = ( @@ -19602,7 +19741,7 @@ /obj/machinery/camera/motion{ c_tag = "AI Upload Chamber - Port"; dir = 1; - network = list("ss13","rd","aiupload") + network = list("aiupload") }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai_upload) @@ -19625,7 +19764,7 @@ /obj/machinery/camera/motion{ c_tag = "AI Upload Chamber - Starboard"; dir = 1; - network = list("ss13","rd","aiupload") + network = list("aiupload") }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai_upload) @@ -20011,6 +20150,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aRq" = ( @@ -20037,6 +20179,13 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel, /area/engine/engineering) +"aRv" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "aRy" = ( /turf/closed/wall/r_wall, /area/aisat) @@ -20051,7 +20200,9 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/computer/camera_advanced/base_construction, +/obj/machinery/computer/camera_advanced/base_construction{ + dir = 4 + }, /turf/open/floor/plasteel/yellow/side{ dir = 9 }, @@ -20111,7 +20262,7 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aRK" = ( -/obj/machinery/computer/cargo{ +/obj/machinery/computer/security/qm{ dir = 4 }, /turf/open/floor/plasteel/brown{ @@ -20467,7 +20618,9 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aSx" = ( @@ -20478,39 +20631,36 @@ /obj/structure/cable/yellow{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /turf/open/floor/plasteel, /area/engine/engineering) "aSz" = ( -/obj/item/pen, -/obj/item/storage/belt/utility, -/obj/item/clothing/glasses/meson, -/obj/item/paper_bin{ - layer = 2.9 +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/structure/table/glass, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aSA" = ( -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = 3; - pixel_y = 3 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/book/manual/wiki/engineering_construction, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/table/glass, -/obj/item/flashlight, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/turf/open/floor/engine, /area/engine/engineering) "aSB" = ( /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aSD" = ( @@ -20555,7 +20705,9 @@ /turf/open/floor/plating, /area/hallway/secondary/entry) "aSJ" = ( -/obj/machinery/computer/shuttle/mining, +/obj/machinery/computer/shuttle/mining{ + dir = 4 + }, /turf/open/floor/plasteel/yellow/side{ dir = 10 }, @@ -20944,6 +21096,18 @@ dir = 2 }, /area/crew_quarters/locker) +"aTz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 2 + }, +/area/crew_quarters/locker) "aTA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -21017,12 +21181,17 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/light, -/turf/open/floor/plasteel/yellow/side, +/turf/open/floor/plasteel, /area/engine/engineering) "aTI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -21033,6 +21202,9 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -21045,6 +21217,31 @@ /obj/structure/cable/white{ icon_state = "4-8" }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aTM" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"aTN" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/engine/engineering) +"aTO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aTQ" = ( @@ -21400,16 +21597,9 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching areas on the MiniSat."; - dir = 8; - name = "MiniSat Monitor"; - network = list("minisat","tcomm"); - pixel_x = 29 - }, /obj/machinery/camera/motion{ c_tag = "AI Upload Foyer"; - network = list("ss13","rd","aiupload") + network = list("aiupload") }, /obj/machinery/airalarm{ pixel_y = 26 @@ -21420,21 +21610,14 @@ /area/ai_monitored/turret_protected/ai_upload_foyer) "aUB" = ( /obj/structure/sign/directions/security{ - desc = "A direction sign, pointing out which way the security department is."; dir = 1; - icon_state = "direction_sec"; pixel_y = 8 }, /obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the engineering department is."; - dir = 4; - icon_state = "direction_eng" + dir = 4 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the bridge is."; +/obj/structure/sign/directions/command{ dir = 2; - icon_state = "direction_bridge"; - name = "bridge"; pixel_y = -8 }, /turf/closed/wall/r_wall, @@ -21470,21 +21653,11 @@ }, /area/hallway/primary/fore) "aUF" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the escape arm is."; - icon_state = "direction_evac"; - name = "escape arm" - }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the medical department is."; - icon_state = "direction_med"; - name = "medical department"; +/obj/structure/sign/directions/evac, +/obj/structure/sign/directions/medical{ pixel_y = 8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the research department is."; - icon_state = "direction_sci"; - name = "research department"; +/obj/structure/sign/directions/science{ pixel_y = -8 }, /turf/closed/wall, @@ -21566,32 +21739,22 @@ /turf/closed/wall, /area/crew_quarters/locker) "aUN" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, +/obj/structure/closet/wardrobe/black, /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) "aUO" = ( -/obj/machinery/computer/cryopod{ - pixel_y = -26 - }, +/obj/structure/closet/wardrobe/grey, /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) "aUP" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (WEST)"; - icon_state = "cryopod-open"; - dir = 8 - }, +/obj/structure/closet/wardrobe/white, /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) "aUQ" = ( /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) "aUR" = ( -/obj/structure/closet/wardrobe/green, +/obj/machinery/vending/kink, /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) "aUS" = ( @@ -21649,7 +21812,7 @@ /area/crew_quarters/dorms) "aUY" = ( /obj/effect/turf_decal/delivery, -/obj/structure/closet/wardrobe/engineering_yellow, +/obj/machinery/vending/wardrobe/engi_wardrobe, /turf/open/floor/plasteel, /area/engine/engineering) "aUZ" = ( @@ -21699,19 +21862,31 @@ dir = 4 }, /obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor/plasteel/yellow/side, +/turf/open/floor/plasteel, /area/engine/engineering) "aVe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/engine/engineering) -"aVh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +"aVf" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plating/airless, +/obj/machinery/door/airlock/engineering{ + name = "Supermatter Engine"; + req_access_txt = "10" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"aVh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/engineering) "aVk" = ( /obj/structure/window/reinforced{ @@ -21747,7 +21922,7 @@ /obj/machinery/camera{ c_tag = "AI Chamber - Fore"; dir = 2; - network = list("rd") + network = list("aicore") }, /obj/structure/showcase/cyborg/old{ dir = 2; @@ -21995,8 +22170,7 @@ pixel_x = 27 }, /obj/machinery/computer/security/mining{ - dir = 8; - network = list("mine","auxbase") + dir = 8 }, /turf/open/floor/plasteel/red/side{ dir = 4 @@ -22339,16 +22513,18 @@ dir = 1 }, /area/engine/engineering) +"aWH" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "aWK" = ( -/obj/structure/cable/white{ - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/turf/open/space, +/area/space/nearstation) "aWL" = ( /obj/machinery/ai_status_display{ pixel_x = -32 @@ -23219,20 +23395,17 @@ /turf/closed/wall, /area/security/checkpoint/engineering) "aYx" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) "aYy" = ( /obj/machinery/camera{ c_tag = "AI Chamber - Port"; dir = 4; - network = list("rd") + network = list("aicore") }, /obj/structure/showcase/cyborg/old{ dir = 4; @@ -23944,7 +24117,7 @@ /obj/machinery/camera{ c_tag = "AI Chamber - Core"; dir = 2; - network = list("rd") + network = list("aicore") }, /turf/open/floor/plasteel/vault{ dir = 10 @@ -24201,18 +24374,18 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "bar" = ( -/obj/structure/closet/wardrobe/cargotech, /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/machinery/vending/wardrobe/cargo_wardrobe, /turf/open/floor/plasteel, /area/quartermaster/storage) "bas" = ( -/obj/structure/closet/wardrobe/cargotech, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/machinery/vending/wardrobe/cargo_wardrobe, /turf/open/floor/plasteel, /area/quartermaster/storage) "bat" = ( @@ -24243,15 +24416,6 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "baw" = ( -/obj/item/stamp{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stamp/denied{ - pixel_x = 4; - pixel_y = -2 - }, -/obj/structure/table/reinforced, /obj/structure/noticeboard{ desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; @@ -24263,22 +24427,19 @@ departmentType = 2; pixel_y = 30 }, -/obj/item/pen/red, +/obj/machinery/computer/bounty, /turf/open/floor/plasteel/brown{ dir = 9 }, /area/quartermaster/office) "bax" = ( -/obj/structure/table/reinforced, +/obj/machinery/computer/cargo, /turf/open/floor/plasteel/brown{ dir = 5 }, /area/quartermaster/office) "bay" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Cargo department is."; - icon_state = "direction_supply"; - name = "cargo department"; +/obj/structure/sign/directions/supply{ pixel_y = -5 }, /turf/closed/wall, @@ -24860,10 +25021,8 @@ pixel_y = 10 }, /obj/item/radio/off, -/obj/machinery/computer/security/telescreen{ +/obj/machinery/computer/security/telescreen/minisat{ dir = 4; - name = "MiniSat Monitor"; - network = list("minisat","tcomm"); pixel_x = -29 }, /turf/open/floor/plasteel/red/side{ @@ -24921,7 +25080,7 @@ /obj/machinery/camera{ c_tag = "AI Chamber - Starboard"; dir = 8; - network = list("rd") + network = list("aicore") }, /obj/structure/showcase/cyborg/old{ dir = 8; @@ -24967,9 +25126,7 @@ /turf/open/floor/plating, /area/quartermaster/office) "bbO" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/conveyor{ backwards = 1; dir = 2; @@ -25452,6 +25609,9 @@ pixel_x = -3; pixel_y = 5 }, +/obj/machinery/light_switch{ + pixel_y = 26 + }, /turf/open/floor/plasteel/red/side{ dir = 9 }, @@ -25519,6 +25679,10 @@ pixel_y = 30 }, /obj/structure/closet/secure_closet/security, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, /turf/open/floor/plasteel/red/side{ dir = 5 }, @@ -25635,12 +25799,19 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "bdp" = ( -/obj/machinery/computer/cargo{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/structure/table/reinforced, +/obj/item/stamp/denied{ + pixel_x = 4; + pixel_y = -2 + }, +/obj/item/stamp{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/pen/red, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -25741,10 +25912,10 @@ /turf/open/floor/plasteel/floorgrime, /area/janitor) "bdD" = ( -/obj/structure/closet/jcloset, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, +/obj/machinery/vending/wardrobe/jani_wardrobe, /turf/open/floor/plasteel/floorgrime, /area/janitor) "bdE" = ( @@ -25772,7 +25943,6 @@ pixel_y = 5 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -27 }, @@ -26006,10 +26176,8 @@ /obj/structure/rack, /obj/item/storage/secure/briefcase, /obj/item/clothing/mask/cigarette/cigar, -/obj/machinery/computer/security/telescreen{ +/obj/machinery/computer/security/telescreen/ce{ dir = 1; - name = "MiniSat Monitor"; - network = list("minisat","tcomm"); pixel_y = -30 }, /turf/open/floor/plasteel/vault{ @@ -26661,21 +26829,14 @@ /area/hallway/primary/central) "bfG" = ( /obj/structure/sign/directions/security{ - desc = "A direction sign, pointing out which way the security department is."; dir = 1; - icon_state = "direction_sec"; pixel_y = 8 }, /obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the engineering department is."; - dir = 4; - icon_state = "direction_eng" + dir = 4 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the bridge is."; +/obj/structure/sign/directions/command{ dir = 2; - icon_state = "direction_bridge"; - name = "bridge"; pixel_y = -8 }, /turf/closed/wall/r_wall, @@ -27938,7 +28099,7 @@ /obj/machinery/camera{ c_tag = "AI Chamber - Aft"; dir = 1; - network = list("rd") + network = list("aicore") }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/dark, @@ -28194,7 +28355,6 @@ }, /obj/machinery/light/small, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = -28 }, @@ -28788,9 +28948,7 @@ dir = 1; id = "packageExternal" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/structure/window/reinforced{ dir = 4 }, @@ -29070,7 +29228,6 @@ /area/bridge) "bkD" = ( /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 29 }, @@ -29786,11 +29943,8 @@ /turf/open/floor/plating, /area/quartermaster/office) "bmj" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Supply department is."; +/obj/structure/sign/directions/supply{ dir = 1; - icon_state = "direction_supply"; - name = "cargo department"; pixel_y = 8 }, /turf/closed/wall, @@ -29815,21 +29969,14 @@ /area/hallway/primary/port) "bmm" = ( /obj/structure/sign/directions/security{ - desc = "A direction sign, pointing out which way the security department is."; dir = 1; - icon_state = "direction_sec"; pixel_y = 8 }, /obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the engineering department is."; - dir = 4; - icon_state = "direction_eng" + dir = 4 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the bridge is."; +/obj/structure/sign/directions/command{ dir = 2; - icon_state = "direction_bridge"; - name = "bridge"; pixel_y = -8 }, /turf/closed/wall/r_wall, @@ -29867,10 +30014,10 @@ }, /obj/item/storage/secure/briefcase, /obj/structure/table/wood, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("prison"); +/obj/item/folder/blue, +/obj/item/storage/secure/briefcase, +/obj/item/assembly/flash/handheld, +/obj/machinery/computer/security/telescreen/vault{ pixel_y = 30 }, /turf/open/floor/wood, @@ -29908,9 +30055,7 @@ freq = 1400; location = "Bridge" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/maintenance/central) @@ -30082,21 +30227,11 @@ }, /area/hallway/primary/central) "bmL" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the escape arm is."; - icon_state = "direction_evac"; - name = "escape arm" - }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the medical department is."; - icon_state = "direction_med"; - name = "medical department"; +/obj/structure/sign/directions/evac, +/obj/structure/sign/directions/medical{ pixel_y = 8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the research department is."; - icon_state = "direction_sci"; - name = "research department"; +/obj/structure/sign/directions/science{ pixel_y = -8 }, /turf/closed/wall, @@ -30152,9 +30287,7 @@ /area/maintenance/starboard) "bmU" = ( /obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; - icon_state = "direction_eng"; pixel_y = 8 }, /turf/closed/wall, @@ -30861,12 +30994,12 @@ /turf/open/floor/plating, /area/crew_quarters/heads/hop) "bom" = ( -/obj/item/folder/blue, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/table/wood, -/obj/item/assembly/flash/handheld, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/wood, /area/crew_quarters/heads/hop) "bon" = ( @@ -31131,6 +31264,9 @@ c_tag = "Bar - Backroom"; dir = 2 }, +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, /turf/open/floor/wood, /area/crew_quarters/bar) "boS" = ( @@ -31160,9 +31296,7 @@ freq = 1400; location = "Bar" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot{ dir = 1 }, @@ -31347,15 +31481,14 @@ /turf/open/floor/plasteel/dark, /area/aisat) "bpt" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/structure/closet/wardrobe/red, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/red/side{ dir = 6 }, /area/security/checkpoint/customs) +"bpu" = ( +/turf/closed/wall/r_wall, +/area/space/nearstation) "bpv" = ( /obj/structure/sign/warning/securearea{ pixel_y = 32 @@ -32055,10 +32188,8 @@ /obj/structure/rack, /obj/item/aicard, /obj/item/radio/off, -/obj/machinery/computer/security/telescreen{ +/obj/machinery/computer/security/telescreen/minisat{ dir = 1; - name = "MiniSat Monitor"; - network = list("minisat","tcomm"); pixel_y = -29 }, /turf/open/floor/plasteel/darkblue/side{ @@ -32131,15 +32262,6 @@ dir = 1 }, /area/bridge) -"bqR" = ( -/obj/machinery/light_switch{ - pixel_x = 8; - pixel_y = -26 - }, -/turf/open/floor/plasteel/darkblue/side{ - dir = 10 - }, -/area/bridge) "bqS" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -32293,7 +32415,6 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/item/vending_refill/cigarette, /turf/open/floor/wood, /area/crew_quarters/bar) "brh" = ( @@ -32863,10 +32984,8 @@ /obj/machinery/porta_turret/ai{ dir = 2 }, -/obj/machinery/computer/security/telescreen{ +/obj/machinery/computer/security/telescreen/minisat{ dir = 8; - name = "MiniSat Monitor"; - network = list("minisat","tcomm"); pixel_x = 28 }, /turf/open/floor/plasteel/vault{ @@ -32888,10 +33007,8 @@ }, /obj/machinery/light, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/computer/security/telescreen{ +/obj/machinery/computer/security/telescreen/minisat{ dir = 1; - name = "MiniSat Monitor"; - network = list("minisat","tcomm"); pixel_y = -29 }, /turf/open/floor/plasteel/dark, @@ -33394,7 +33511,6 @@ /obj/item/hand_tele, /obj/structure/window/reinforced, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = 27 }, @@ -33501,7 +33617,6 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/structure/closet/gmcloset, /obj/item/wrench, /obj/item/stack/sheet/glass{ amount = 30 @@ -33511,6 +33626,8 @@ }, /obj/item/stack/cable_coil/random, /obj/item/stack/cable_coil/random, +/obj/structure/closet, +/obj/item/vending_refill/cigarette, /turf/open/floor/wood, /area/crew_quarters/bar) "btr" = ( @@ -33653,10 +33770,8 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/item/pen, -/obj/machinery/computer/security/telescreen{ +/obj/machinery/computer/security/telescreen/minisat{ dir = 1; - name = "MiniSat Monitor"; - network = list("minisat","tcomm"); pixel_y = -28 }, /turf/open/floor/plasteel/darkblue/corner, @@ -33858,21 +33973,11 @@ /turf/open/floor/wood, /area/library) "bui" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the escape arm is."; - icon_state = "direction_evac"; - name = "escape arm" - }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the medical department is."; - icon_state = "direction_med"; - name = "medical department"; +/obj/structure/sign/directions/evac, +/obj/structure/sign/directions/medical{ pixel_y = 8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the research department is."; - icon_state = "direction_sci"; - name = "research department"; +/obj/structure/sign/directions/science{ pixel_y = -8 }, /turf/closed/wall, @@ -34059,7 +34164,6 @@ icon_state = "1-2" }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -26 }, @@ -34902,7 +35006,6 @@ pixel_y = 3 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 28 }, @@ -35382,7 +35485,7 @@ /obj/machinery/computer/security/telescreen{ dir = 8; name = "Telecomms Camera Monitor"; - network = list("tcomm"); + network = list("tcomms"); pixel_x = 26 }, /obj/machinery/computer/telecomms/monitor{ @@ -35742,7 +35845,6 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -26 }, @@ -36229,11 +36331,9 @@ }, /area/engine/atmos) "bzf" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Air to Distro"; - on = 1; - target_pressure = 101 + name = "Air to Distro" }, /obj/machinery/airalarm{ pixel_y = 25 @@ -36255,10 +36355,7 @@ }, /area/engine/atmos) "bzh" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 2; - on = 1 - }, +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on, /turf/open/floor/plasteel/caution{ dir = 1 }, @@ -36684,10 +36781,8 @@ /area/crew_quarters/heads/captain/private) "bAe" = ( /obj/machinery/light, -/obj/machinery/computer/security/telescreen{ +/obj/machinery/computer/security/telescreen/minisat{ dir = 1; - name = "MiniSat Monitor"; - network = list("minisat","tcomm"); pixel_y = -29 }, /obj/structure/bed/dogbed/renault, @@ -36696,7 +36791,6 @@ /area/crew_quarters/heads/captain/private) "bAf" = ( /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = -26 }, @@ -36958,17 +37052,15 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bAM" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 1; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) "bAN" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Mix to Distro"; - on = 0 + name = "Mix to Distro" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -37241,23 +37333,16 @@ /turf/open/floor/wood, /area/library) "bBy" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the bridge is."; +/obj/structure/sign/directions/command{ dir = 4; - icon_state = "direction_bridge"; - name = "bridge"; pixel_y = -8 }, /obj/structure/sign/directions/security{ - desc = "A direction sign, pointing out which way the security department is."; dir = 1; - icon_state = "direction_sec"; pixel_y = 8 }, /obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the engineering department is."; - dir = 4; - icon_state = "direction_eng" + dir = 4 }, /turf/closed/wall, /area/hallway/secondary/command) @@ -37306,11 +37391,8 @@ /turf/open/floor/plasteel, /area/hallway/secondary/command) "bBD" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the bridge is."; +/obj/structure/sign/directions/command{ dir = 1; - icon_state = "direction_bridge"; - name = "bridge"; pixel_y = -8 }, /turf/closed/wall/r_wall, @@ -37444,11 +37526,8 @@ /turf/open/floor/plasteel/vault, /area/bridge) "bBN" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the bridge is."; +/obj/structure/sign/directions/command{ dir = 1; - icon_state = "direction_bridge"; - name = "bridge"; pixel_y = -8 }, /turf/closed/wall/r_wall, @@ -37466,21 +37545,14 @@ /area/maintenance/central) "bBP" = ( /obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the engineering department is."; - dir = 4; - icon_state = "direction_eng" + dir = 4 }, /obj/structure/sign/directions/security{ - desc = "A direction sign, pointing out which way the security department is."; dir = 1; - icon_state = "direction_sec"; pixel_y = 8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the bridge is."; +/obj/structure/sign/directions/command{ dir = 8; - icon_state = "direction_bridge"; - name = "bridge"; pixel_y = -8 }, /turf/closed/wall, @@ -37700,7 +37772,6 @@ /area/engine/atmos) "bCr" = ( /obj/machinery/atmospherics/components/binary/pump/on{ - dir = 0; name = "Waste to Filter" }, /turf/open/floor/plasteel, @@ -37724,9 +37795,7 @@ /area/engine/atmos) "bCw" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Air to Mix"; - on = 0 + name = "Air to Mix" }, /obj/machinery/atmospherics/pipe/simple/purple/visible{ dir = 4 @@ -37754,6 +37823,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/space, /area/space/nearstation) "bCA" = ( @@ -38420,7 +38490,7 @@ /obj/machinery/camera{ c_tag = "Telecomms - Server Room - Fore-Port"; dir = 2; - network = list("ss13","tcomm") + network = list("ss13","tcomms") }, /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) @@ -38451,7 +38521,7 @@ /obj/machinery/camera{ c_tag = "Telecomms - Server Room - Fore-Starboard"; dir = 2; - network = list("ss13","tcomm") + network = list("ss13","tcomms") }, /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) @@ -39290,9 +39360,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; dir = 4; @@ -39417,8 +39485,7 @@ "bFT" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Pure to Mix"; - on = 0 + name = "Pure to Mix" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39430,10 +39497,9 @@ /area/engine/atmos) "bFV" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; - name = "Unfiltered & Air to Mix"; - on = 1 + name = "Unfiltered & Air to Mix" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39603,23 +39669,13 @@ }, /area/hallway/primary/central) "bGx" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the research department is."; - icon_state = "direction_sci"; - name = "research department"; +/obj/structure/sign/directions/science{ pixel_y = -8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the medical department is."; - icon_state = "direction_med"; - name = "medical department"; +/obj/structure/sign/directions/medical{ pixel_y = 8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the escape arm is."; - icon_state = "direction_evac"; - name = "escape arm" - }, +/obj/structure/sign/directions/evac, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "bGy" = ( @@ -39782,21 +39838,11 @@ /turf/open/floor/plating, /area/maintenance/central) "bGU" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the escape arm is."; - icon_state = "direction_evac"; - name = "escape arm" - }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the medical department is."; - icon_state = "direction_med"; - name = "medical department"; +/obj/structure/sign/directions/evac, +/obj/structure/sign/directions/medical{ pixel_y = 8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the research department is."; - icon_state = "direction_sci"; - name = "research department"; +/obj/structure/sign/directions/science{ pixel_y = -8 }, /turf/closed/wall, @@ -40727,8 +40773,7 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "N2O to Pure"; - on = 0 + name = "N2O to Pure" }, /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plasteel/escape{ @@ -40795,7 +40840,7 @@ /obj/machinery/camera{ c_tag = "Telecomms - Control Room"; dir = 1; - network = list("ss13","tcomm") + network = list("ss13","tcomms") }, /obj/structure/table/wood, /obj/item/pen, @@ -41427,23 +41472,19 @@ /area/engine/atmos) "bKA" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; name = "Air to Ports" }, /turf/open/floor/plasteel, /area/engine/atmos) "bKB" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; name = "Mix to Ports" }, /turf/open/floor/plasteel, /area/engine/atmos) "bKC" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Pure to Ports"; - on = 0 + name = "Pure to Ports" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41659,9 +41700,7 @@ /turf/open/floor/plating, /area/maintenance/port) "bLe" = ( -/obj/machinery/vending/autodrobe{ - req_access_txt = "0" - }, +/obj/machinery/vending/autodrobe/all_access, /turf/open/floor/plating, /area/maintenance/port) "bLf" = ( @@ -42165,15 +42204,17 @@ /obj/machinery/meter, /turf/open/floor/plasteel, /area/engine/atmos) +"bMi" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) "bMj" = ( /obj/machinery/holopad, /turf/open/floor/plasteel, /area/engine/atmos) "bMk" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "n2o"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ + dir = 1 }, /obj/structure/window/reinforced{ dir = 4 @@ -42214,7 +42255,7 @@ /obj/machinery/camera{ c_tag = "Telecomms - Server Room - Aft-Port"; dir = 4; - network = list("ss13","tcomm") + network = list("ss13","tcomms") }, /turf/open/floor/plasteel/dark/telecomms/mainframe, /area/tcommsat/server) @@ -42252,7 +42293,7 @@ /obj/machinery/camera{ c_tag = "Telecomms - Server Room - Aft-Starboard"; dir = 8; - network = list("ss13","tcomm") + network = list("ss13","tcomms") }, /obj/structure/cable/yellow{ icon_state = "0-8" @@ -42737,7 +42778,6 @@ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = 29 }, @@ -43001,7 +43041,6 @@ pixel_x = -27 }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; name = "Port Mix to West Ports" }, /obj/machinery/light/small{ @@ -43011,9 +43050,7 @@ /area/engine/atmos) "bNU" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Port Mix to East Ports"; - on = 0 + name = "Port Mix to East Ports" }, /obj/item/crowbar, /turf/open/floor/plasteel, @@ -43062,7 +43099,7 @@ /obj/machinery/camera{ c_tag = "Telecomms - Server Room - Aft"; dir = 1; - network = list("ss13","tcomm") + network = list("ss13","tcomms") }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/ntnet_relay, @@ -43690,8 +43727,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Plasma to Pure"; - on = 0 + name = "Plasma to Pure" }, /obj/structure/window/reinforced{ dir = 4 @@ -43869,14 +43905,13 @@ /turf/open/floor/engine/cult, /area/library) "bPX" = ( -/obj/effect/landmark/blobstart, /obj/machinery/light/small{ dir = 1 }, /obj/machinery/computer/security/telescreen/entertainment{ pixel_x = 30 }, -/obj/structure/closet/wardrobe/curator, +/obj/machinery/vending/wardrobe/curator_wardrobe, /turf/open/floor/engine/cult, /area/library) "bPY" = ( @@ -44245,7 +44280,7 @@ }, /area/crew_quarters/kitchen) "bQI" = ( -/obj/structure/closet/chefcloset, +/obj/machinery/vending/wardrobe/chef_wardrobe, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) "bQJ" = ( @@ -44401,15 +44436,6 @@ /obj/item/pen/invisible, /turf/open/floor/engine/cult, /area/library) -"bRm" = ( -/obj/item/taperecorder, -/obj/item/camera, -/obj/item/radio/intercom{ - pixel_y = -25 - }, -/obj/structure/table/wood, -/turf/open/floor/engine/cult, -/area/library) "bRn" = ( /obj/structure/bookcase{ name = "Forbidden Knowledge" @@ -44527,11 +44553,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/reagent_dispensers/beerkeg{ - desc = "One of the more successful achievements of the Nanotrasen Corporate Warfare Division, their nuclear fission explosives are renowned for being cheap to produce and devastatingly effective. Signs explain that though this particular device has been decommissioned, every Nanotrasen station is equipped with an equivalent one, just in case. All Captains carefully guard the disk needed to detonate them - at least, the sign says they do. There seems to be a tap on the back."; - icon = 'icons/obj/machines/nuke.dmi'; - icon_state = "nuclearbomb_base"; - name = "Nanotrasen-brand nuclear fission explosive"; +/obj/machinery/nuclearbomb/beer{ pixel_x = 2; pixel_y = 6 }, @@ -44976,10 +44998,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bSj" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "plasma"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ + dir = 1 }, /obj/structure/window/reinforced{ dir = 4 @@ -45425,7 +45445,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "bTi" = ( -/obj/structure/closet/wardrobe/atmospherics_yellow, +/obj/machinery/vending/wardrobe/atmos_wardrobe, /turf/open/floor/plasteel/dark, /area/engine/atmos) "bTj" = ( @@ -45447,7 +45467,6 @@ /area/engine/atmos) "bTk" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; name = "Port to Filter" }, /obj/machinery/light/small{ @@ -45490,7 +45509,10 @@ /turf/closed/wall, /area/maintenance/solars/port/aft) "bTq" = ( -/turf/open/floor/plating/airless, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall/r_wall, /area/engine/engineering) "bTr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -45552,39 +45574,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/library) -"bTB" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Library Maintenance"; - req_one_access_txt = "12;37" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"bTC" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ icon_state = "2-8" }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/port) +/turf/open/floor/wood, +/area/library) "bTD" = ( /obj/machinery/vending/snack/random, /obj/machinery/newscaster{ @@ -45987,9 +45982,7 @@ freq = 1400; location = "Kitchen" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -46009,9 +46002,6 @@ sortType = 20 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -46065,12 +46055,8 @@ }, /area/maintenance/starboard) "bUw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "bUx" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -46138,9 +46124,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bUF" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 4; - on = 1 +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -46151,8 +46136,7 @@ "bUH" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "CO2 to Pure"; - on = 0 + name = "CO2 to Pure" }, /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/structure/window/reinforced{ @@ -46256,12 +46240,11 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bUT" = ( -/obj/structure/rack, -/obj/item/weldingtool, -/obj/item/screwdriver{ - pixel_y = 16 +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/enzyme{ + layer = 5 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/item/reagent_containers/food/condiment/flour, /turf/open/floor/plating, /area/maintenance/port/aft) "bUU" = ( @@ -46275,20 +46258,16 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bUW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 }, /turf/open/floor/plating, /area/maintenance/port/aft) "bUX" = ( -/obj/structure/rack, -/obj/item/stack/cable_coil{ - pixel_x = -1; - pixel_y = -3 - }, -/obj/item/stack/cable_coil, -/obj/item/wirecutters, -/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/closet/crate/bin, +/obj/item/kitchen/knife, /turf/open/floor/plating, /area/maintenance/port/aft) "bUY" = ( @@ -46655,9 +46634,7 @@ /area/engine/atmos) "bVL" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Port to Fuel Pipe"; - on = 0 + name = "Port to Fuel Pipe" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -46747,26 +46724,13 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bVW" = ( +/obj/structure/table, +/obj/item/kitchen/rollingpin, +/obj/item/reagent_containers/glass/beaker, /turf/open/floor/plating{ icon_state = "platingdmg1" }, /area/maintenance/port/aft) -"bVX" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bVZ" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bWa" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/maintenance/port/aft) "bWb" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -46803,22 +46767,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"bWe" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4; - sortType = 16 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/port) "bWf" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -47231,10 +47179,7 @@ /turf/open/floor/plasteel, /area/hydroponics) "bWV" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 - }, -/obj/structure/closet/wardrobe/botanist, +/obj/machinery/vending/wardrobe/hydro_wardrobe, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "bWX" = ( @@ -47437,8 +47382,7 @@ "bXo" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "Pure to Fuel Pipe"; - on = 0 + name = "Pure to Fuel Pipe" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -47449,10 +47393,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bXq" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "co2"; - on = 1 +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ + dir = 1 }, /obj/structure/window/reinforced{ dir = 4 @@ -47523,12 +47465,11 @@ }, /area/maintenance/port/aft) "bXA" = ( -/obj/structure/table, -/obj/item/flashlight/lamp, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bXB" = ( -/obj/structure/chair/stool, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, /turf/open/floor/plating, /area/maintenance/port/aft) "bXC" = ( @@ -47806,6 +47747,9 @@ /area/hydroponics) "bYm" = ( /obj/structure/closet/secure_closet/hydroponics, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "bYn" = ( @@ -47848,7 +47792,6 @@ /obj/item/radio/off, /obj/item/radio/off, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = 27 }, @@ -47965,25 +47908,11 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"bYG" = ( -/obj/structure/table, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/pen, -/obj/structure/extinguisher_cabinet{ - pixel_y = -30 - }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/port/aft) "bYH" = ( -/obj/structure/light_construct, +/obj/structure/rack, +/obj/item/stack/rods{ + amount = 4 + }, /turf/open/floor/plating{ icon_state = "panelscorched" }, @@ -48086,7 +48015,16 @@ /obj/item/screwdriver{ pixel_y = 6 }, -/obj/structure/sign/warning/nosmoking{ +/obj/item/storage/belt/medical{ + pixel_y = 2 + }, +/obj/item/clothing/neck/stethoscope, +/obj/item/radio/intercom{ + broadcasting = 1; + freerange = 0; + frequency = 1485; + listening = 0; + name = "Station Intercom (Medbay)"; pixel_y = 30 }, /turf/open/floor/plasteel/whiteblue/side{ @@ -48104,32 +48042,19 @@ /obj/item/screwdriver{ pixel_y = 6 }, +/obj/item/storage/belt/medical{ + pixel_y = 2 + }, +/obj/item/clothing/neck/stethoscope, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, /area/medical/storage) "bYV" = ( -/obj/item/radio/intercom{ - broadcasting = 1; - freerange = 0; - frequency = 1485; - listening = 0; - name = "Station Intercom (Medbay)"; +/obj/machinery/vending/wardrobe/medi_wardrobe, +/obj/structure/sign/warning/nosmoking{ pixel_y = 30 }, -/obj/structure/closet/wardrobe/white/medical, -/obj/item/clothing/suit/hooded/wintercoat/medical, -/obj/item/storage/belt/medical{ - pixel_y = 2 - }, -/obj/item/storage/belt/medical{ - pixel_y = 2 - }, -/obj/item/storage/belt/medical{ - pixel_y = 2 - }, -/obj/item/clothing/neck/stethoscope, -/obj/item/clothing/neck/stethoscope, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, @@ -48230,21 +48155,14 @@ /area/medical/medbay/central) "bZe" = ( /obj/structure/sign/directions/security{ - desc = "A direction sign, pointing out which way the security department is."; dir = 1; - icon_state = "direction_sec"; pixel_y = 8 }, /obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the engineering department is."; - dir = 4; - icon_state = "direction_eng" + dir = 4 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the bridge is."; +/obj/structure/sign/directions/command{ dir = 1; - icon_state = "direction_bridge"; - name = "bridge"; pixel_y = -8 }, /turf/closed/wall, @@ -48280,23 +48198,13 @@ }, /area/hallway/primary/aft) "bZi" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the medical department is."; +/obj/structure/sign/directions/medical{ dir = 8; - icon_state = "direction_med"; - name = "medical department"; pixel_y = 8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the escape arm is."; - icon_state = "direction_evac"; - name = "escape arm" - }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the research department is."; +/obj/structure/sign/directions/evac, +/obj/structure/sign/directions/science{ dir = 4; - icon_state = "direction_sci"; - name = "research department"; pixel_y = -8 }, /turf/closed/wall, @@ -48587,9 +48495,7 @@ freq = 1400; location = "Medbay" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -49608,7 +49514,6 @@ pixel_y = -29 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -27; pixel_y = -10 @@ -49912,7 +49817,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/smartfridge/disks, +/obj/machinery/smartfridge/disks{ + pixel_y = 2 + }, +/obj/structure/table, /turf/open/floor/plasteel, /area/hydroponics) "ccA" = ( @@ -49960,9 +49868,7 @@ freq = 1400; location = "Hydroponics" }, -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -50169,8 +50075,6 @@ /turf/open/space, /area/solar/port/aft) "cdb" = ( -/obj/structure/girder, -/obj/structure/grille, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, @@ -50198,6 +50102,8 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/girder, +/obj/structure/grille, /turf/open/floor/plating, /area/maintenance/port/aft) "cde" = ( @@ -50738,8 +50644,6 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "ceo" = ( -/obj/structure/girder, -/obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, @@ -50776,19 +50680,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) -"ces" = ( -/obj/structure/table, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/pen, -/turf/open/floor/plating, -/area/maintenance/port/aft) "ceu" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -51685,7 +51576,7 @@ /obj/machinery/door/window/eastright{ dir = 2; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "research_shutters"; @@ -53008,29 +52899,14 @@ /area/maintenance/disposal/incinerator) "cja" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Incinerator Interior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, /obj/structure/cable{ icon_state = "1-2" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ pixel_x = 40; - pixel_y = 8; - req_access_txt = "12"; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" + pixel_y = 8 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -53106,7 +52982,7 @@ /turf/open/floor/plating/airless, /area/engine/atmos) "cjp" = ( -/obj/machinery/vending/boozeomat, +/obj/machinery/vending/boozeomat/all_access, /turf/open/floor/wood, /area/maintenance/port/aft) "cjq" = ( @@ -53115,6 +52991,7 @@ name = "old sink"; pixel_y = 28 }, +/obj/effect/spawner/lootdrop/keg, /turf/open/floor/wood{ icon_state = "wood-broken3" }, @@ -53738,9 +53615,7 @@ /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1 }, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_atmos{ pixel_x = -8; pixel_y = 24 }, @@ -53753,10 +53628,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 8; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 8 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -54226,9 +54099,7 @@ /turf/open/floor/plasteel, /area/science/research) "clJ" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=2"; freq = 1400; @@ -54389,8 +54260,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cmb" = ( -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo"; +/obj/machinery/chem_master{ pixel_x = -4 }, /turf/open/floor/plating, @@ -54403,14 +54273,7 @@ /area/space/nearstation) "cmd" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Incinerator Exterior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /obj/structure/cable{ icon_state = "1-2" }, @@ -54870,9 +54733,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cne" = ( -/obj/machinery/igniter{ - id = "Incinerator" - }, +/obj/machinery/igniter/incinerator_atmos, /obj/structure/cable{ icon_state = "1-2" }, @@ -54892,10 +54753,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cng" = ( -/obj/machinery/door/poddoor{ - id = "auxincineratorvent"; - name = "Incineration Chamber Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cnh" = ( @@ -55004,6 +54862,9 @@ /obj/item/clothing/glasses/eyepatch, /obj/item/clothing/glasses/sunglasses/blindfold, /obj/item/clothing/ears/earmuffs, +/obj/item/storage/belt/medical{ + pixel_y = 2 + }, /turf/open/floor/plasteel/white/side{ dir = 2 }, @@ -55777,14 +55638,6 @@ }, /area/crew_quarters/heads/cmo) "coT" = ( -/obj/structure/closet/wardrobe/chemistry_white{ - pixel_x = -3 - }, -/obj/item/storage/backpack/satchel/chem, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, /obj/structure/window/reinforced{ dir = 1; pixel_y = 1 @@ -55792,6 +55645,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/machinery/vending/wardrobe/chem_wardrobe, /turf/open/floor/plasteel/white, /area/medical/chemistry) "coU" = ( @@ -55871,7 +55725,7 @@ /obj/machinery/door/window/eastright{ dir = 4; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/item/folder/white{ pixel_x = 4; @@ -56295,23 +56149,23 @@ }, /area/maintenance/port/aft) "cpR" = ( -/obj/machinery/button/door{ - id = "engpa"; - name = "Engineering Chamber Shutters Control"; - pixel_y = -26; - req_access_txt = "11" - }, /obj/effect/turf_decal/stripes/line{ - dir = 10 + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Port"; + dir = 8; + network = list("ss13","engine") }, -/obj/machinery/light{ +/obj/machinery/airalarm/engine{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 8 }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/open/floor/engine, +/area/engine/supermatter) "cpS" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -56581,6 +56435,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, /turf/open/floor/plasteel/white, /area/medical/chemistry) "cqs" = ( @@ -56707,7 +56565,7 @@ /obj/machinery/door/window/eastleft{ dir = 1; name = "Research and Development Deliveries"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/structure/window/reinforced{ dir = 8 @@ -56980,10 +56838,7 @@ /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "crf" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Turbine Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "crg" = ( @@ -57265,9 +57120,7 @@ }, /area/hallway/primary/aft) "crI" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; dir = 1; @@ -57401,20 +57254,12 @@ /turf/open/floor/plasteel, /area/science/explab) "crX" = ( -/obj/structure/closet/wardrobe/science_white, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/vending/wardrobe/science_wardrobe, /turf/open/floor/plasteel, /area/science/explab) -"crY" = ( -/obj/structure/rack, -/obj/item/reagent_containers/blood/random, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "crZ" = ( /obj/structure/table, /obj/structure/bedsheetbin{ @@ -57432,6 +57277,7 @@ "csb" = ( /obj/structure/rack, /obj/item/hatchet, +/obj/item/reagent_containers/blood/random, /turf/open/floor/plating, /area/maintenance/starboard/aft) "csc" = ( @@ -57984,13 +57830,8 @@ /turf/open/floor/plating, /area/crew_quarters/heads/hor) "csZ" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of his office."; - name = "Research Monitor"; - network = list("rd"); - pixel_y = 2 - }, /obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen/rd, /turf/open/floor/plasteel/cafeteria{ dir = 5 }, @@ -58118,10 +57959,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cto" = ( -/obj/machinery/vending/assist, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, +/obj/machinery/vending/kink, /turf/open/floor/plating, /area/maintenance/port/aft) "ctq" = ( @@ -58459,27 +58297,21 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cuc" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 }, /obj/structure/cable/yellow{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, /turf/open/floor/plating, /area/maintenance/starboard/aft) "cud" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/disposal/bin, +/obj/machinery/light{ + dir = 8 }, /turf/open/floor/plasteel/white, /area/science/circuit) @@ -59443,9 +59275,6 @@ icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, /turf/open/floor/plasteel/white, /area/science/circuit) "cwe" = ( @@ -60862,9 +60691,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, +/turf/open/floor/plasteel/blue/side, /area/medical/genetics) "czd" = ( /obj/machinery/light_switch{ @@ -61335,7 +61162,7 @@ dir = 1; pixel_y = -22 }, -/obj/structure/closet/wardrobe/genetics_white, +/obj/machinery/vending/wardrobe/gene_wardrobe, /turf/open/floor/plasteel/vault, /area/medical/genetics) "cAb" = ( @@ -62220,7 +62047,6 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cBO" = ( -/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -63010,22 +62836,13 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cDy" = ( -/obj/machinery/camera{ - active_power_usage = 0; - c_tag = "Bomb Test Site"; - desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site. An external light is attached to the top."; - dir = 8; - invuln = 1; - light = null; - luminosity = 3; - name = "Hardened Bomb-Test Camera"; - network = list("toxins"); - use_power = 0 - }, /obj/item/target/alien/anchored, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/camera/preset/toxins{ + dir = 8 + }, /turf/open/floor/plating/airless{ luminosity = 2 }, @@ -63514,10 +63331,7 @@ /turf/open/space, /area/science/mixing) "cEr" = ( -/obj/machinery/door/poddoor{ - id = "mixvent"; - name = "Mixer Room Vent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "cEs" = ( @@ -63527,9 +63341,8 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "cEt" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ @@ -63544,9 +63357,7 @@ /turf/closed/wall/r_wall, /area/science/mixing) "cEv" = ( -/obj/machinery/airlock_sensor{ - id_tag = "tox_airlock_sensor"; - master_tag = "tox_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_toxmix{ pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -63560,14 +63371,8 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "tox_airlock_pump"; - exterior_door_tag = "tox_airlock_exterior"; - id_tag = "tox_airlock_control"; - interior_door_tag = "tox_airlock_interior"; - pixel_x = -24; - sanitize_external = 1; - sensor_tag = "tox_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ + pixel_x = -24 }, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -63959,35 +63764,19 @@ /area/science/mixing) "cFo" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Mixing Room Exterior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /turf/open/floor/engine, /area/science/mixing) "cFp" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "tox_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 2 }, /obj/effect/landmark/blobstart, /turf/open/floor/engine, /area/science/mixing) "cFq" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Mixing Room Interior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /turf/open/floor/engine, /area/science/mixing) "cFr" = ( @@ -64033,7 +63822,6 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cFw" = ( -/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -64411,9 +64199,8 @@ }, /area/science/research) "cGj" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ @@ -64436,15 +64223,11 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/button/door{ - id = "mixvent"; - name = "Mixing Room Vent Control"; +/obj/machinery/button/door/incinerator_vent_toxmix{ pixel_x = -25; - pixel_y = 5; - req_access_txt = "7" + pixel_y = 5 }, -/obj/machinery/button/ignition{ - id = "mixingsparker"; +/obj/machinery/button/ignition/incinerator/toxmix{ pixel_x = -25; pixel_y = -5 }, @@ -65648,8 +65431,6 @@ /turf/closed/wall, /area/medical/virology) "cIt" = ( -/obj/structure/closet/wardrobe/virology_white, -/obj/item/storage/backpack/satchel/vir, /obj/structure/disposalpipe/segment{ dir = 9 }, @@ -65657,6 +65438,7 @@ dir = 8; pixel_x = -26 }, +/obj/machinery/vending/wardrobe/viro_wardrobe, /turf/open/floor/plasteel/vault, /area/medical/virology) "cIu" = ( @@ -66281,13 +66063,11 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "cJM" = ( -/obj/structure/closet/wardrobe/robotics_black{ - pixel_x = 2 - }, /obj/structure/window/reinforced{ dir = 8 }, /obj/effect/turf_decal/delivery, +/obj/machinery/vending/wardrobe/robo_wardrobe, /turf/open/floor/plasteel, /area/science/robotics/lab) "cJN" = ( @@ -66730,9 +66510,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "cKG" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; dir = 1; @@ -67197,8 +66975,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "cLC" = ( -/obj/machinery/button/ignition{ - id = "Incinerator"; +/obj/machinery/button/ignition/incinerator/atmos{ pixel_x = 8; pixel_y = -36 }, @@ -67209,20 +66986,14 @@ network = list("turbine"); pixel_x = 29 }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Turbine Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = -8; - pixel_y = -36; - req_access_txt = "12" + pixel_y = -36 }, /obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/button/door{ - id = "auxincineratorvent"; - name = "Auxiliary Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = -8; - pixel_y = -24; - req_access_txt = "12" + pixel_y = -24 }, /obj/machinery/computer/turbine_computer{ dir = 1; @@ -67662,6 +67433,11 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = -27 + }, /turf/open/floor/plasteel/dark, /area/chapel/office) "cMD" = ( @@ -68112,11 +67888,6 @@ c_tag = "Chapel Office - Backroom"; dir = 8 }, -/obj/item/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_x = 27 - }, /turf/open/floor/plasteel/dark, /area/chapel/office) "cNv" = ( @@ -68125,6 +67896,10 @@ dir = 8 }, /obj/structure/table/wood, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, /turf/open/floor/plasteel/grimy, /area/chapel/office) "cNw" = ( @@ -68670,11 +68445,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "cOG" = ( -/obj/structure/closet/wardrobe/chaplain_black, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23 - }, +/obj/machinery/vending/wardrobe/chap_wardrobe, /turf/open/floor/plasteel/grimy, /area/chapel/office) "cOH" = ( @@ -69022,7 +68793,7 @@ /turf/open/floor/plating, /area/chapel/main) "cPB" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /obj/machinery/light/small{ dir = 1 }, @@ -69030,7 +68801,7 @@ /turf/open/floor/plating, /area/chapel/main) "cPC" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /obj/structure/window/reinforced{ dir = 4 }, @@ -69280,7 +69051,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "cPZ" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /turf/open/floor/plating, /area/chapel/main) "cQa" = ( @@ -69643,7 +69414,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cQT" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /obj/machinery/light/small, /turf/open/floor/plating, /area/chapel/main) @@ -71062,6 +70833,18 @@ /obj/structure/easel, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"cXz" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Aft"; + dir = 1; + network = list("ss13","engine") + }, +/turf/open/floor/engine, +/area/engine/engineering) "cXA" = ( /turf/closed/wall/r_wall, /area/security/checkpoint/engineering) @@ -71073,6 +70856,10 @@ dir = 1 }, /area/construction/mining/aux_base) +"cXI" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard) "cXR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -71083,10 +70870,10 @@ /area/construction/mining/aux_base) "cXZ" = ( /obj/structure/reagent_dispensers/watertank, -/obj/effect/spawner/lootdrop/maintenance, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard) "cYc" = ( @@ -71181,16 +70968,6 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"cYV" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "cZa" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -71423,19 +71200,14 @@ /turf/open/floor/circuit/killroom, /area/science/xenobiology) "daW" = ( -/obj/machinery/button/door{ - id = "engpa"; - name = "Engineering Chamber Shutters Control"; - pixel_y = 26; - req_access_txt = "11" - }, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 4 }, -/obj/machinery/light{ +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/engine, /area/engine/engineering) "daX" = ( /obj/structure/cable/yellow{ @@ -71445,24 +71217,29 @@ icon_state = "platingdmg2" }, /area/maintenance/port/fore) +"daY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/engine/supermatter) "daZ" = ( -/obj/structure/particle_accelerator/particle_emitter/right{ - icon_state = "emitter_right"; - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 }, -/turf/open/floor/plating, -/area/engine/engineering) +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable, +/obj/structure/window/plasma/reinforced, +/turf/open/floor/engine, +/area/engine/supermatter) "dbb" = ( -/obj/structure/particle_accelerator/particle_emitter/center{ - icon_state = "emitter_center"; - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/open/floor/engine, +/area/engine/supermatter) "dbd" = ( -/obj/structure/sink/kitchen{ - pixel_y = 28 - }, +/obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, /area/crew_quarters/bar) "dbe" = ( @@ -71471,17 +71248,36 @@ }, /turf/open/floor/carpet, /area/crew_quarters/heads/hop) +"dbg" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dbh" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "dbj" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/open/floor/plating, /area/maintenance/starboard) -"dbk" = ( -/obj/item/hand_labeler_refill, -/obj/structure/easel, -/turf/open/floor/plating, -/area/maintenance/port) "dbl" = ( /obj/structure/easel, /turf/open/floor/plating, @@ -71568,10 +71364,13 @@ /turf/open/floor/circuit/killroom, /area/science/xenobiology) "dbE" = ( -/obj/machinery/plantgenes, +/obj/machinery/plantgenes{ + pixel_y = 6 + }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/table, /turf/open/floor/plasteel, /area/hydroponics) "dbF" = ( @@ -72657,15 +72456,16 @@ /turf/open/floor/plasteel, /area/engine/atmos) "ddO" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "ddP" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/engineering) @@ -72679,10 +72479,41 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"ddS" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Fore"; + dir = 4; + network = list("ss13","engine") + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"ddT" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"ddU" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"ddV" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "ddW" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /obj/structure/cable/yellow{ icon_state = "2-4" }, @@ -72695,14 +72526,26 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ddY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/engineering) "ddZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"dea" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste, /turf/open/floor/plating/airless, -/area/space) +/area/engine/engineering) "deb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -72710,173 +72553,642 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"ded" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"dee" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/engineering) "def" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/space, -/area/space) +/turf/closed/wall/r_wall, +/area/engine/engineering) "deh" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/light, -/turf/open/floor/plasteel, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/engineering) -"dem" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" +"dei" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dej" = ( +/obj/structure/cable/white{ + icon_state = "4-8" }, -/turf/open/space, -/area/space) -"den" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plating/airless, -/area/space) +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dek" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Mix to Gas" + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"del" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dem" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Gas to Mix" + }, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"den" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"dep" = ( +/obj/machinery/firealarm{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"deq" = ( +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "der" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor/plasteel/yellow/side, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"des" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/engine, /area/engine/engineering) "deu" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dev" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"dew" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering/glass{ + name = "Laser Room"; + req_access_txt = "10" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dex" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dey" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"deA" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"deB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plating/airless, -/area/space) -"dev" = ( -/obj/machinery/field/generator{ - anchored = 1; +/turf/open/floor/engine, +/area/engine/engineering) +"deC" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"deD" = ( +/obj/machinery/status_display, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"deI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"deJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical, +/turf/open/floor/engine, +/area/engine/engineering) +"deK" = ( +/obj/structure/cable/white, +/obj/machinery/power/emitter/anchored{ + dir = 2; state = 2 }, -/turf/open/floor/plating/airless, -/area/space) -"dew" = ( -/obj/structure/lattice/catwalk, +/turf/open/floor/plating, +/area/engine/engineering) +"deL" = ( +/obj/structure/cable/white, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"deM" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"deN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"deO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"deS" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable, +/obj/structure/window/plasma/reinforced, +/turf/open/floor/engine, +/area/engine/supermatter) +"deU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical, +/turf/open/floor/engine, +/area/engine/engineering) +"deV" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"deW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Starboard"; + dir = 4; + network = list("ss13","engine") + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"deX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"deY" = ( +/obj/structure/reflector/single/anchored{ + dir = 9 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dfa" = ( +/obj/machinery/power/supermatter_crystal/engine, +/turf/open/floor/engine, +/area/engine/supermatter) +"dfb" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"dfc" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"dfd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dfe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical, +/turf/open/floor/engine, +/area/engine/engineering) +"dff" = ( +/obj/structure/reflector/double/anchored{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"dfg" = ( +/obj/structure/reflector/single/anchored{ + dir = 10 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dfh" = ( +/obj/structure/sign/warning/nosmoking, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"dfi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"dfj" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"dfk" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/window/plasma/reinforced{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"dfm" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/window/plasma/reinforced{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"dfp" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"dfq" = ( +/obj/machinery/camera{ + c_tag = "Supermatter Chamber"; + dir = 4; + network = list("engine") + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"dft" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dfu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + filter_type = "n2" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dfz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"dfA" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dfB" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/machinery/power/emitter/anchored{ + dir = 1; + state = 2 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dfC" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/machinery/power/emitter/anchored{ + dir = 1; + state = 2 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"dfD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dfE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dfF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/meter, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dfG" = ( /obj/structure/cable{ icon_state = "4-8" }, /obj/structure/cable{ icon_state = "1-8" }, -/turf/open/space, -/area/space) -"deB" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engpa"; - name = "Engineering Chamber Shutters" - }, /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 1 }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) -"deD" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" +"dfI" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Cooling Loop Bypass" + }, +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/plating/airless, -/area/space) -"deM" = ( -/obj/structure/table, -/obj/effect/turf_decal/delivery, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine, /obj/machinery/light{ - dir = 4 - }, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 + dir = 1 }, +/turf/open/floor/engine, /area/engine/engineering) -"deV" = ( -/obj/structure/cable{ - icon_state = "1-8" +"dfJ" = ( +/obj/structure/cable/white{ + icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/space) -"deY" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plating/airless, -/area/space) -"dfa" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dfM" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/cable/white{ + icon_state = "1-8" }, /turf/open/floor/plating, /area/engine/engineering) -"dfh" = ( -/obj/structure/table, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = 10 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 +"dfO" = ( +/obj/structure/cable/white{ + icon_state = "1-8" }, +/turf/open/floor/plating, /area/engine/engineering) -"dfp" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) -"dfz" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/space) -"dfD" = ( -/obj/item/book/manual/engineering_singularity_safety{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/engineering_guide, -/obj/item/book/manual/engineering_particle_accelerator{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/table/glass, -/turf/open/floor/plasteel, -/area/engine/engineering) -"dfI" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/space) "dfP" = ( /obj/structure/cable/white{ - icon_state = "2-8" + icon_state = "4-8" }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Atmos to Loop" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dfQ" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/engine, +/area/engine/engineering) +"dfR" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Gas to Cold Loop" + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/engine/engineering) +"dfS" = ( +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/engine/engineering) +"dfT" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/engine/engineering) +"dfU" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Cold Loop to Gas" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"dfV" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"dfW" = ( +/obj/item/wrench, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "dfX" = ( /obj/structure/disposalpipe/segment, @@ -72894,86 +73206,180 @@ }, /area/engine/engineering) "dfY" = ( -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"dga" = ( -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"dgd" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"dge" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/emitter{ - anchored = 1; - dir = 1; - icon_state = "emitter"; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"dgg" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"dgj" = ( -/obj/structure/grille, -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"dgk" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner{ +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"dgm" = ( -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"dgr" = ( /turf/closed/wall/r_wall, -/area/space) +/area/engine/engineering) +"dfZ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"dga" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"dgb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"dgc" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"dgd" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space, +/area/space/nearstation) +"dge" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) +"dgf" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/turf/open/space, +/area/space/nearstation) +"dgg" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) +"dgh" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"dgi" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/plating, +/area/maintenance/starboard) +"dgj" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"dgk" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"dgm" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"dgo" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"dgp" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"dgr" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) +"dgt" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"dgu" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space, +/area/space/nearstation) +"dgv" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) +"dgw" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) "dgz" = ( /obj/structure/closet/toolcloset, /obj/effect/turf_decal/delivery, /obj/item/clothing/glasses/meson/engine, /turf/open/floor/plasteel, /area/engine/engineering) +"dgA" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"dgB" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) +"dgI" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/space, +/area/space/nearstation) +"dgJ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"dgK" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"dgM" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) "dgN" = ( /obj/structure/lattice, /obj/structure/grille, @@ -72981,6 +73387,89 @@ /turf/open/space, /area/space/nearstation) "dgO" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"dgS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/transit_tube/horizontal, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"dha" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"dhc" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/space, +/area/space/nearstation) +"dhe" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"dhg" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"dhh" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Mix to Engine" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"dhi" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/door/window/northleft{ + dir = 8; + icon_state = "left"; + name = "Inner Pipe Access"; + req_access_txt = "24" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/atmos) +"dhj" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/atmos) +"dhk" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/atmos) +"dhl" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, /turf/open/space, /area/space/nearstation) "dhn" = ( @@ -73016,8 +73505,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/obj/structure/sign/poster/official/random{ - pixel_x = -32 +/obj/machinery/computer/cryopod{ + pixel_x = -30 }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) @@ -73658,12 +74147,7 @@ /turf/open/floor/plating, /area/maintenance/port) "diy" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/item/poster/random_contraband, +/obj/structure/closet/secure_closet/freezer/kitchen/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) "diz" = ( @@ -73998,18 +74482,26 @@ /turf/open/space, /area/science/xenobiology) "djt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"djx" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Aft Port"; - dir = 4; - network = list("singularity") +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"djx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/crowbar, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/turf/open/floor/plating, +/area/engine/supermatter) "djz" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -74061,19 +74553,27 @@ /turf/open/floor/wood, /area/security/vacantoffice) "djX" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /obj/machinery/door/window/eastleft{ name = "Coffin Storage"; req_access_txt = "22" }, /turf/open/floor/plating, /area/chapel/main) -"dlI" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 +"dka" = ( +/obj/structure/noticeboard{ + dir = 1; + pixel_y = -32 }, -/area/engine/engineering) +/turf/open/floor/plasteel/white, +/area/science/circuit) +"dlI" = ( +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"dlN" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/supermatter) "dlV" = ( /turf/closed/wall/r_wall, /area/maintenance/department/science/xenobiology) @@ -74657,23 +75157,45 @@ /area/engine/gravity_generator) "dBw" = ( /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 4 }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"dBx" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "dBy" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"dBz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"dBA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, /area/engine/engineering) "dBB" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/plating/airless, -/area/space) +/turf/open/floor/engine, +/area/engine/engineering) "dBC" = ( /obj/machinery/meter, /obj/structure/grille, @@ -75386,6 +75908,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/item/stack/sheet/metal/ten, /turf/open/floor/plasteel/white, /area/science/circuit) "eqG" = ( @@ -75394,17 +75917,14 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"etr" = ( +/obj/machinery/vr_sleeper, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness/recreation) "evy" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/space) -"eCm" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/space, -/area/space) "eEe" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -75418,31 +75938,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) -"eMP" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) -"eTm" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"eXy" = ( -/obj/machinery/airalarm{ - pixel_y = 32 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/white, -/area/science/circuit) "eZe" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -75452,70 +75947,65 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"fca" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "fdr" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/engine/engineering) "fDD" = ( +/obj/machinery/light_switch{ + pixel_y = -25 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"gfh" = ( -/obj/machinery/libraryscanner, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"gix" = ( -/obj/structure/disposalpipe/segment, +"fFM" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/research/glass{ - name = "Circuitry Lab"; - req_access_txt = "47" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"giG" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Aft Starboard"; - dir = 8; - network = list("singularity") - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"glg" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "gnZ" = ( /obj/item/radio/intercom{ pixel_y = -30 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"gBt" = ( -/obj/effect/turf_decal/stripes/line{ +"gqA" = ( +/obj/machinery/button/door{ + dir = 2; + id = "abandoned_kitchen"; + name = "Shutters Control"; + pixel_x = 26; + pixel_y = 6; + req_one_access_txt = null + }, +/obj/effect/decal/cleanable/blood/old, +/obj/item/clothing/suit/apron/chef, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"gra" = ( +/obj/structure/disposalpipe/segment{ dir = 5 }, -/turf/open/floor/plating/airless, -/area/space) +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "gEk" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -75563,17 +76053,11 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"hfJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/autolathe, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"hiq" = ( -/obj/machinery/the_singularitygen/tesla, -/turf/open/floor/plating/airless, -/area/space) +"hvt" = ( +/obj/structure/kitchenspike_frame, +/obj/effect/decal/cleanable/blood/gibs/old, +/turf/open/floor/plating, +/area/maintenance/port/aft) "hyP" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Two" @@ -75583,41 +76067,13 @@ }, /turf/open/floor/plating, /area/security/prison) -"hKs" = ( -/obj/machinery/light{ - dir = 4 +"hIt" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters{ + id = "abandoned_kitchen" }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the Engine."; - dir = 8; - layer = 4; - name = "Engine Monitor"; - network = list("singularity"); - pixel_x = 30 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) -"hTv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"hYG" = ( -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"ili" = ( -/turf/open/floor/plating/airless, -/area/space) +/turf/open/floor/plating, +/area/maintenance/port/aft) "ioI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -75629,13 +76085,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/science/circuit) -"ixJ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/space, -/area/space) "izu" = ( /obj/machinery/autolathe{ name = "public autolathe" @@ -75643,7 +76092,7 @@ /obj/machinery/door/window/eastright{ dir = 2; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters/preopen{ @@ -75652,32 +76101,10 @@ }, /turf/open/floor/plasteel/whitepurple, /area/science/lab) -"iKX" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"iNQ" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"iQV" = ( -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) +"iLj" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/maintenance/port/aft) "jeV" = ( /obj/machinery/conveyor/inverted{ dir = 10; @@ -75689,15 +76116,11 @@ /turf/closed/wall/mineral/plastitanium, /area/crew_quarters/fitness/recreation) "jyv" = ( -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, -/obj/item/stack/sheet/metal/fifty, /obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of your own office."; - name = "Research Monitor"; - network = list("rd"); - pixel_y = 32 +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/machinery/computer/security/telescreen/circuitry{ + pixel_x = 30 }, /turf/open/floor/plasteel/white, /area/science/circuit) @@ -75714,30 +76137,6 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port/aft) -"jzM" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "External Containment Access"; - req_access_txt = "10; 13" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"jGF" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/engine/engineering) "jKK" = ( /obj/machinery/door/airlock/external{ req_access_txt = "13" @@ -75747,6 +76146,22 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"jLY" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) "kfu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, @@ -75762,6 +76177,11 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/hydroponics) +"kxk" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel/white, +/area/science/circuit) "kys" = ( /obj/structure/cable/yellow{ icon_state = "0-8" @@ -75807,9 +76227,6 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/light_switch{ - pixel_y = 32 - }, /turf/open/floor/plasteel/white, /area/science/circuit) "kVo" = ( @@ -75820,42 +76237,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"kXU" = ( -/obj/structure/cable/white, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/emitter{ - anchored = 1; - state = 2 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "lal" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, /area/science/circuit) -"lim" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "External Containment Access"; - req_access_txt = "10; 13" - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "llb" = ( /obj/structure/table/reinforced, /obj/item/integrated_circuit_printer, @@ -75875,33 +76262,21 @@ /obj/item/multitool, /turf/open/floor/plasteel/white, /area/science/circuit) -"lwo" = ( -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "lzk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/light{ - dir = 1 + icon_state = "1-2" }, /turf/open/floor/plasteel/white, /area/science/circuit) +"lGS" = ( +/obj/docking_port/stationary/public_mining_dock, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "lMz" = ( /obj/structure/falsewall, /turf/open/floor/plating, -/area/maintenance/starboard/aft) +/area/science/circuit) "lMJ" = ( /obj/structure/lattice, /turf/open/space/basic, @@ -75929,11 +76304,7 @@ /turf/open/floor/plasteel/dark, /area/tcommsat/server) "mjJ" = ( -/obj/structure/reagent_dispensers/beerkeg{ - desc = "One of the more successful achievements of the Nanotrasen Corporate Warfare Division, their nuclear fission explosives are renowned for being cheap to produce and devastatingly effective. Signs explain that though this particular device has been decommissioned, every Nanotrasen station is equipped with an equivalent one, just in case. All Captains carefully guard the disk needed to detonate them - at least, the sign says they do. There seems to be a tap on the back."; - icon = 'icons/obj/machines/nuke.dmi'; - icon_state = "nuclearbomb_base"; - name = "Nanotrasen-brand nuclear fission explosive"; +/obj/machinery/nuclearbomb/beer{ pixel_x = 2; pixel_y = 6 }, @@ -75955,23 +76326,13 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"mGY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +"mWg" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, -/turf/open/floor/plating/airless, -/area/space) -"mJy" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/power/grounding_rod, -/turf/open/floor/plating/airless, -/area/space) -"ngl" = ( -/obj/machinery/bookbinder, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/area/maintenance/port/aft) "nnK" = ( /obj/item/stack/sheet/glass/fifty, /obj/item/paper_bin, @@ -76010,12 +76371,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"nDB" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) "nIb" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/mining{ @@ -76028,9 +76383,21 @@ }, /turf/open/floor/plasteel, /area/construction/storage/wing) +"nXA" = ( +/obj/structure/rack{ + icon = 'icons/obj/stationobjs.dmi'; + icon_state = "minibar"; + name = "skeletal minibar" + }, +/obj/item/storage/fancy/candle_box, +/turf/open/floor/engine/cult, +/area/library) "obb" = ( /obj/structure/target_stake, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, /area/science/circuit) "obX" = ( /obj/docking_port/stationary{ @@ -76050,18 +76417,14 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, -/obj/item/stack/sheet/metal/fifty, /obj/structure/table/reinforced, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of your own office."; - name = "Research Monitor"; - network = list("rd"); - pixel_y = 32 +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/machinery/computer/security/telescreen/circuitry{ + pixel_y = 30 }, /turf/open/floor/plasteel/white, /area/science/circuit) @@ -76072,25 +76435,10 @@ /obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/science/circuit) -"oru" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "oub" = ( /obj/structure/sign/poster/official/random, /turf/closed/wall, /area/hydroponics) -"ovJ" = ( -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/engine/engineering) "oLW" = ( /obj/structure/table/reinforced, /obj/structure/cable/yellow{ @@ -76127,19 +76475,17 @@ /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) -"oXn" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 1 +"oZg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/area/engine/engineering) -"pdI" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/girder, /obj/structure/grille, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/turf/open/floor/plating, +/area/maintenance/port/aft) "pmc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -76178,6 +76524,25 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"pMX" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + sortType = 16 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port) "pOP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, @@ -76191,57 +76556,18 @@ }, /turf/open/floor/plating, /area/maintenance/aft) -"qcZ" = ( -/turf/open/space/basic, -/area/space/nearstation) -"qiO" = ( -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/obj/structure/grille, +"qhe" = ( /obj/effect/turf_decal/stripes/line{ - dir = 5 + dir = 8 }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"qnJ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance, -/obj/machinery/door/firedoor, /turf/open/floor/plating, -/area/science/circuit) +/area/maintenance/port) "qqg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, /turf/open/floor/plasteel, /area/science/misc_lab) -"qxk" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space) -"qyp" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/space) -"qzA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/engine/engineering) "qBh" = ( /obj/structure/table, /obj/item/paicard, @@ -76258,20 +76584,11 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"qMg" = ( -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/effect/turf_decal/delivery, -/obj/structure/table, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) +"qLf" = ( +/obj/structure/table/wood, +/obj/item/storage/photo_album, +/turf/open/floor/engine/cult, +/area/library) "qRM" = ( /obj/machinery/camera{ c_tag = "Research Division Circuitry Lab"; @@ -76280,6 +76597,15 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"qVR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/wood, +/area/library) "rzX" = ( /obj/structure/chair/office/light{ dir = 1; @@ -76314,18 +76640,26 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"sef" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Fore Starboard"; - dir = 8; - network = list("singularity") - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "siF" = ( /obj/structure/grille, /turf/open/floor/plating/airless, /area/space/nearstation) +"sFv" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "47" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/science/circuit) "sGh" = ( /obj/structure/cable{ icon_state = "1-2" @@ -76351,19 +76685,6 @@ "sJW" = ( /turf/closed/wall/mineral/plastitanium, /area/engine/break_room) -"sZD" = ( -/obj/machinery/newscaster{ - pixel_y = -32 - }, -/obj/machinery/light, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"tjH" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/libraryconsole/bookmanagement, -/turf/open/floor/plasteel/white, -/area/science/circuit) "tsx" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -76380,25 +76701,22 @@ /turf/open/floor/plasteel/white, /area/science/circuit) "tDM" = ( -/obj/item/wrench, -/turf/open/floor/plating, -/area/engine/engineering) +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber"; + req_access_txt = "10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) "tFJ" = ( /obj/structure/bodycontainer/morgue{ dir = 8 }, /turf/open/floor/plasteel/dark, /area/medical/morgue) -"tUB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "tVY" = ( /obj/structure/closet/crate, /obj/item/target/alien, @@ -76409,18 +76727,12 @@ /obj/item/target/syndicate, /obj/item/gun/energy/laser/practice, /obj/item/gun/energy/laser/practice, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel, /area/science/circuit) "tXK" = ( /obj/machinery/air_sensor/atmos/toxins_mixing_tank, /turf/open/floor/engine/vacuum, /area/science/mixing) -"tYJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/space) "upN" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -76471,7 +76783,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/rnd/production/protolathe/department/science, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-10" + }, /turf/open/floor/plasteel/white, /area/science/circuit) "uYk" = ( @@ -76480,6 +76794,16 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"vgd" = ( +/obj/item/taperecorder, +/obj/item/camera, +/obj/structure/table/wood, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/engine/cult, +/area/library) "vhG" = ( /obj/structure/table/glass, /obj/machinery/camera/autoname{ @@ -76487,25 +76811,12 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) -"vrp" = ( -/obj/structure/closet/firecloset, -/obj/machinery/light{ - dir = 4 +"vlx" = ( +/obj/machinery/vr_sleeper, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/engineering) -"vuC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"vyf" = ( -/obj/structure/lattice, -/turf/open/space, -/area/engine/engineering) +/area/crew_quarters/fitness/recreation) "vyx" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -76513,20 +76824,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"vJQ" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space) "vLD" = ( /obj/structure/lattice, /turf/open/space/basic, /area/space) -"waK" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "wgw" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, @@ -76541,13 +76842,10 @@ }, /turf/open/floor/plating, /area/security/prison) -"wmn" = ( -/obj/structure/particle_accelerator/particle_emitter/left{ - icon_state = "emitter_left"; - dir = 4 - }, +"wmt" = ( +/obj/effect/decal/cleanable/flour, /turf/open/floor/plating, -/area/engine/engineering) +/area/maintenance/port/aft) "wxc" = ( /obj/machinery/door/airlock/external{ name = "Atmospherics External Airlock"; @@ -76558,22 +76856,6 @@ }, /turf/open/floor/plating, /area/engine/atmos) -"wBK" = ( -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"wEo" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "wFH" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -76588,9 +76870,12 @@ /turf/closed/wall, /area/science/circuit) "wOE" = ( -/obj/machinery/droneDispenser, /turf/open/floor/plating, /area/maintenance/aft) +"wOY" = ( +/obj/structure/fans/tiny/invisible, +/turf/open/space/basic, +/area/space) "wPk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -76604,12 +76889,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/science/misc_lab) -"xfJ" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/engine/engineering) "xkG" = ( /obj/item/integrated_electronics/wirer, /obj/structure/table/reinforced, @@ -76628,6 +76907,17 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) +"xwG" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Library Maintenance"; + req_one_access_txt = "12;37" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/library) "xyp" = ( /obj/docking_port/stationary{ dheight = 1; @@ -76644,6 +76934,13 @@ /obj/structure/chair/comfy, /turf/open/floor/plasteel, /area/science/misc_lab) +"xEf" = ( +/obj/structure/table, +/obj/item/flashlight/lamp{ + on = 0 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "xVl" = ( /turf/closed/wall, /area/hallway/secondary/service) @@ -76654,6 +76951,21 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"ybn" = ( +/obj/structure/chair/comfy/brown, +/obj/effect/landmark/blobstart, +/turf/open/floor/engine/cult, +/area/library) +"ydn" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = 3 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "ygk" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -76663,14 +76975,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"yhr" = ( -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/obj/structure/grille, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plating/airless, -/area/engine/engineering) "ykE" = ( /obj/machinery/light, /turf/open/floor/plasteel/white, @@ -86035,7 +86339,7 @@ aaa aaa aaa aaa -aaa +wOY aSH aUb aVt @@ -86549,7 +86853,7 @@ aaa aaa aaa aaa -aaa +wOY aSI aRA aVv @@ -88603,7 +88907,7 @@ obX aDa aDa aDa -aDa +lGS cWM cXR cYG @@ -93265,10 +93569,10 @@ bPJ alK cgH dux -bUU -bVX -bXB -bYG +iLj +dvt +bXE +hvt dux dux dux @@ -93522,8 +93826,8 @@ aqK alK dit dux -bUV -duH +ydn +wmt bXC bYH dux @@ -93780,12 +94084,12 @@ alK bSu dux bUW -bVZ +bXE bXD bYI bZO cbt -cdc +oZg dux dux csT @@ -94037,11 +94341,11 @@ alK bSr dux bUX -bWa -bXE -bYJ +bUU +gqA +xEf dux -dvt +mWg cdd dux cfC @@ -94294,7 +94598,7 @@ bRf bSv dux dux -dux +hIt dux dux dux @@ -94551,7 +94855,7 @@ alK bOf bOv alC -dbk +qhe dux bYK bZP @@ -95071,7 +95375,7 @@ bYM bZP cbx cdh -bXE +bUV dux dwc cia @@ -95585,7 +95889,7 @@ bYN dux cbz bXE -ces +bYJ dux dwe cic @@ -97119,7 +97423,7 @@ bue bzE bRj bSB -bPR +qVR bue div bXI @@ -97377,8 +97681,8 @@ bPU bRk bSC bTA -bue -bWd +xwG +pMX alC dux dvq @@ -97633,7 +97937,7 @@ bue bue bue bue -bTB +bue bue bWd aqK @@ -97888,11 +98192,11 @@ bzE bMO bue bPV +qLf bRl bue -bTC -atw -bWe +alC +bWd bXJ dux bZV @@ -98144,11 +98448,11 @@ cVe cVf cVi bOm +ybn bPW -bRm +vgd bue auF -alC aXt aqO dux @@ -98402,10 +98706,10 @@ bue bue bue bPX +nXA bRn bue alK -alK bWf bXK bXK @@ -101671,7 +101975,7 @@ aaa aaa aaa aaa -aaa +wOY abL acf acy @@ -102185,7 +102489,7 @@ aaa aaa aaa aaa -aaa +wOY abN ach aax @@ -105325,7 +105629,7 @@ bjf bkG bmF boz -bqR +boy bsU bsU bsU @@ -111736,8 +112040,8 @@ aOD aPK aQV aOv -aTt -sZD +aTz +aUM aUM aYe dnh @@ -112815,7 +113119,7 @@ cJa cpG kVo dDu -kVo +gra cuc cuZ dyp @@ -113071,9 +113375,9 @@ dvY dvY dvY dvY -dvY -dvY -qnJ +cuZ +sFv +cuZ cuZ upN cxN @@ -113328,11 +113632,11 @@ cmY dvY cpH cqX -cpH -dvY -cud cuZ -eXy +fFM +cud +kxk +cxO cxO cxO dGH @@ -113585,10 +113889,10 @@ cmZ cor cpI cqY -crY -dvY +cuZ +jLY +lzk lzk -gix cwd kfu cxP @@ -113762,11 +114066,11 @@ acP afz agz dBY -ahl -aiW -aja +vlx +vlx +etr +alk alk -amB anK aoZ aqk @@ -113842,8 +114146,8 @@ dvY dvY cpJ cqZ -dvY -dvY +cuZ +cuZ obb krD kOt @@ -114100,14 +114404,14 @@ cos dxh clY crZ -dvY +cuZ tVY krD oLW gGT wPk dGH -cxO +dka krD aaf aaa @@ -114269,9 +114573,9 @@ aaa aaf aaa acP -aaa +wOY adF -aaa +wOY acP afB agz @@ -114357,7 +114661,7 @@ cot cnb cra csa -dvY +cuZ lMz krD ocT @@ -114619,9 +114923,9 @@ mjJ krD eqq llb -hfJ +uTS +cxO cxO -tjH krD aaa aaa @@ -114878,7 +115182,7 @@ lsv txj eEe cxO -ngl +cxO krD aaa aaa @@ -115135,7 +115439,7 @@ jyv ohj nnK cxO -gfh +cxO krD aaa aaa @@ -115903,9 +116207,9 @@ ctl aaa aaf aaf -aaf -aaf -aaf +anT +anT +anT aaf aaf aaf @@ -117125,12 +117429,12 @@ aEn aFv aGV aHX -aCX -aCX -aCX -aCX +aEi +aKA +aMc +aEi aOO -aCX +aEi aRp aSv aTH @@ -117632,7 +117936,7 @@ avt awJ axS axY -nDB +aCO ddW aCT aEp @@ -117892,18 +118196,18 @@ axY aAr ddX aCU -aCW -aCX +aEq +aTO aGX -aCX -aCX -aCX +aHZ +aJp +aTO aSB -aCX -aCX -aCX +aTO +aOR +aQa aGX -aBK +aTO aTK aVd aBI @@ -118146,21 +118450,21 @@ avv axY axU ayS -jGF -ddX +dCk +ddY deb -aCX -aCX -qMg +deh +aFz +aCZ deM -eMP -hKs +axY +aCZ aMg -vrp +aCZ dfh -aCX -aCX -aBK +deM +aCZ +aFz deh aVe axY @@ -118406,21 +118710,21 @@ ddP aAt aBL deb -aCX +dei aFA -axY -axY deB -axY +deB +deB +deB aMh -axY -axY -oXn -aCX +deB +deB +deB +deB aSz -aTK -vuC -aJu +aTM +aVe +apc aYu aZL bbB @@ -118663,21 +118967,21 @@ aAu ddQ aBM aCV -aCX +aEr aFB -axY +aGY daW dBw aKF aMi cpR -axY +dfi aQd -aCX +dBA aSA -aTK -vuC -aJu +aTN +aVf +apc aYu aZM bbC @@ -118920,21 +119224,21 @@ ayV aAv aBN aCW -aCX -aFA +aEr +aFC aGZ -qzA -aJu +aGZ +dlI aKG -aJu +aMj dBy -aGZ -oXn -aCX +dlI +aQe +aRv dfD -aTK -hTv -aJu +aTN +aVe +apc aYu aZN bbD @@ -119174,24 +119478,24 @@ avz axY axY ayW -tUB +bTq aBO aCX -aCX +dej aFC -axY -qzA -aJu +deC +deC +dlI aKH aMk aNu -axY +dlI dfp -aCX -aBO +dfp +dfE dfP dfY -axY +dgc aYu cXA cXA @@ -119429,28 +119733,28 @@ ath ajb avA axY -axY +axZ ayX -axY -axY +ddS +bUw aCY -aCX +dek der -axY -qzA -aJu +deD +dlI +aJv aKI tDM -dBy -axY +dfb +dfj dlI -iQV -axY -axY -ayX -axY -atm -apc +deD +dfF +aTN +aVe +aWH +dgi +dgc aqq aqr aWu @@ -119688,27 +119992,27 @@ avB axY ddO bUw -aJu -axY -axY -axY -axY +ddT +ddZ +ded +del +des djt -qzA +daY daZ dbb -wmn -dBy +aMk +aNv +dfk +dfq djt -axY -axY -axY -aJu -bUw -ovJ -axY -atm -jKK +dfG +dfQ +dfZ +apc +apc +dgo +apc cXZ atm bfZ @@ -119943,34 +120247,34 @@ ajb ajb avC axY -axY -lim -axY -axY -bTq +aya +bUw +ddU +aBQ +dee aEr -bTq +des djt -qzA -aJu -xfJ +daY +daZ +dbb dfa aNv -djt -bTq +dfk +daY djx -axY -axY -jzM -axY -axY +dfG +cXz +aVe atm -avG +alr +dgp +cXI cYj atm -aaa +wOY adF -aaa +wOY bhT bpv brL @@ -119986,7 +120290,7 @@ bFS bHy bIV bKC -bAQ +bMi bNU bMg bQV @@ -120200,29 +120504,29 @@ dps dpL avD axY -axY -waK -bTq -bTq -bTq -bTq -bTq +ddO +bUw +ddV +aBQ +dee +aEr +aKL djt +daY +deS +dbb +aMk +aNv +dfm +daY djt -djt -aRm -djt -djt -djt -bTq -bTq -bTq -bTq +dbg +dfR dga dgd dgj -atm -lNZ +dgp +alr atm atm aaa @@ -120243,8 +120547,8 @@ bFT bHz bIW bKD -bCi -bCi +dhe +dhg bPu bPu bPu @@ -120459,29 +120763,29 @@ avE axY ayc aza -bTq -aaa -mJy -dem +aAw +bUw +aCY dem +aFD deD -deD -deD +dlI +dlI deV -dem -dem -dem -dem -dem +dlN +dfc +dlI +dlI +deD dfI -aaa -bTq -bTq +dfS +aVh +aaf aYx dgr -qcZ -aaa -aaa +dgw +dgA +dgI aaa aaa aaa @@ -120501,7 +120805,7 @@ bHy bIX bKE bKE -bKE +dhh bPv bKE bKE @@ -120714,31 +121018,31 @@ apm dnS avB axY -lwo +axY bTq aAx -qxk +aBO aIe aOS deu -deu -deu -deu -deu -deu -deu -deu -deu +deI +deN +deI +deW +aMm +dfd +deN +dft dBB -aIe -qxk +dbh +dfT aVh -bTq +aaa aYx -dgr -qcZ -aaa -aaa +dgf +dgj +ack +dgJ aaa aaa aaa @@ -120758,7 +121062,7 @@ bHA bIY bKF bMk -bNV +dhi bPw bQW bSj @@ -120971,31 +121275,31 @@ atk aux avF dqT -fca -kXU -aAx -aaa -aIe +dqT +aaf +ack +dea +aIc den dev -aav -aav -dev -vLD -aaa -aav -aav -dev +deJ +deO +deU +deX +dBx +dfe +dBz +dfu dfz -aIe -aaa -aVh +dfJ +dfU +dga dge azd -dgr -qcZ -aaa -aaa +azd +azd +dgB +dgK aaa cUL aaa @@ -121015,7 +121319,7 @@ bHB bIZ bKG bMl -bKG +dhj bIZ bKG bMl @@ -121228,31 +121532,31 @@ atl auy dnS dqT -iNQ -bTq -aAx -qxk +dqT +aaf +ack +ack def aCZ -aav -aav -aav -vLD -qxk -aaa -aav -aav -aav -qyp dew -qxk -aVh -bTq -dgg -dgr -qcZ -aaa -aaa +aCZ +axY +axY +aCZ +aCZ +aCZ +axY +axY +aCZ +dew +aCZ +aVe +dgf +dgk +dgt +dgk +dgv +dgJ anT aaf aaf @@ -121272,7 +121576,7 @@ bza bJa bza bFX -bza +dhk bJa bza bFX @@ -121484,52 +121788,52 @@ apm apm dnh dnS +dnz dqT -hYG -wBK -aAx -aaa -aIe -den -aav -aav -aaa -aaa -qxk -aaa -aaa -aav -aav -dfz -aIe -aaa -aVh +aaf +aaf +aaf +def +ddZ +dex +aJu +ddZ +ddZ +ddZ +aMo +dff +ddZ +ddZ +aJu +dex +ddZ +aVe aWK dgk -dgr -qcZ -aaa -aaa +dgt +dgk +dgB +dgM dgN dgO dgO -aaf -aav -bpw +dgw +dgO +dgS dgO dgO -aaf -aaf -aaf -aaf +dgw +dgw +dgw +dgw bCz -aaf -bFY -aaf -bJb -aaf -bFY -aaf +dgw +dha +dgw +dhc +dgw +dha +dhl bJb aaf bFY @@ -121742,38 +122046,38 @@ dnh auz dqp dqT -axY -iNQ -aAx -vJQ -def -aCZ +dqT aaa aaa aaa +bTq +dep +dey +aHa ddZ -deu -mGY -aaa -vLD -dev -qyp -dew -vJQ -aVh +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +dfA +dfM +dfV +dgb dgg -axY -dgr -qcZ -aaa -aaa +azd +azd +azd +dgv +aaf anT aaa aaa aaf aaf bpx -dgO +aaf aaf aaf aaa @@ -121999,31 +122303,31 @@ dni auA dnS dqT -axY -oru -bTq -qxk -aIe -den -vLD -qxk -qxk -den -hiq -aMo -qxk -qxk -vLD -dfz -aIe -qxk -bTq -iKX -axY -dgr -qcZ aaa aaa +aaa +aaa +axY +deq +dey +deK +ddZ +ddZ +ddZ +aMo +ddZ +ddZ +ddZ +dfB +dfM +dfW +axY +aWK +dgk +dgt +dgk +dgB +aaa anT aaa aaa @@ -122256,31 +122560,31 @@ dnh auB avG dqT -axY -iNQ -aAx -vJQ -def -aCZ -dev -vLD aaa -gBt +aaa +aaa +aaa +axY +aJu +deA +deL +aJu +aJu deY -tYJ -aaa -aaa -aaa -qyp -dew -vJQ -aVh -dgg axY -dgr -qcZ -aaa -aaa +dfg +aJu +aJu +dfC +dfO +ddZ +axY +dgh +dgk +dgk +dgk +dgv +aaf anT aaa aaa @@ -122513,30 +122817,30 @@ dnh dnh jKK dqT -yhr -cYV -aAx -aaa -aIe -den -aav -aav +aaf aaa aaa -qxk aaa -aaa -aav -aav -dfz -aIe -aaa -aVh -qiO +axY +axY +axY +axY +axY +axY +axY +axY +axY +axY +axY +axY +axY +axY +axY +aWK dgm -dgr -qcZ -aaa +dgu +dgm +dgB aaa anT aaa @@ -122770,31 +123074,31 @@ atn bOY avG dqT -iNQ -bTq -aAx -qxk -eCm -aCZ -aav -aav +aaf aaa aaa -qxk -vLD -aaa -aav -aav -qyp -ixJ -qxk -glg -bTq -dgg -dgr -qcZ aaa aaa +aaf +aaa +aaf +aaa +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaf +aaf +ack +ack +aye +dgv +aye +dgv +aaf anT aaf aaf @@ -123027,28 +123331,28 @@ dnh dnh lNZ dqT -pdI -kXU -aAx -aaa -vJQ -den -dev -aav +aaf aaa aaa -vLD -dev -aav -aav -dev -dfz -vJQ aaa -aVh -dge -eTm -dgr +aaa +aaf +aaa +aaf +aaa +aaa +aaf +aaa +aaf +aaa +aaf +aaa +aaa +aaf +aaf +aaf +aaa +aaa aaf aaa aaa @@ -123284,28 +123588,28 @@ aaa aaf ack dqT -axY -axY -bTq -ili -ili -sef -ili -ili -ili -ili -wEo -ili -ili -ili -ili -giG -ili -ili -bTq -axY -axY -dgr +aaf +anT +anT +anT +anT +aaf +anT +anT +anT +anT +anT +anT +aqB +anT +anT +anT +anT +anT +anT +aaf +aaa +aaa aaf aaa aaa @@ -123541,27 +123845,27 @@ aaf aaf ack aaf -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY +aaa +aaa +aaa +aaf +aaa +aaa +bpu +bpu +bpu +bpu +bpu +bpu +bpu +bpu +bpu +bpu +aaa +aaa +aaa +aaf +aaf aaf aaf aaa @@ -123797,27 +124101,27 @@ aaa aaa aaa aaa -lMJ -qcZ -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -axY -qcZ -vyf +aaa +aaa +aaa +aaa +aaf +aaf +aaf +anT +anT +anT +anT +aqB +anT +anT +anT +anT +aqB +aaf +aaf +aaf +aaf aaa aaf aaf @@ -124054,7 +124358,7 @@ aaa aaa aaa aaa -vLD +aaa aaa aaa aaa diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 62f8080c28..6dd96ca6d1 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -1109,9 +1109,10 @@ }, /area/mine/living_quarters) "dn" = ( -/obj/machinery/cryopod, -/obj/machinery/computer/cryopod{ - pixel_y = 26 +/obj/structure/table, +/obj/item/storage/firstaid/toxin{ + pixel_x = 3; + pixel_y = 3 }, /turf/open/floor/plasteel/whiteblue/side{ dir = 5 @@ -1244,10 +1245,6 @@ "dE" = ( /obj/structure/table, /obj/item/storage/firstaid/regular, -/obj/item/storage/firstaid/toxin{ - pixel_x = 3; - pixel_y = 3 - }, /turf/open/floor/plasteel/whiteblue/side{ dir = 4 }, diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 1390460fd2..79c28f5947 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -1505,9 +1505,7 @@ /area/bridge) "acZ" = ( /obj/structure/chair/comfy/brown{ - color = "#c45c57"; - dir = 4; - icon_state = "comfychair" + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -1685,7 +1683,7 @@ }, /obj/machinery/power/apc{ dir = 4; - name = "Starboard Bow Maintenace APC"; + name = "Starboard Bow Maintenance APC"; areastring = "/area/maintenance/starboard/fore"; pixel_x = 26 }, @@ -2115,7 +2113,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/power/apc{ dir = 8; - name = "Fore Maintenace APC"; + name = "Fore Maintenance APC"; areastring = "/area/maintenance/fore"; pixel_x = -26; pixel_y = 3 @@ -3352,9 +3350,7 @@ /area/crew_quarters/heads/captain/private) "agQ" = ( /obj/structure/chair/comfy/brown{ - color = "#c45c57"; - dir = 4; - icon_state = "comfychair" + dir = 4 }, /obj/structure/cable/white{ icon_state = "4-8" @@ -4912,9 +4908,7 @@ }, /area/hallway/primary/starboard/fore) "ajH" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/quartermaster/storage) @@ -4949,13 +4943,15 @@ /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) "ajM" = ( -/obj/structure/table/reinforced, /obj/machinery/requests_console{ department = "Cargo Office"; departmentType = 0; name = "Cargo Office RC"; pixel_x = 32 }, +/obj/machinery/computer/bounty{ + dir = 8 + }, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -5622,7 +5618,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard/fore) "akL" = ( -/obj/structure/closet/wardrobe/cargotech, +/obj/machinery/vending/wardrobe/cargo_wardrobe, /turf/open/floor/plasteel/brown{ dir = 8 }, @@ -5924,26 +5920,20 @@ icon_state = "L14" }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/hallway/primary/fore) "alt" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Supply department is."; - dir = 4; - icon_state = "direction_supply"; - name = "supply department" +/obj/structure/sign/directions/supply{ + dir = 4 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Command department is."; +/obj/structure/sign/directions/command{ dir = 1; - icon_state = "direction_bridge"; - name = "command department"; pixel_y = 8 }, /obj/structure/sign/directions/science{ pixel_y = -8 }, /turf/closed/wall, -/area/hallway/primary/central) +/area/hallway/primary/fore) "alu" = ( /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) @@ -6374,6 +6364,10 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/central) "aml" = ( +/obj/structure/closet/emcloset, +/obj/structure/cable/white{ + icon_state = "1-4" + }, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -6381,15 +6375,14 @@ /turf/open/floor/plasteel/vault/side{ dir = 9 }, -/area/hallway/primary/central) +/area/hallway/primary/fore) "amm" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 +/obj/structure/cable/white{ + icon_state = "0-8" }, -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/fore) "amn" = ( /obj/structure/cable/white{ icon_state = "0-4" @@ -6481,7 +6474,9 @@ }, /area/hallway/primary/starboard/fore) "amv" = ( -/obj/structure/table/reinforced, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/plasteel/brown{ dir = 10 }, @@ -6779,6 +6774,7 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/fore) "and" = ( +/obj/structure/closet/firecloset, /obj/structure/sign/nanotrasen{ pixel_y = -32 }, @@ -6789,7 +6785,11 @@ /turf/open/floor/plasteel/vault/side{ dir = 8 }, -/area/hallway/primary/central) +/area/hallway/primary/fore) +"ane" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/ai_monitored/storage/eva) "anf" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/effect/turf_decal/stripes/end{ @@ -7065,11 +7065,8 @@ /obj/structure/sign/directions/security{ dir = 8 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Command department is."; +/obj/structure/sign/directions/command{ dir = 1; - icon_state = "direction_bridge"; - name = "command department"; pixel_y = 8 }, /turf/closed/wall, @@ -7632,7 +7629,6 @@ }, /area/teleporter) "aoJ" = ( -/obj/machinery/droneDispenser, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -8676,11 +8672,11 @@ }, /area/security/brig) "aqK" = ( -/obj/structure/closet/secure_closet/security/sec, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9592,17 +9588,13 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "asJ" = ( -/obj/structure/closet/wardrobe/red, -/obj/item/clothing/under/rank/security/grey, -/obj/item/clothing/under/rank/security/grey, -/obj/item/clothing/under/rank/security/grey, -/obj/item/storage/backpack/satchel/sec, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, /obj/structure/reagent_dispensers/peppertank{ pixel_y = -32 }, +/obj/structure/closet/secure_closet/security/sec, /turf/open/floor/plasteel/vault/corner{ dir = 4 }, @@ -10011,7 +10003,6 @@ /obj/structure/cable/white{ icon_state = "0-2" }, -/obj/structure/closet/wardrobe/atmospherics_yellow, /obj/effect/turf_decal/bot, /obj/machinery/power/apc/highcap/ten_k{ areastring = "/area/engine/atmos"; @@ -10023,6 +10014,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/structure/table/reinforced, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, /turf/open/floor/plasteel/caution{ dir = 4 }, @@ -10212,9 +10210,7 @@ /turf/open/floor/plasteel, /area/storage/primary) "atU" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -10353,7 +10349,6 @@ /turf/open/floor/plasteel/vault, /area/crew_quarters/bar/atrium) "aul" = ( -/obj/structure/closet/gmcloset, /obj/item/wrench, /obj/item/stack/sheet/glass{ amount = 30 @@ -10367,6 +10362,7 @@ name = "Station Intercom"; pixel_x = 26 }, +/obj/structure/closet, /turf/open/floor/plasteel/vault, /area/crew_quarters/bar/atrium) "aum" = ( @@ -11437,17 +11433,11 @@ /turf/open/floor/plasteel, /area/engine/atmos) "awK" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/mask/gas, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/mask/gas, /obj/structure/cable/white{ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/wardrobe/atmos_wardrobe, /turf/open/floor/plasteel/caution{ dir = 4 }, @@ -11470,9 +11460,7 @@ /turf/open/floor/plasteel, /area/maintenance/port/fore) "awN" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/door/poddoor/preopen{ id = "atmoslock"; name = "Atmospherics Lockdown Blast door" @@ -11592,17 +11580,8 @@ }, /area/crew_quarters/bar/atrium) "axc" = ( -/obj/structure/closet/gmcloset, -/obj/item/wrench, -/obj/item/stack/sheet/glass{ - amount = 30 - }, -/obj/item/stack/sheet/metal{ - amount = 30 - }, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, /obj/machinery/light, +/obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) "axd" = ( @@ -11825,14 +11804,13 @@ pixel_y = 24 }, /obj/effect/turf_decal/bot, -/obj/structure/closet/wardrobe/grey, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/crew_quarters/dorms) "axG" = ( /obj/effect/turf_decal/bot, -/obj/structure/closet/wardrobe/black, +/obj/machinery/cryopod, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -12129,18 +12107,6 @@ dir = 4 }, /area/crew_quarters/dorms) -"ayy" = ( -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 4 - }, -/area/crew_quarters/dorms) "ayz" = ( /turf/open/floor/plasteel/grimy, /area/crew_quarters/dorms) @@ -12529,8 +12495,6 @@ /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) "azB" = ( -/obj/structure/table, -/obj/item/camera, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) @@ -15131,6 +15095,9 @@ codes_txt = "patrol;next_patrol=9.4-EnteringDorms"; location = "9.3-Engi" }, +/obj/structure/cable/white{ + icon_state = "2-4" + }, /turf/open/floor/plasteel/neutral, /area/engine/break_room) "aFF" = ( @@ -15491,6 +15458,7 @@ name = "Engineering Foyer APC"; pixel_y = -26 }, +/obj/structure/cable/white, /turf/open/floor/plasteel/yellow/corner{ dir = 8 }, @@ -16236,7 +16204,7 @@ /area/hydroponics) "aHO" = ( /obj/machinery/door/airlock/maintenance_hatch{ - name = "Hydroponic's Maintenance"; + name = "Hydroponics Maintenance"; req_access_txt = "35" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -16668,10 +16636,10 @@ /area/hydroponics) "aIF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/closet/wardrobe/botanist, /obj/structure/sign/poster/random{ pixel_y = 32 }, +/obj/structure/closet/secure_closet/hydroponics, /turf/open/floor/plasteel/vault/side, /area/hydroponics) "aIG" = ( @@ -16789,9 +16757,9 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen) "aIS" = ( -/obj/structure/closet/chefcloset, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, +/obj/machinery/vending/wardrobe/chef_wardrobe, /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen) "aIT" = ( @@ -17427,9 +17395,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aKj" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -17864,6 +17830,7 @@ /obj/item/seeds/wheat, /obj/item/reagent_containers/food/snacks/grown/tomato, /obj/effect/turf_decal/bot, +/obj/item/paper/guides/jobs/hydroponics, /turf/open/floor/plasteel/vault/side{ dir = 1 }, @@ -17881,6 +17848,7 @@ }, /obj/item/seeds/tower, /obj/effect/turf_decal/bot, +/obj/item/book/manual/hydroponics_pod_people, /turf/open/floor/plasteel/vault/side{ dir = 1 }, @@ -18265,7 +18233,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/structure/closet/secure_closet/hydroponics, +/obj/machinery/vending/wardrobe/hydro_wardrobe, /turf/open/floor/plasteel/greenblue/side{ dir = 10 }, @@ -18666,18 +18634,17 @@ /turf/open/floor/plasteel, /area/janitor) "aNl" = ( -/obj/structure/closet/jcloset, /obj/machinery/light_switch{ pixel_y = -24 }, -/obj/item/flashlight, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, +/obj/structure/closet/l3closet/janitor, /turf/open/floor/plasteel, /area/janitor) "aNm" = ( -/obj/structure/closet/l3closet/janitor, /obj/effect/turf_decal/bot, +/obj/machinery/vending/wardrobe/jani_wardrobe, /turf/open/floor/plasteel/vault/side{ dir = 8 }, @@ -18694,12 +18661,6 @@ /area/hydroponics) "aNq" = ( /obj/machinery/hydroponics/constructable, -/obj/machinery/power/apc{ - dir = 2; - name = "Hydroponics APC"; - areastring = "/area/hydroponics"; - pixel_y = -26 - }, /obj/structure/cable/white, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -18978,10 +18939,7 @@ /turf/open/floor/engine, /area/engine/engineering) "aOa" = ( -/obj/machinery/power/supermatter_crystal/shard/engine{ - anchored = 1; - moveable = 0 - }, +/obj/machinery/power/supermatter_crystal/shard/engine, /turf/open/floor/engine, /area/engine/supermatter) "aOb" = ( @@ -19097,11 +19055,8 @@ }, /area/hallway/primary/central) "aOr" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Supply department is."; - dir = 4; - icon_state = "direction_supply"; - name = "supply department" +/obj/structure/sign/directions/supply{ + dir = 4 }, /obj/structure/sign/directions/science{ pixel_y = -8 @@ -20567,7 +20522,7 @@ /obj/item/pen, /obj/machinery/door/window/southleft{ name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab1"; @@ -20924,7 +20879,6 @@ /turf/closed/wall, /area/medical/medbay/zone3) "aSj" = ( -/obj/structure/closet/wardrobe/chemistry_white, /obj/machinery/airalarm{ dir = 4; pixel_x = -22 @@ -20937,6 +20891,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/structure/closet/secure_closet/medical1, +/obj/item/storage/box/beakers, +/obj/item/storage/box/pillbottles, /turf/open/floor/plasteel, /area/medical/chemistry) "aSk" = ( @@ -21196,10 +21153,10 @@ /turf/closed/wall/r_wall, /area/tcommsat/server) "aSP" = ( -/obj/structure/closet/wardrobe/engineering_yellow, /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/machinery/vending/wardrobe/engi_wardrobe, /turf/open/floor/engine, /area/engine/engineering) "aSR" = ( @@ -21425,13 +21382,11 @@ /turf/open/floor/plating, /area/medical/chemistry) "aTq" = ( -/obj/structure/closet/secure_closet/medical1, /obj/structure/window/reinforced, /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/item/storage/box/pillbottles, -/obj/item/storage/box/beakers, +/obj/machinery/vending/wardrobe/chem_wardrobe, /turf/open/floor/plasteel, /area/medical/chemistry) "aTr" = ( @@ -21520,7 +21475,7 @@ /obj/machinery/door/window/southleft{ dir = 4; name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab1"; @@ -22116,7 +22071,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/structure/closet/crate/bin, +/obj/machinery/libraryscanner, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -22840,10 +22795,14 @@ /turf/open/space, /area/asteroid/nearstation) "aWA" = ( -/obj/machinery/libraryscanner, /obj/machinery/newscaster{ pixel_x = -32 }, +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/light_switch{ + pixel_y = -24 + }, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -23110,28 +23069,9 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/asteroid/nearstation) -"aXe" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, -/obj/machinery/light_switch{ - pixel_y = -24 - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23 - }, -/turf/open/floor/plasteel/dark, -/area/library) "aXf" = ( -/obj/structure/table/wood, -/obj/item/folder, -/obj/item/pen/blue{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/pen/red, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, +/turf/closed/wall, /area/library) "aXg" = ( /obj/structure/bookcase/random/nonfiction, @@ -23149,6 +23089,7 @@ dir = 1; pixel_y = -22 }, +/obj/structure/closet/crate/bin, /turf/open/floor/plasteel/dark, /area/library) "aXj" = ( @@ -23442,19 +23383,18 @@ /turf/open/floor/plasteel, /area/maintenance/starboard) "aXL" = ( -/obj/machinery/door/morgue{ - name = "Curator's Study"; - req_access_txt = "37" +/obj/effect/landmark/start/librarian, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/wood{ + icon_state = "wood-broken2" }, /area/library) "aXM" = ( -/obj/machinery/status_display, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, +/obj/machinery/vending/wardrobe/curator_wardrobe, +/turf/open/floor/wood, /area/library) "aXN" = ( /obj/machinery/door/airlock/maintenance_hatch{ @@ -23509,12 +23449,11 @@ /turf/open/floor/plasteel, /area/medical/medbay/zone3) "aXP" = ( -/obj/structure/closet/wardrobe/white/medical, /obj/structure/extinguisher_cabinet{ pixel_y = 32 }, -/obj/item/storage/backpack/satchel/med, /obj/effect/turf_decal/bot, +/obj/machinery/vending/wardrobe/medi_wardrobe, /turf/open/floor/plasteel, /area/medical/medbay/zone3) "aXQ" = ( @@ -23749,9 +23688,6 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/science/research) "aYp" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" - }, /obj/structure/extinguisher_cabinet{ pixel_x = 24 }, @@ -23760,6 +23696,7 @@ c_tag = "Research Division South"; dir = 8 }, +/obj/machinery/vending/wardrobe/science_wardrobe, /turf/open/floor/plasteel/whitepurple/corner, /area/science/research) "aYq" = ( @@ -23846,37 +23783,30 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "aYw" = ( -/obj/structure/destructible/cult/tome, -/obj/item/book/codex_gigas, /obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/light_switch{ - pixel_y = 24 + dir = 8 }, +/obj/structure/table/wood, +/obj/item/taperecorder, /turf/open/floor/wood{ icon_state = "wood-broken6" }, /area/library) "aYx" = ( -/obj/effect/landmark/start/librarian, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, +/obj/structure/chair/comfy/brown, /turf/open/floor/wood, /area/library) "aYy" = ( -/obj/structure/bookcase{ - name = "Forbidden Knowledge" - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/machinery/light/small{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/rack{ + icon = 'icons/obj/stationobjs.dmi'; + icon_state = "minibar"; + name = "skeletal minibar" + }, +/obj/item/storage/fancy/candle_box, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32 + }, /turf/open/floor/wood, /area/library) "aYz" = ( @@ -24236,15 +24166,15 @@ /turf/closed/wall, /area/maintenance/port) "aZu" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, /obj/machinery/status_display{ pixel_y = -32 }, /obj/machinery/newscaster{ pixel_x = -32 }, +/obj/structure/table/wood, +/obj/item/storage/photo_album, +/obj/item/camera, /turf/open/floor/wood, /area/library) "aZv" = ( @@ -24257,23 +24187,22 @@ name = "Station Intercom"; pixel_y = -26 }, +/obj/item/paper_bin, +/obj/item/pen, /turf/open/floor/wood{ icon_state = "wood-broken" }, /area/library) "aZw" = ( -/obj/structure/table/wood, -/obj/item/taperecorder, -/obj/item/camera, /obj/machinery/ai_status_display{ pixel_y = -32 }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 32 - }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, +/obj/structure/bookcase{ + name = "Forbidden Knowledge" + }, /turf/open/floor/wood, /area/library) "aZy" = ( @@ -25784,7 +25713,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/structure/closet/crate/bin, +/obj/machinery/vending/wardrobe/robo_wardrobe, /turf/open/floor/plasteel, /area/science/robotics/lab) "bcz" = ( @@ -26189,7 +26118,6 @@ /turf/closed/wall/rust, /area/science/robotics/lab) "bdt" = ( -/obj/structure/closet/wardrobe/robotics_black, /obj/machinery/power/apc{ dir = 8; name = "Robotics Lab APC"; @@ -26201,6 +26129,7 @@ icon_state = "0-4" }, /obj/effect/turf_decal/bot, +/obj/structure/closet/crate/bin, /turf/open/floor/plasteel/vault, /area/science/robotics/lab) "bdu" = ( @@ -26870,14 +26799,10 @@ /turf/closed/wall, /area/medical/medbay/zone3) "beH" = ( -/obj/structure/closet/wardrobe/red, /obj/machinery/newscaster{ pixel_x = -32 }, -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_y = -24 - }, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/red/side{ dir = 10 }, @@ -26899,6 +26824,10 @@ c_tag = "Security Checkpoint"; dir = 1 }, +/obj/item/radio/intercom{ + name = "Station Intercom"; + pixel_y = -24 + }, /turf/open/floor/plasteel/red/side{ dir = 6 }, @@ -27982,11 +27911,8 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bgX" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Supply department is."; - dir = 1; - icon_state = "direction_supply"; - name = "supply department" +/obj/structure/sign/directions/supply{ + dir = 1 }, /obj/structure/sign/directions/science{ dir = 1; @@ -28443,7 +28369,6 @@ }, /area/maintenance/starboard/aft) "bhZ" = ( -/obj/structure/closet/wardrobe/chaplain_black, /obj/machinery/light_switch{ pixel_y = 24 }, @@ -28454,6 +28379,7 @@ c_tag = "Chaplain's Quarters"; dir = 2 }, +/obj/machinery/vending/wardrobe/chap_wardrobe, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -30730,6 +30656,13 @@ /area/engine/atmos) "bxJ" = ( /obj/effect/landmark/event_spawn, +/obj/machinery/computer/cryopod{ + pixel_x = 30 + }, +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" + }, /turf/open/floor/plasteel/neutral/side{ dir = 4 }, @@ -30949,10 +30882,6 @@ dir = 1 }, /area/engine/atmos) -"bVI" = ( -/obj/machinery/cryopod, -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) "bYE" = ( /obj/structure/sign/warning/fire, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -31018,6 +30947,14 @@ }, /turf/open/floor/plating/airless, /area/maintenance/disposal/incinerator) +"coR" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/smartfridge/disks{ + pixel_y = 2 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel/neutral, +/area/hydroponics) "csX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -31194,11 +31131,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"dsZ" = ( -/obj/structure/cable/white, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/hallway/primary/central) "dEa" = ( /obj/machinery/computer/arcade, /turf/open/floor/plasteel/vault{ @@ -31225,6 +31157,13 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"dQC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/vr_sleeper, +/turf/open/floor/plasteel/redyellow, +/area/crew_quarters/bar/atrium) "dYC" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -31233,18 +31172,6 @@ dir = 1 }, /area/hallway/primary/fore) -"dYZ" = ( -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 2; - name = "Cryogenics APC"; - pixel_y = -24 - }, -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) "eaf" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible, /obj/structure/cable{ @@ -31622,6 +31549,10 @@ }, /turf/open/floor/plating/asteroid/airless, /area/asteroid/nearstation) +"gPY" = ( +/obj/machinery/vr_sleeper, +/turf/open/floor/plasteel/redyellow, +/area/crew_quarters/bar/atrium) "gSv" = ( /obj/structure/cable{ icon_state = "4-8" @@ -31714,10 +31645,6 @@ }, /turf/open/floor/engine/co2, /area/engine/atmos) -"hQq" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/cryopod) "hUG" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -31826,6 +31753,10 @@ }, /turf/open/floor/plasteel/neutral, /area/hallway/primary/aft) +"iUq" = ( +/obj/machinery/status_display, +/turf/closed/wall, +/area/library) "iVw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -31891,6 +31822,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/engine/atmos) +"jnK" = ( +/obj/machinery/light_switch{ + pixel_y = 24 + }, +/obj/structure/destructible/cult/tome, +/obj/item/book/codex_gigas, +/turf/open/floor/wood, +/area/library) "jpv" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/light{ @@ -32069,9 +32008,6 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) -"lnn" = ( -/turf/closed/wall, -/area/hallway/primary/central) "lqz" = ( /obj/machinery/atmospherics/pipe/manifold/yellow/visible, /obj/effect/decal/cleanable/dirt, @@ -32286,19 +32222,6 @@ }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) -"mJQ" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/delivery, -/obj/item/book/manual/hydroponics_pod_people, -/obj/item/paper/guides/jobs/hydroponics, -/turf/open/floor/plasteel/neutral, -/area/hydroponics) -"mKg" = ( -/obj/machinery/computer/cryopod{ - pixel_x = 28 - }, -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) "mQi" = ( /turf/closed/wall/rust, /area/maintenance/starboard/central) @@ -32428,9 +32351,6 @@ dir = 5 }, /area/engine/atmos) -"ouS" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) "oxn" = ( /obj/machinery/power/compressor{ dir = 4; @@ -34363,8 +34283,6 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/vault/corner{ - tag = "icon-vaultcorner (NORTH)"; - icon_state = "vaultcorner"; dir = 1 }, /area/ai_monitored/turret_protected/ai) @@ -35143,17 +35061,11 @@ /turf/closed/wall/r_wall/rust, /area/ai_monitored/nuke_storage) "sOF" = ( -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Supply department is."; - dir = 4; - icon_state = "direction_supply"; - name = "supply department" +/obj/structure/sign/directions/supply{ + dir = 4 }, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Command department is."; +/obj/structure/sign/directions/command{ dir = 1; - icon_state = "direction_bridge"; - name = "command department"; pixel_y = 8 }, /obj/structure/sign/directions/science{ @@ -35402,6 +35314,16 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"tXd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/morgue{ + name = "Curator's Study"; + req_access_txt = "37" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/library) "udT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/power/apc{ @@ -35482,8 +35404,11 @@ }, /area/hallway/primary/starboard) "uuj" = ( -/obj/machinery/plantgenes, +/obj/machinery/plantgenes{ + pixel_y = 6 + }, /obj/effect/turf_decal/bot, +/obj/structure/table/glass, /turf/open/floor/plasteel/neutral, /area/hydroponics) "uuJ" = ( @@ -35551,9 +35476,6 @@ dir = 1 }, /area/engine/gravity_generator) -"uGl" = ( -/turf/open/floor/plasteel/purple, -/area/crew_quarters/cryopod) "uGq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/red/corner{ @@ -69861,7 +69783,7 @@ aQW aQW aQW aQW -aQW +sJI aQW sJI aQW @@ -70117,8 +70039,8 @@ aUc aUV aVN aWA -aXe aQW +jnK aYw aZu aQW @@ -70374,7 +70296,7 @@ aUd sKd aVO aWB -aVO +tXd aXL aYx aZv @@ -70888,7 +70810,7 @@ aUf aUX aVQ aWD -aVQ +iUq aQW aQW aQW @@ -73176,7 +73098,7 @@ auT avY awQ axG -ayy +axG bxJ aAH aBQ @@ -74216,7 +74138,7 @@ bxN sIB cfz ewT -mJQ +aKX lyp bIJ aOj @@ -74473,7 +74395,7 @@ arY aHM aIG aJP -aKX +aKW aMk aNr aHM @@ -74730,7 +74652,7 @@ aGG aHM aIH aJP -aKW +coR aMk aNr aOh @@ -77812,8 +77734,8 @@ aEX aFO aGO aHT -asg -avi +gPY +dQC avi axP ard @@ -78562,7 +78484,7 @@ akz als aml and -lnn +tKM aoS apY ara @@ -78818,8 +78740,8 @@ ajx akA alt amm -dYZ -ouS +amm +tKM aoT apZ ara @@ -79073,10 +78995,10 @@ agl abq ajy akB -dsZ -uGl -uGl -hQq +alk +aae +aae +anQ aoU aqa arg @@ -79330,10 +79252,10 @@ ahX aiC ajz akC -dsZ -bVI -mKg -hQq +alk +aae +aae +anQ aoV aqb arh @@ -79589,7 +79511,7 @@ ajA vWg alu amn -alu +ane alu syT alu diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index ac4d2a12dc..e00b845e55 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2,6 +2,16 @@ "aaa" = ( /turf/open/space/basic, /area/space) +"aad" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"abf" = ( +/obj/structure/bed, +/turf/open/floor/plating, +/area/maintenance/department/science) "aby" = ( /obj/structure/lattice, /obj/structure/grille, @@ -1078,6 +1088,7 @@ /area/security/prison) "aeD" = ( /obj/item/plant_analyzer, +/obj/item/shovel/spade, /turf/open/floor/plasteel/dark, /area/security/prison) "aeE" = ( @@ -1379,8 +1390,10 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAS) "afn" = ( -/obj/machinery/computer/cryopod{ - pixel_x = -28 +/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/structure/table, +/obj/machinery/newscaster{ + pixel_x = -32 }, /turf/open/floor/plasteel/dark, /area/security/prison) @@ -1470,6 +1483,9 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAS) "afC" = ( +/obj/machinery/light{ + dir = 8 + }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, @@ -1593,29 +1609,9 @@ "afU" = ( /turf/closed/wall, /area/security/execution/transfer) -"afV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/closed/wall, -/area/security/execution/transfer) -"afW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/security/execution/transfer) "afX" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/closed/wall, -/area/security/execution/transfer) -"afY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/closed/wall/r_wall, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plasteel/dark, /area/security/execution/transfer) "afZ" = ( /obj/machinery/vending/sustenance, @@ -1642,7 +1638,7 @@ /obj/machinery/shower{ dir = 8 }, -/obj/item/soap/nanotrasen, +/obj/item/bikehorn/rubberducky, /turf/open/floor/plasteel/freezer, /area/security/prison) "age" = ( @@ -1681,39 +1677,22 @@ /turf/open/floor/plating, /area/security/execution/transfer) "agj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"agk" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/flasher{ - id = "executionflash"; - pixel_y = 25 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"agl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, /obj/effect/turf_decal/stripes/line{ dir = 5 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, /area/security/execution/transfer) -"agm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, +"agl" = ( +/obj/structure/table/glass, +/obj/item/restraints/handcuffs, +/obj/item/razor, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/security/execution/transfer) "agn" = ( /obj/machinery/vending/cola, @@ -1724,11 +1703,13 @@ base_state = "right"; dir = 8; icon_state = "right"; - name = "Unisex Showers" + name = "Unisex Showers"; + req_access_txt = "0" }, /turf/open/floor/plasteel/freezer, /area/security/prison) "agp" = ( +/obj/item/soap/nanotrasen, /turf/open/floor/plasteel/freezer, /area/security/prison) "agq" = ( @@ -1765,23 +1746,20 @@ /area/ai_monitored/turret_protected/aisat_interior) "agv" = ( /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 4 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/security/execution/transfer) "agw" = ( -/obj/structure/bed, +/obj/machinery/door/airlock/security{ + aiControlDisabled = 1; + name = "Solutions Room"; + req_access_txt = "2" + }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "agx" = ( -/obj/machinery/sparker{ - dir = 2; - id = "executionburn"; - pixel_x = 25 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "agy" = ( @@ -1798,7 +1776,6 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/vault, /area/security/prison) "agA" = ( @@ -1818,12 +1795,12 @@ name = "Cell 1" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/vault, /area/security/prison) "agC" = ( /obj/machinery/door/airlock{ - name = "Unisex Restroom" + name = "Unisex Restroom"; + req_access_txt = "0" }, /turf/open/floor/plasteel/freezer, /area/security/prison) @@ -1845,25 +1822,14 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "agF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"agG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"agH" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 2 - }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plating, +/area/security/execution/transfer) +"agH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "agI" = ( @@ -1882,6 +1848,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/item/toy/plush/slimeplushie, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "agJ" = ( @@ -1899,6 +1866,7 @@ name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_y = 25; + req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -1923,6 +1891,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/item/toy/plush/lizardplushie, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "agM" = ( @@ -1943,6 +1912,7 @@ name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_y = 25; + req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -1986,38 +1956,25 @@ /area/space/nearstation) "agT" = ( /obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; name = "blast door" }, -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plating, /area/security/execution/transfer) -"agU" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "executionfireblast"; - name = "blast door" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/security/execution/transfer) "agV" = ( -/obj/machinery/door/poddoor/preopen{ - id = "executionfireblast"; - name = "blast door" - }, -/obj/machinery/atmospherics/pipe/simple/general/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/window/westright{ - dir = 1; - name = "Transfer Room"; +/obj/machinery/door/airlock/security{ + aiControlDisabled = 1; + name = "Solutions Room"; req_access_txt = "2" }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/security/execution/transfer) "agW" = ( /obj/machinery/flasher{ @@ -2076,46 +2033,49 @@ /turf/open/space, /area/space/nearstation) "ahj" = ( -/obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -28 - }, -/obj/structure/table, -/obj/item/storage/backpack/duffelbag/sec/surgery{ - pixel_y = 5 - }, -/obj/item/clothing/mask/balaclava, -/obj/item/mmi, +/obj/structure/rack, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plasteel/dark, +/obj/item/clothing/suit/straight_jacket, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath/medical, +/turf/open/floor/plasteel/darkred/side{ + dir = 8 + }, /area/security/execution/transfer) "ahk" = ( -/obj/structure/table, -/obj/item/folder/red{ - pixel_x = 3 - }, -/obj/item/taperecorder{ - pixel_x = -3 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"ahl" = ( /obj/machinery/button/flasher{ id = "executionflash"; - pixel_x = 24; - pixel_y = 5 + pixel_x = 6; + pixel_y = 27 }, /obj/machinery/button/door{ id = "executionspaceblast"; name = "Vent to Space"; - pixel_x = 25; - pixel_y = -5; + pixel_x = -6; + pixel_y = 32; req_access_txt = "7" }, -/obj/machinery/atmospherics/pipe/simple/general/hidden, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/machinery/button/ignition{ + id = "secigniter"; + pixel_x = 6; + pixel_y = 36 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 1 + }, +/area/security/execution/transfer) +"ahl" = ( +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/darkred/side{ + dir = 1 + }, /area/security/execution/transfer) "ahm" = ( /obj/machinery/door/airlock/security/glass{ @@ -2176,52 +2136,56 @@ /turf/open/space/basic, /area/space/nearstation) "ahu" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/table/glass, +/obj/item/flashlight/lamp, /obj/structure/cable{ - icon_state = "0-2" + icon_state = "4-8" }, -/turf/open/floor/plating, -/area/security/execution/transfer) -"ahv" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/plasteel/whitered/side{ dir = 9 }, -/turf/open/floor/plating, +/area/security/execution/transfer) +"ahv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/whitered/side{ + dir = 1 + }, /area/security/execution/transfer) "ahw" = ( -/obj/structure/window/reinforced{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /turf/open/floor/plating, /area/security/execution/transfer) "ahx" = ( -/obj/structure/table, -/obj/item/flashlight/lamp, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "ahy" = ( -/obj/structure/chair{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "ahz" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/machinery/button/ignition{ - id = "executionburn"; - pixel_x = 24; - pixel_y = 5 - }, /obj/machinery/button/door{ id = "executionfireblast"; name = "Transfer Area Lockdown"; @@ -2229,20 +2193,30 @@ pixel_y = -5; req_access_txt = "2" }, -/obj/machinery/atmospherics/pipe/simple/general/hidden, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 9; + pixel_x = 24; + pixel_y = 4 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 4 + }, /area/security/execution/transfer) "ahA" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/closed/wall/r_wall, /area/security/execution/transfer) "ahB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, +/turf/open/floor/plasteel, /area/security/prison) "ahC" = ( /obj/machinery/light{ @@ -2264,39 +2238,25 @@ pixel_y = 34; req_access_txt = "2" }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, +/turf/open/floor/plasteel, /area/security/prison) "ahD" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/prison) -"ahE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/prison) "ahF" = ( /obj/machinery/camera{ c_tag = "Brig Prison Hallway"; network = list("ss13","prison") }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; +/obj/machinery/computer/security/telescreen/prison{ network = list("prison"); pixel_y = 30 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, +/turf/open/floor/plasteel, /area/security/prison) "ahG" = ( /obj/structure/cable{ @@ -2318,9 +2278,7 @@ pixel_y = 34; req_access_txt = "2" }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, +/turf/open/floor/plasteel, /area/security/prison) "ahH" = ( /obj/structure/cable{ @@ -2341,9 +2299,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, +/turf/open/floor/plasteel, /area/security/prison) "ahJ" = ( /obj/machinery/power/apc/highcap/five_k{ @@ -2355,16 +2311,13 @@ /obj/structure/cable{ icon_state = "0-8" }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, +/turf/open/floor/plasteel, /area/security/prison) "ahK" = ( /obj/structure/table, /obj/item/melee/chainofcommand, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, +/obj/item/melee/baton, +/turf/open/floor/plasteel, /area/security/prison) "ahL" = ( /turf/closed/wall/r_wall, @@ -2415,87 +2368,60 @@ /turf/open/space/basic, /area/space/nearstation) "ahS" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" +/obj/structure/table/optable, +/turf/open/floor/plasteel/whitered/side{ + dir = 8 }, -/obj/structure/cable, -/turf/open/floor/plating, /area/security/execution/transfer) "ahT" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/structure/cable{ - icon_state = "4-8" +/turf/open/floor/plasteel/white, +/area/security/execution/transfer) +"ahU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plating, -/area/security/execution/transfer) -"ahU" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/obj/item/wrench, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plating, /area/security/execution/transfer) "ahV" = ( -/obj/structure/rack, -/obj/item/tank/internals/anesthetic{ - pixel_x = -3; - pixel_y = 1 - }, -/obj/item/tank/internals/oxygen/red{ - pixel_x = 3 +/obj/structure/cable{ + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 5 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/security/execution/transfer) "ahW" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, /obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ dir = 1 }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "ahX" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "ahY" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ aiControlDisabled = 1; @@ -2505,6 +2431,9 @@ /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "ahZ" = ( @@ -2565,15 +2494,11 @@ /area/security/prison) "aih" = ( /obj/structure/table, -/obj/item/razor{ - pixel_x = -6 - }, -/obj/item/assembly/signaler{ - pixel_x = 4 - }, /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, +/obj/item/restraints/handcuffs, +/obj/item/razor, /turf/open/floor/plasteel, /area/security/prison) "aii" = ( @@ -2590,7 +2515,7 @@ /obj/structure/closet/secure_closet/contraband/armory, /obj/item/poster/random_contraband, /obj/item/clothing/suit/security/officer/russian, -/obj/item/grenade/smokebomb, +/obj/item/grenade/plastic/c4, /turf/open/floor/plasteel/dark, /area/security/armory) "aik" = ( @@ -2657,55 +2582,44 @@ /turf/closed/wall, /area/maintenance/department/security/brig) "aiv" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 +/obj/structure/table/glass, +/obj/item/storage/backpack/duffelbag/sec/surgery{ + pixel_y = 5 }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/whitered/side, /area/security/execution/transfer) "aiw" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - layer = 2.4 +/obj/machinery/power/emitter/anchored{ + dir = 1; + state = 2 }, -/obj/machinery/door/window/southleft{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Armory"; - req_access_txt = "2" +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, /turf/open/floor/plating, /area/security/execution/transfer) "aix" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 +/turf/open/floor/plasteel/darkred/side{ + dir = 8 }, -/turf/open/floor/plasteel/dark, /area/security/execution/transfer) "aiy" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "aiz" = ( -/obj/machinery/light_switch{ - pixel_x = 25 +/turf/open/floor/plasteel/darkred/side{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/dark, /area/security/execution/transfer) "aiA" = ( /turf/closed/wall/r_wall, @@ -2757,6 +2671,7 @@ /area/security/prison) "aiK" = ( /obj/structure/table, +/obj/item/assembly/signaler, /obj/item/electropack, /turf/open/floor/plasteel/red/side, /area/security/prison) @@ -2868,16 +2783,16 @@ dir = 4; pixel_x = -23 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/darkred/side, /area/security/execution/transfer) "aja" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "1-4" }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/darkred/side, /area/security/execution/transfer) "ajb" = ( /obj/structure/closet/secure_closet/injection, @@ -2889,7 +2804,9 @@ /obj/structure/cable{ icon_state = "0-8" }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/darkred/side{ + dir = 4 + }, /area/security/execution/transfer) "ajc" = ( /obj/structure/closet/secure_closet/brig, @@ -3545,13 +3462,17 @@ name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; + req_access_txt = "0"; specialfunctions = 4 }, /turf/open/floor/plating, /area/maintenance/department/security/brig) "aku" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse{ - dir = 1 +/obj/machinery/atmospherics/components/trinary/mixer/flipped{ + dir = 1; + node1_concentration = 0.2; + node2_concentration = 0.8; + on = 1 }, /turf/open/floor/plating, /area/maintenance/department/security/brig) @@ -3572,7 +3493,6 @@ "akx" = ( /obj/structure/bodycontainer/crematorium, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -27 }, @@ -3770,12 +3690,6 @@ dir = 5 }, /area/security/main) -"akS" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/turf/open/floor/plasteel/dark, -/area/security/main) "akT" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -3878,14 +3792,16 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "alk" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/security/brig) "all" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/plating, /area/maintenance/department/security/brig) "alm" = ( @@ -4132,23 +4048,24 @@ /turf/open/floor/wood, /area/maintenance/department/crew_quarters/dorms) "alT" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 5 +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ + dir = 8 }, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/plating, /area/maintenance/department/security/brig) "alU" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ - dir = 1 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Supply to Security" }, -/obj/machinery/meter, /turf/open/floor/plating, /area/maintenance/department/security/brig) "alV" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 }, +/obj/machinery/meter, /turf/open/floor/plating, /area/maintenance/department/security/brig) "alW" = ( @@ -4459,7 +4376,7 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "amz" = ( -/obj/machinery/computer/security{ +/obj/machinery/computer/security/hos{ dir = 8 }, /turf/open/floor/carpet, @@ -4508,7 +4425,6 @@ name = "Atmospherics Maintenance"; req_access_txt = "12;24" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plating, /area/maintenance/department/security/brig) "amI" = ( @@ -4759,7 +4675,7 @@ "anm" = ( /obj/machinery/door/airlock/maintenance/abandoned{ name = "Pete's Speakeasy"; - req_access_txt = "12" + req_access_txt = "0" }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) @@ -4781,6 +4697,9 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 5 + }, /turf/open/floor/plating, /area/maintenance/department/security/brig) "ans" = ( @@ -4790,7 +4709,7 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 5 + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/security/brig) @@ -4823,9 +4742,7 @@ /turf/closed/wall, /area/security/processing/cremation) "anw" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -5081,6 +4998,10 @@ "anY" = ( /obj/structure/closet/firecloset, /obj/effect/decal/cleanable/cobweb, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -5101,10 +5022,13 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "aof" = ( +/obj/machinery/light/small{ + dir = 4 + }, /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/light/small{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -5146,10 +5070,7 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "aok" = ( -/obj/machinery/computer/security{ - name = "Labor Camp Monitoring"; - network = list("labor") - }, +/obj/machinery/computer/security/labor, /turf/open/floor/plasteel/dark, /area/security/brig) "aol" = ( @@ -5308,10 +5229,6 @@ dir = 4 }, /area/gateway) -"aoD" = ( -/obj/effect/spawner/lootdrop/grille_or_trash, -/turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) "aoH" = ( /obj/structure/lattice, /obj/structure/grille, @@ -5335,17 +5252,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"aoM" = ( -/obj/structure/chair/stool, -/obj/item/trash/raisins, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"aoN" = ( -/obj/structure/table, -/obj/item/paper, -/obj/item/pen, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/security/brig) "aoO" = ( @@ -5631,7 +5541,7 @@ /area/gateway) "apt" = ( /obj/structure/chair{ - dir = 8 + dir = 4 }, /obj/item/clothing/mask/cigarette, /turf/open/floor/plating, @@ -5669,9 +5579,7 @@ }, /area/maintenance/department/crew_quarters/dorms) "apz" = ( -/obj/structure/chair{ - dir = 8 - }, +/obj/item/target/clown, /turf/open/floor/plating, /area/maintenance/department/security/brig) "apB" = ( @@ -5880,13 +5788,7 @@ /turf/open/floor/plasteel/airless/solarpanel, /area/solar/port) "aqe" = ( -/obj/structure/rack, -/obj/item/clothing/suit/hazardvest, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"aqf" = ( -/obj/effect/decal/remains/human, +/obj/item/target/alien, /turf/open/floor/plating, /area/maintenance/department/security/brig) "aqg" = ( @@ -6029,6 +5931,10 @@ }, /area/security/brig) "aqA" = ( +/obj/machinery/computer/security/telescreen/interrogation{ + dir = 8; + pixel_x = 30 + }, /turf/open/floor/plasteel/red/side{ dir = 5 }, @@ -6198,7 +6104,8 @@ dir = 1; dwidth = 2; height = 6; - name = "large escape pod loader"; + id = "monastery_shuttle_station"; + name = "Station"; roundstart_template = /datum/map_template/shuttle/escape_pod/large; width = 5 }, @@ -6221,20 +6128,13 @@ }, /turf/open/space, /area/solar/port) -"arb" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/item/stack/rods{ - amount = 25 - }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "arc" = ( -/obj/item/weldingtool, -/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/maintenance/department/security/brig) "ard" = ( @@ -6368,7 +6268,8 @@ "arz" = ( /obj/machinery/camera{ c_tag = "Brig Interrogation"; - dir = 8 + dir = 8; + network = list("interrogation") }, /turf/open/floor/plasteel/dark, /area/security/brig) @@ -6739,28 +6640,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/vomit/old, -/obj/structure/cable{ - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"asp" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"asq" = ( -/obj/item/clothing/head/cone, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plating, /area/maintenance/department/security/brig) "asr" = ( /obj/structure/cable{ @@ -7427,6 +7310,7 @@ "aud" = ( /obj/machinery/camera/motion{ c_tag = "Vault"; + network = list("vault"); dir = 1 }, /obj/machinery/light, @@ -7930,6 +7814,10 @@ dir = 4; pixel_x = 28 }, +/obj/machinery/computer/cryopod{ + pixel_y = 30 + }, +/obj/machinery/cryopod, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "avm" = ( @@ -8080,10 +7968,13 @@ /turf/closed/wall, /area/crew_quarters/heads/captain) "avH" = ( -/obj/structure/toilet{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/curtain, +/obj/item/soap/deluxe, +/obj/item/bikehorn/rubberducky, +/obj/machinery/shower{ + dir = 1 + }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/heads/captain) "avI" = ( @@ -8105,12 +7996,9 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/heads/captain) "avK" = ( -/obj/machinery/shower{ - dir = 1 +/obj/structure/toilet{ + dir = 8 }, -/obj/item/soap/deluxe, -/obj/item/bikehorn/rubberducky, -/obj/structure/curtain, /turf/open/floor/plasteel/freezer, /area/crew_quarters/heads/captain) "avL" = ( @@ -8146,7 +8034,6 @@ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = -28 }, @@ -8412,15 +8299,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) -"awx" = ( -/obj/structure/closet/athletic_mixed, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/arrival{ - dir = 1 - }, -/area/crew_quarters/fitness/recreation) "awy" = ( /obj/structure/closet/lasertag/blue, /obj/structure/disposalpipe/segment{ @@ -8502,16 +8380,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "awE" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"awF" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/cleanable/cobweb{ - icon_state = "cobweb2" - }, +/obj/item/storage/briefcase, /turf/open/floor/plating, /area/maintenance/department/security/brig) "awH" = ( @@ -8766,7 +8635,9 @@ dir = 4; pixel_x = 28 }, -/obj/machinery/computer/rdconsole, +/obj/machinery/computer/rdconsole{ + dir = 8 + }, /turf/open/floor/plasteel/darkblue/side{ dir = 4 }, @@ -8845,6 +8716,7 @@ dir = 4 }, /obj/structure/chair/comfy, +/obj/effect/landmark/start/assistant, /turf/open/floor/carpet, /area/crew_quarters/dorms) "axt" = ( @@ -9016,7 +8888,6 @@ "axU" = ( /obj/machinery/computer/card, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -9137,7 +9008,8 @@ /obj/machinery/button/door{ id = "Dorm2Shutters"; name = "Privacy Shutters Control"; - pixel_y = 26 + pixel_y = 26; + req_access_txt = "0" }, /turf/open/floor/carpet, /area/crew_quarters/dorms) @@ -9162,6 +9034,7 @@ name = "Dorm Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; + req_access_txt = "0"; specialfunctions = 4 }, /obj/structure/closet/secure_closet/personal/cabinet, @@ -9182,12 +9055,12 @@ /area/crew_quarters/dorms) "ayn" = ( /obj/structure/chair/comfy{ - icon_state = "comfychair"; dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/carpet, /area/crew_quarters/dorms) "ayo" = ( @@ -9245,6 +9118,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/start/assistant, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "ayy" = ( @@ -9307,18 +9181,27 @@ /obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "ayG" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "ayH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "ayI" = ( @@ -9326,15 +9209,15 @@ codes_txt = "patrol;next_patrol=BrigS2"; location = "BrigP" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "ayJ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"ayK" = ( /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, /turf/open/floor/plasteel, /area/hallway/primary/fore) @@ -9491,7 +9374,6 @@ }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = -28 }, @@ -9588,7 +9470,6 @@ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = -28 }, @@ -9672,12 +9553,12 @@ /area/crew_quarters/dorms) "azv" = ( /obj/structure/chair/comfy{ - icon_state = "comfychair"; dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/carpet, /area/crew_quarters/dorms) "azx" = ( @@ -9743,6 +9624,7 @@ c_tag = "Holodeck"; dir = 8 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "azG" = ( @@ -9782,38 +9664,12 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/port) -"azM" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance"; - req_access_txt = "10; 13" - }, -/turf/open/floor/plating, -/area/maintenance/solars/port) "azN" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plating, /area/maintenance/solars/port) -"azO" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance"; - req_access_txt = "10; 13" - }, -/turf/open/floor/plating, -/area/maintenance/solars/port) "azP" = ( /obj/structure/cable{ icon_state = "1-8" @@ -9848,51 +9704,6 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port) -"azT" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"azU" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/department/security/brig) -"azV" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/department/security/brig) -"azW" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/item/vending_refill/cigarette, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/department/security/brig) -"azX" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "azY" = ( /obj/structure/plasticflaps, /turf/open/floor/plating, @@ -9929,6 +9740,10 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aAd" = ( @@ -9936,6 +9751,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aAe" = ( @@ -9943,6 +9761,10 @@ icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aAf" = ( @@ -9950,16 +9772,16 @@ c_tag = "Fore Primary Hallway Port"; dir = 1 }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aAg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 + dir = 4 }, /turf/open/floor/plasteel, /area/hallway/primary/fore) +"aAg" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "aAh" = ( -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, @@ -10210,6 +10032,7 @@ /obj/structure/chair/comfy{ dir = 1 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/carpet, /area/crew_quarters/dorms) "aAS" = ( @@ -10264,14 +10087,6 @@ icon_state = "panelscorched" }, /area/maintenance/department/security/brig) -"aBb" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/department/security/brig) "aBc" = ( /obj/structure/cable{ icon_state = "1-2" @@ -10280,6 +10095,7 @@ /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/department/security/brig) "aBd" = ( @@ -10295,13 +10111,12 @@ /area/security/detectives_office) "aBf" = ( /obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/security{ name = "Detective's Office"; req_access_txt = "4" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/plasteel/dark, /area/security/detectives_office) "aBg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -10461,6 +10276,9 @@ /turf/open/floor/wood, /area/crew_quarters/heads/hop) "aBA" = ( +/obj/machinery/computer/security/telescreen/vault{ + pixel_y = 30 + }, /obj/machinery/computer/security/mining, /turf/open/floor/wood, /area/crew_quarters/heads/hop) @@ -10572,7 +10390,8 @@ /obj/machinery/button/door{ id = "Dorm1Shutters"; name = "Privacy Shutters Control"; - pixel_y = 26 + pixel_y = 26; + req_access_txt = "0" }, /turf/open/floor/plasteel/grimy, /area/crew_quarters/dorms) @@ -10597,6 +10416,7 @@ name = "Dorm Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; + req_access_txt = "0"; specialfunctions = 4 }, /obj/structure/closet/secure_closet/personal/cabinet, @@ -10667,7 +10487,6 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = 28 }, @@ -10686,44 +10505,22 @@ }, /turf/open/space, /area/solar/port) -"aCb" = ( -/obj/structure/rack, -/obj/item/crowbar, -/obj/item/wrench, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "aCc" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/maintenance/department/security/brig) "aCd" = ( -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, +/obj/machinery/vending/cola/random, +/turf/open/floor/plating, /area/maintenance/department/security/brig) "aCe" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) +/obj/structure/filingcabinet/employment, +/turf/open/floor/wood, +/area/lawoffice) "aCf" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) +/obj/machinery/vending/wardrobe/law_wardrobe, +/turf/open/floor/wood, +/area/lawoffice) "aCg" = ( /obj/structure/cable{ icon_state = "4-8" @@ -10734,12 +10531,11 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "aCh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 + icon_state = "1-2" }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/department/security/brig) "aCi" = ( @@ -10748,10 +10544,6 @@ icon_state = "plant-18"; pixel_y = 12 }, -/obj/machinery/light_switch{ - dir = 9; - pixel_x = -22 - }, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aCj" = ( @@ -10768,7 +10560,6 @@ /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aCl" = ( -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) @@ -10780,7 +10571,6 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/filingcabinet, /obj/machinery/button/door{ id = "datboidetective"; name = "Privacy Shutters"; @@ -10791,6 +10581,7 @@ pixel_x = -8; pixel_y = 27 }, +/obj/structure/filingcabinet/security, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aCo" = ( @@ -10851,7 +10642,6 @@ /obj/machinery/cell_charger, /obj/item/stock_parts/cell/high/plus, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -10900,7 +10690,8 @@ pixel_y = 32 }, /obj/machinery/disposal/deliveryChute{ - name = "Crate Disposal Chute" + name = "Crate Disposal Chute"; + pixel_y = 6 }, /obj/structure/window/reinforced{ dir = 4 @@ -10992,7 +10783,8 @@ /obj/item/aiModule/supplied/quarantine, /obj/machinery/camera/motion{ c_tag = "AI Upload Port"; - dir = 4 + dir = 4; + network = list("aiupload") }, /obj/item/aiModule/reset, /obj/machinery/flasher{ @@ -11039,7 +10831,8 @@ /obj/item/aiModule/supplied/freeform, /obj/machinery/camera/motion{ c_tag = "AI Upload Starboard"; - dir = 8 + dir = 8; + network = list("aiupload") }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -11239,7 +11032,6 @@ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = -26 }, @@ -11259,6 +11051,10 @@ /turf/open/floor/plasteel/white/side, /area/crew_quarters/dorms) "aDk" = ( +/obj/machinery/vr_sleeper{ + icon_state = "sleeper"; + dir = 8 + }, /turf/open/floor/plasteel/white/corner{ icon_state = "whitecorner"; dir = 8 @@ -11281,22 +11077,16 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"aDn" = ( -/obj/structure/grille/broken, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "aDo" = ( /obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/structure/disposalpipe/trunk, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -28 }, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aDp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, @@ -11304,9 +11094,6 @@ /area/security/detectives_office) "aDq" = ( /obj/structure/chair, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -11314,24 +11101,12 @@ /area/security/detectives_office) "aDr" = ( /obj/structure/chair, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) -"aDs" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) "aDt" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) @@ -11492,7 +11267,8 @@ /obj/machinery/holopad, /obj/machinery/camera/motion{ c_tag = "AI Upload Center"; - dir = 1 + dir = 1; + network = list("aiupload") }, /obj/item/radio/intercom{ broadcasting = 1; @@ -11665,7 +11441,8 @@ "aEc" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ - name = "Dormitories" + name = "Dormitories"; + req_access_txt = "0" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, @@ -11675,7 +11452,8 @@ /area/crew_quarters/toilet/restrooms) "aEe" = ( /obj/machinery/door/airlock{ - name = "Unisex Restrooms" + name = "Unisex Restrooms"; + req_access_txt = "0" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/freezer, @@ -11701,7 +11479,6 @@ dir = 8; pixel_x = 23 }, -/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/restrooms) "aEi" = ( @@ -11729,11 +11506,6 @@ pixel_x = 3; pixel_y = 6 }, -/obj/item/radio/intercom{ - dir = 0; - name = "Station Intercom (General)"; - pixel_x = -27 - }, /turf/open/floor/carpet, /area/security/detectives_office) "aEn" = ( @@ -11758,7 +11530,6 @@ /area/security/detectives_office) "aEq" = ( /obj/structure/table/wood, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/item/reagent_containers/food/drinks/bottle/whiskey{ pixel_x = -1; @@ -12053,7 +11824,6 @@ pixel_y = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = 27 }, @@ -12069,7 +11839,6 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -27 }, @@ -12079,11 +11848,16 @@ /turf/closed/wall, /area/storage/emergency/starboard) "aEU" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plating, -/area/storage/emergency/starboard) -"aEV" = ( -/obj/structure/reagent_dispensers/watertank, +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 + }, +/obj/item/storage/toolbox, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/airalarm{ + pixel_y = 22 + }, /turf/open/floor/plating, /area/storage/emergency/starboard) "aEW" = ( @@ -12168,19 +11942,22 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "aFk" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plasteel/dark, -/area/security/detectives_office) -"aFl" = ( -/obj/machinery/light/small{ - dir = 1; - light_color = "#ffc1c1" +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/lootdrop/minor/bowler_or_that, +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/dark, -/area/security/detectives_office) +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/security/brig) "aFm" = ( -/obj/item/storage/secure/safe{ - pixel_x = -22 +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /turf/open/floor/carpet, /area/security/detectives_office) @@ -12193,20 +11970,22 @@ dir = 1 }, /obj/effect/landmark/start/detective, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/carpet, /area/security/detectives_office) "aFp" = ( -/obj/structure/table/wood, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/taperecorder, -/turf/open/floor/carpet, -/area/security/detectives_office) -"aFq" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/turf/open/floor/plasteel/grimy, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/carpet, /area/security/detectives_office) "aFr" = ( /obj/machinery/camera{ @@ -12317,10 +12096,9 @@ /area/hallway/primary/central) "aFE" = ( /obj/structure/cable{ - icon_state = "2-4" + icon_state = "1-2" }, -/obj/item/wrench, -/obj/item/crowbar, +/obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plating, /area/storage/emergency/starboard) "aFF" = ( @@ -12371,7 +12149,8 @@ /area/crew_quarters/toilet/restrooms) "aFK" = ( /obj/machinery/door/airlock{ - name = "Unisex Showers" + name = "Unisex Showers"; + req_access_txt = "0" }, /obj/structure/cable{ icon_state = "4-8" @@ -12443,19 +12222,49 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "aFU" = ( -/obj/structure/table, -/obj/item/storage/box/bodybags, -/obj/item/pen, -/turf/open/floor/plasteel/dark, -/area/security/detectives_office) -"aFV" = ( -/turf/open/floor/plasteel/dark, -/area/security/detectives_office) -"aFW" = ( -/obj/machinery/door/morgue{ - name = "Morgue" +/obj/structure/cable{ + icon_state = "2-4" }, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/security/brig) +"aFV" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Detective Maintenance"; + req_access_txt = "4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"aFW" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aFX" = ( /obj/machinery/computer/med_data{ @@ -12467,21 +12276,12 @@ /obj/machinery/computer/secure_data{ dir = 1 }, -/obj/machinery/light, /obj/machinery/camera{ c_tag = "Detective's Office"; dir = 1 }, /turf/open/floor/carpet, /area/security/detectives_office) -"aFZ" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/carpet, -/area/security/detectives_office) "aGa" = ( /obj/structure/cable{ icon_state = "1-8" @@ -12542,7 +12342,6 @@ /obj/item/storage/belt/utility, /obj/item/storage/belt/utility, /obj/item/storage/belt/utility, -/obj/item/reagent_containers/glass/beaker, /turf/open/floor/plasteel/neutral/side, /area/storage/primary) "aGi" = ( @@ -12554,10 +12353,7 @@ /turf/open/floor/plasteel/neutral/side, /area/storage/primary) "aGk" = ( -/obj/machinery/vending/boozeomat{ - products = list(/obj/item/reagent_containers/food/drinks/bottle/rum = 1, /obj/item/reagent_containers/food/drinks/bottle/wine = 1, /obj/item/reagent_containers/food/drinks/ale = 1, /obj/item/reagent_containers/food/drinks/drinkingglass = 6, /obj/item/reagent_containers/food/drinks/ice = 1, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 4); - req_access_txt = "20" - }, +/obj/machinery/vending/boozeomat/pubby_captain, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -12672,13 +12468,11 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/storage/emergency/starboard) "aGB" = ( /obj/machinery/space_heater, -/obj/structure/sign/poster/contraband/random{ - pixel_x = 32 - }, /turf/open/floor/plating, /area/storage/emergency/starboard) "aGC" = ( @@ -12686,6 +12480,9 @@ dir = 8 }, /obj/structure/disposalpipe/segment, +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "aGD" = ( @@ -12694,18 +12491,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"aGE" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/structure/mirror{ - pixel_x = -28 - }, -/obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/restrooms) "aGF" = ( /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/restrooms) @@ -12775,18 +12560,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aGT" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Detective Maintenance"; - req_access_txt = "4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "aGU" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -12798,6 +12571,10 @@ /area/hallway/primary/central) "aGX" = ( /obj/effect/spawner/structure/window, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "assistantshutters"; + name = "storage shutters" + }, /turf/open/floor/plating, /area/storage/primary) "aGY" = ( @@ -12809,11 +12586,19 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "assistantshutters"; + name = "storage shutters" + }, /turf/open/floor/plasteel, /area/storage/primary) "aGZ" = ( /obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "assistantshutters"; + name = "storage shutters" + }, /turf/open/floor/plating, /area/storage/primary) "aHb" = ( @@ -12946,11 +12731,13 @@ /area/hallway/primary/central) "aHn" = ( /obj/machinery/door/airlock/abandoned{ - name = "Starboard Emergency Storage" + name = "Starboard Emergency Storage"; + req_access_txt = "0" }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/storage/emergency/starboard) "aHo" = ( @@ -13009,36 +12796,17 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) -"aHB" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "aHC" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"aHD" = ( /obj/structure/cable{ icon_state = "2-8" }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/junction{ dir = 4 }, /turf/open/floor/plating, @@ -13350,6 +13118,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/central) "aIj" = ( @@ -13382,29 +13151,14 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/effect/decal/cleanable/blood/old, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/restrooms) -"aIm" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/cleanable/insectguts, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet/restrooms) -"aIo" = ( -/obj/structure/mineral_door/iron, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "aIp" = ( /obj/structure/grille, /turf/open/floor/plating, /area/maintenance/department/cargo) "aIq" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /obj/item/toy/figure/lawyer, /obj/effect/decal/cleanable/cobweb{ icon_state = "cobweb2" @@ -13421,77 +13175,24 @@ }, /turf/open/space, /area/solar/port) -"aIB" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-17" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/hallway/secondary/exit/departure_lounge) "aIC" = ( -/obj/structure/chair, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aID" = ( -/obj/structure/chair, -/obj/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aIE" = ( -/obj/structure/chair, -/obj/structure/sign/poster/official/report_crimes{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aIF" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-17" - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/hallway/secondary/exit/departure_lounge) -"aIG" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/soda_cans/cola, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"aIH" = ( -/obj/structure/chair/stool, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/department/security/brig) -"aII" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"aIJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"aIK" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +"aIH" = ( +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, /area/maintenance/department/security/brig) "aIL" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -13724,6 +13425,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/central) "aJj" = ( @@ -13774,7 +13476,8 @@ /area/hallway/primary/central) "aJn" = ( /obj/machinery/door/airlock{ - name = "Unisex Restrooms" + name = "Unisex Restrooms"; + req_access_txt = "0" }, /obj/structure/cable{ icon_state = "4-8" @@ -13856,19 +13559,6 @@ icon_state = "panelscorched" }, /area/maintenance/department/cargo) -"aJu" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "aJv" = ( /obj/structure/cable{ icon_state = "1-2" @@ -13885,15 +13575,19 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "aJw" = ( -/obj/structure/closet/coffin, -/obj/item/toy/figure/ian, +/obj/structure/closet/crate/coffin, +/obj/item/toy/figure/chaplain, /turf/open/floor/plating, /area/maintenance/department/cargo) "aJD" = ( -/obj/structure/sign/warning/vacuum/external{ - pixel_x = -32 +/obj/structure/chair{ + dir = 8 }, -/turf/open/floor/plasteel/red/side{ +/obj/machinery/camera{ + c_tag = "Departure Lounge Fore"; + dir = 2 + }, +/turf/open/floor/plasteel/vault{ dir = 8 }, /area/hallway/secondary/exit/departure_lounge) @@ -13901,18 +13595,20 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "aJF" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Departure Lounge Holding Area"; +/obj/structure/chair{ dir = 8 }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 +/obj/machinery/power/apc/highcap/five_k{ + dir = 1; + name = "Departure Lounge APC"; + areastring = "/area/hallway/secondary/exit/departure_lounge"; + pixel_y = 24 }, -/turf/open/floor/plasteel/red/side{ - dir = 4 +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 }, /area/hallway/secondary/exit/departure_lounge) "aJG" = ( @@ -13921,7 +13617,6 @@ }, /obj/structure/sign/directions/security{ dir = 1; - icon_state = "direction_sec"; pixel_x = 32; pixel_y = -24 }, @@ -14078,13 +13773,11 @@ "aJX" = ( /obj/structure/sign/directions/security{ dir = 8; - icon_state = "direction_sec"; pixel_x = -32; pixel_y = -24 }, /obj/structure/sign/directions/evac{ dir = 1; - icon_state = "direction_evac"; pixel_x = -32; pixel_y = -32 }, @@ -14134,9 +13827,7 @@ c_tag = "Dormitories Hallway"; dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/central) "aKf" = ( @@ -14188,18 +13879,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aKl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"aKm" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "aKn" = ( /obj/structure/cable{ icon_state = "1-2" @@ -14222,8 +13901,8 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "aKr" = ( -/obj/structure/closet/coffin, -/obj/item/toy/figure/lawyer, +/obj/structure/closet/crate/coffin, +/obj/item/toy/figure/curator, /turf/open/floor/plating, /area/maintenance/department/cargo) "aKy" = ( @@ -14239,10 +13918,12 @@ /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) "aKA" = ( -/obj/machinery/light{ +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel/escape{ dir = 1 }, -/turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) "aKB" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -14253,38 +13934,34 @@ }, /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) -"aKC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/hallway/secondary/exit/departure_lounge) "aKD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel/escape{ + dir = 1 }, -/turf/open/floor/plasteel/red/side, /area/hallway/secondary/exit/departure_lounge) "aKE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/red/side, -/area/hallway/secondary/exit/departure_lounge) -"aKF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +/turf/open/floor/plasteel/escape{ + dir = 1 }, -/turf/open/floor/plasteel/red/side, /area/hallway/secondary/exit/departure_lounge) "aKG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 +/obj/structure/cable{ + icon_state = "1-8" }, -/turf/open/floor/plasteel/red/side{ - dir = 6 +/turf/open/floor/plasteel/escape{ + dir = 1 }, /area/hallway/secondary/exit/departure_lounge) "aKH" = ( @@ -14473,19 +14150,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/disposal) -"aLs" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Holding Area"; - req_access_txt = "2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit/departure_lounge) -"aLt" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/hallway/secondary/exit/departure_lounge) "aLu" = ( /obj/structure/closet/emcloset, /turf/open/floor/plasteel/vault{ @@ -14610,7 +14274,7 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "aLI" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "aLK" = ( @@ -14767,7 +14431,6 @@ "aMf" = ( /obj/machinery/computer/secure_data, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -14792,6 +14455,9 @@ id = "packageSort2" }, /obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/airalarm{ + pixel_y = 22 + }, /turf/open/floor/plating, /area/quartermaster/sorting) "aMi" = ( @@ -15059,68 +14725,11 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"aMK" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10" - }, -/turf/open/floor/plasteel/escape{ - dir = 9 - }, -/area/hallway/secondary/exit/departure_lounge) "aML" = ( /turf/open/floor/plasteel/escape{ dir = 1 }, /area/hallway/secondary/exit/departure_lounge) -"aMM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/escape{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aMN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/escape{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aMO" = ( -/obj/machinery/power/apc/highcap/five_k{ - dir = 1; - name = "Departure Lounge APC"; - areastring = "/area/hallway/secondary/exit/departure_lounge"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/escape{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aMP" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - pixel_y = 3 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 - }, -/turf/open/floor/plasteel/escape{ - dir = 5 - }, -/area/hallway/secondary/exit/departure_lounge) -"aMQ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "aMR" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -15306,7 +14915,6 @@ }, /obj/item/clothing/shoes/magboots, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -27 }, @@ -15356,7 +14964,6 @@ /obj/structure/closet/crate, /obj/item/melee/flyswatter, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -27 }, @@ -15448,13 +15055,6 @@ dir = 4 }, /area/security/checkpoint/supply) -"aNG" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/disposalpipe/sorting/wrap{ - dir = 1 - }, -/turf/open/floor/plating, -/area/quartermaster/sorting) "aNH" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ @@ -15546,11 +15146,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aNS" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "aNT" = ( /obj/machinery/mass_driver{ dir = 1; @@ -15608,38 +15203,29 @@ /turf/open/floor/plating, /area/maintenance/disposal) "aOf" = ( -/turf/open/floor/plasteel/escape{ - dir = 8 +/obj/structure/chair, +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 }, /area/hallway/secondary/exit/departure_lounge) "aOg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 +/obj/structure/chair, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 }, /area/hallway/secondary/exit/departure_lounge) "aOh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral/corner{ +/obj/structure/chair, +/obj/machinery/light{ dir = 1 }, -/area/hallway/secondary/exit/departure_lounge) -"aOi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aOj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 }, /area/hallway/secondary/exit/departure_lounge) "aOk" = ( @@ -15647,66 +15233,15 @@ dir = 1 }, /area/hallway/secondary/exit/departure_lounge) -"aOl" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) "aOm" = ( -/turf/open/floor/plasteel/escape/corner{ - icon_state = "escapecorner"; - dir = 4 - }, -/area/hallway/secondary/exit/departure_lounge) -"aOn" = ( -/obj/structure/chair, -/turf/open/floor/plasteel/escape{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aOo" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/obj/machinery/camera{ - c_tag = "Departure Lounge Starboard" - }, -/turf/open/floor/plasteel/escape{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aOp" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/escape{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aOq" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/escape{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aOr" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-16" - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = 29 - }, -/turf/open/floor/plasteel/escape{ - dir = 5 - }, -/area/hallway/secondary/exit/departure_lounge) +/obj/item/wrench, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "aOs" = ( /obj/structure/sign/departments/evac, /turf/closed/wall, @@ -16034,10 +15569,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/light_switch{ - dir = 9; - pixel_x = -22 - }, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) "aOZ" = ( @@ -16077,12 +15608,18 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "aPg" = ( -/obj/machinery/light/small{ +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/machinery/conveyor{ - dir = 9; - id = "garbage" +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/disposal) @@ -16091,6 +15628,9 @@ dir = 8; id = "garbage" }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /turf/open/floor/plating, /area/maintenance/disposal) "aPi" = ( @@ -16103,94 +15643,34 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"aPm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/neutral/side{ - dir = 8; - heat_capacity = 1e+006 - }, -/area/hallway/secondary/exit/departure_lounge) "aPn" = ( -/obj/structure/chair{ - dir = 1 +/turf/open/floor/plasteel/escape{ + dir = 9 }, -/turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "aPo" = ( -/obj/structure/chair{ - dir = 1 +/turf/open/floor/plasteel/escape{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) -"aPp" = ( -/obj/structure/table, -/obj/item/toy/cards/deck, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "aPq" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/light{ dir = 4 }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) -"aPr" = ( -/obj/structure/chair{ - dir = 1 +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = 27 }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) -"aPs" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 +/obj/machinery/camera{ + c_tag = "Departure Lounge Starboard"; + dir = 8 }, +/turf/open/floor/plasteel/neutral/corner, /area/hallway/secondary/exit/departure_lounge) "aPt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) -"aPu" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "aPv" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -16202,7 +15682,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/sign/directions/evac{ dir = 1; - icon_state = "direction_evac"; pixel_x = 32 }, /turf/open/floor/plasteel/neutral/corner, @@ -16371,7 +15850,7 @@ /turf/open/floor/plasteel/red/side, /area/security/checkpoint/supply) "aPV" = ( -/obj/structure/filingcabinet, +/obj/structure/filingcabinet/security, /turf/open/floor/plasteel/red/side{ dir = 6 }, @@ -16464,39 +15943,22 @@ }, /turf/closed/wall, /area/maintenance/disposal) -"aQl" = ( -/obj/structure/disposaloutlet{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 +"aQn" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "garbage"; + name = "disposal conveyor" }, /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 1 }, /turf/open/floor/plating, /area/maintenance/disposal) -"aQm" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "garbage" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"aQn" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "garbage" - }, -/obj/machinery/recycler, -/turf/open/floor/plating, -/area/maintenance/disposal) "aQo" = ( +/obj/machinery/light/small{ + dir = 8 + }, /obj/machinery/conveyor{ - dir = 1; + dir = 2; id = "garbage" }, /turf/open/floor/plating, @@ -16509,11 +15971,11 @@ /turf/open/floor/plating, /area/maintenance/disposal) "aQr" = ( -/obj/structure/sign/warning/vacuum/external{ - pixel_x = -32 +/obj/structure/chair{ + dir = 8 }, /turf/open/floor/plasteel/escape{ - dir = 8 + dir = 4 }, /area/hallway/secondary/exit/departure_lounge) "aQs" = ( @@ -16536,29 +15998,21 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "aQw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 +/obj/machinery/computer/shuttle/mining, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) +/area/construction/mining/aux_base) "aQx" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 +/obj/structure/table, +/obj/item/storage/box/lights/mixed, +/obj/item/pipe_dispenser, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) -"aQy" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral/corner, -/area/hallway/secondary/exit/departure_lounge) +/area/construction/mining/aux_base) "aQz" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -16792,6 +16246,9 @@ /obj/structure/closet/secure_closet/bar{ req_access_txt = "25" }, +/obj/item/stack/cable_coil, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/metal/fifty, /turf/open/floor/wood, /area/crew_quarters/bar) "aQW" = ( @@ -16901,6 +16358,9 @@ "aRh" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light_switch{ + pixel_x = -24 + }, /turf/open/floor/plasteel, /area/quartermaster/sorting) "aRi" = ( @@ -17017,17 +16477,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"aRx" = ( -/obj/machinery/conveyor_switch/oneway{ - dir = 8; - id = "garbage"; - name = "disposal conveyor" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/disposal) "aRy" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/turf_decal/stripes/line{ @@ -17047,17 +16496,14 @@ /turf/open/floor/plating, /area/maintenance/disposal) "aRB" = ( -/obj/structure/chair, -/turf/open/floor/plasteel, +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/hallway/secondary/exit/departure_lounge) "aRC" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit/departure_lounge) "aRD" = ( /obj/structure/flora/ausbushes/ywflowers, @@ -17103,15 +16549,35 @@ /turf/open/floor/grass, /area/hallway/secondary/exit/departure_lounge) "aRG" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/rack, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/assault_pod/mining, +/obj/machinery/camera{ + c_tag = "Auxillary Base Construction"; + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/auxbase{ + dir = 8; + pixel_x = 30 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) +/area/construction/mining/aux_base) "aRH" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/hallway/secondary/exit/departure_lounge) +/obj/structure/sign/departments/evac, +/turf/closed/wall, +/area/hallway/primary/central) "aRI" = ( /obj/machinery/light{ dir = 4 @@ -17165,9 +16631,7 @@ /turf/open/floor/plating, /area/crew_quarters/kitchen) "aRP" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -17318,6 +16782,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/mining/glass{ name = "Mailroom"; + req_access_txt = "0"; req_one_access_txt = "48;50" }, /obj/machinery/door/firedoor, @@ -17392,41 +16857,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/disposal) -"aSq" = ( -/obj/machinery/camera{ - c_tag = "Departures - Port"; - dir = 4; - pixel_y = -7 - }, -/turf/open/floor/plasteel/escape{ - dir = 8 - }, -/area/hallway/secondary/exit/departure_lounge) -"aSr" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) -"aSs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) -"aSt" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) "aSu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 +/obj/structure/cable{ + icon_state = "1-4" }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/item/wirecutters, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "aSv" = ( /obj/structure/flora/ausbushes/ywflowers, /obj/structure/flora/ausbushes/lavendergrass, @@ -17455,14 +16895,6 @@ }, /turf/open/floor/grass, /area/hallway/secondary/exit/departure_lounge) -"aSy" = ( -/obj/structure/table, -/obj/item/storage/box/matches{ - pixel_x = -3; - pixel_y = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) "aSz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -17471,13 +16903,11 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "aSA" = ( -/obj/structure/sink{ - pixel_y = 28 - }, /obj/machinery/firealarm{ dir = 8; pixel_x = -28 }, +/obj/machinery/hydroponics/constructable, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aSB" = ( @@ -17489,7 +16919,6 @@ /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aSC" = ( -/obj/structure/closet/secure_closet/hydroponics, /obj/machinery/light/small{ dir = 1 }, @@ -17506,14 +16935,14 @@ /obj/machinery/camera{ c_tag = "Hydroponics Storage" }, -/obj/machinery/plantgenes, +/obj/structure/closet/secure_closet/hydroponics, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aSF" = ( +/obj/machinery/chem_master/condimaster, /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/smartfridge/disks, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aSG" = ( @@ -17575,6 +17004,7 @@ /area/maintenance/department/crew_quarters/bar) "aSN" = ( /obj/item/assembly/mousetrap, +/obj/item/storage/box/mousetraps, /turf/open/floor/wood{ icon_state = "wood-broken6" }, @@ -17780,24 +17210,24 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aTo" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad" - }, /obj/machinery/status_display{ pixel_y = 30; supply_display = 1 }, -/turf/open/floor/plating, -/area/quartermaster/storage) -"aTp" = ( /obj/machinery/conveyor{ dir = 4; id = "QMLoad" }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"aTp" = ( /obj/structure/sign/poster/official/random{ pixel_y = 32 }, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, /turf/open/floor/plating, /area/quartermaster/storage) "aTq" = ( @@ -17918,6 +17348,9 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, /turf/open/floor/plating, /area/maintenance/disposal) "aTC" = ( @@ -17962,16 +17395,11 @@ }, /turf/open/space/basic, /area/space) -"aTI" = ( -/obj/machinery/light, -/turf/open/floor/plating, -/area/hallway/secondary/exit/departure_lounge) "aTJ" = ( -/obj/structure/table, -/obj/item/folder, -/obj/item/pen, -/obj/machinery/light, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, /area/hallway/secondary/exit/departure_lounge) "aTK" = ( /obj/structure/flora/ausbushes/ywflowers, @@ -18007,13 +17435,6 @@ }, /turf/open/floor/grass, /area/hallway/secondary/exit/departure_lounge) -"aTN" = ( -/obj/structure/chair{ - dir = 1; - name = "Command Station" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) "aTO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/camera{ @@ -18125,12 +17546,12 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 26 }, +/obj/item/crowbar, +/obj/item/wrench, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) "aUb" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -18147,11 +17568,7 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "aUe" = ( -/obj/structure/closet/gmcloset, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/cable_coil, -/obj/item/storage/box/mousetraps, +/obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood{ icon_state = "wood-broken5" }, @@ -18221,6 +17638,7 @@ "aUo" = ( /obj/machinery/door/airlock/mining/glass{ name = "Cargo Bay"; + req_access_txt = "0"; req_one_access_txt = "31;48" }, /obj/structure/disposalpipe/segment{ @@ -18347,33 +17765,56 @@ /turf/open/space, /area/solar/starboard) "aUG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) -"aUH" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) -"aUI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 4 +/turf/open/floor/plasteel/escape{ + dir = 1 }, /area/hallway/secondary/exit/departure_lounge) -"aUJ" = ( +"aUH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_y = 32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) +"aUI" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ name = "Departure Lounge" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, /area/hallway/secondary/exit/departure_lounge) +"aUJ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/primary/central) "aUK" = ( /obj/structure/cable{ icon_state = "4-8" @@ -18438,9 +17879,7 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "aUQ" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -18469,10 +17908,10 @@ /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aUT" = ( -/obj/structure/closet/wardrobe/botanist, /obj/structure/cable{ icon_state = "1-4" }, +/obj/machinery/vending/wardrobe/hydro_wardrobe, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "aUU" = ( @@ -18636,10 +18075,9 @@ id = "barshutters"; name = "Bar Lockdown"; pixel_x = 28; - req_access_txt = "28" + req_access_txt = "25" }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -18647,15 +18085,12 @@ /area/crew_quarters/bar) "aVk" = ( /obj/structure/table/wood, -/obj/item/lipstick/random{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/clothing/gloves/color/rainbow/clown, /obj/machinery/airalarm{ pixel_y = 22 }, -/obj/item/lipstick/random, +/obj/item/instrument/accordion{ + pixel_y = 4 + }, /turf/open/floor/plasteel/dark, /area/crew_quarters/theatre) "aVl" = ( @@ -18720,9 +18155,7 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "aVs" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/machinery/conveyor{ dir = 4; id = "cargodeliver" @@ -18824,10 +18257,11 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/machinery/light/small{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/light/small{ + dir = 8; + light_color = "#d8b1b1" + }, /turf/open/floor/plating, /area/maintenance/department/cargo) "aVF" = ( @@ -18855,61 +18289,44 @@ /obj/item/storage/crayons, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aVL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 8; - heat_capacity = 1e+006 - }, -/area/hallway/secondary/exit/departure_lounge) "aVM" = ( -/obj/structure/chair, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "aVN" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/dice, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/neutral, +/area/hallway/secondary/exit/departure_lounge) +"aVO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"aVO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +"aVP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 8 - }, -/area/hallway/secondary/exit/departure_lounge) -"aVP" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel/neutral/corner{ - dir = 8 - }, +/turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "aVQ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Departure Lounge" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) +/area/hallway/primary/central) "aVR" = ( -/obj/structure/sign/directions/evac{ - dir = 1; - icon_state = "direction_evac"; - pixel_x = 32 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/central) "aVS" = ( @@ -18946,9 +18363,7 @@ /turf/open/floor/plasteel, /area/hydroponics) "aVW" = ( -/obj/structure/closet/chefcloset, -/obj/item/wrench, -/obj/item/crowbar, +/obj/machinery/vending/wardrobe/chef_wardrobe, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) "aVX" = ( @@ -18990,21 +18405,6 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) -"aWc" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/sign/warning/securearea{ - desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; - icon_state = "monkey_painting"; - name = "Mr. Deempisi portrait"; - pixel_y = 28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/bar) "aWd" = ( /obj/structure/sink/kitchen{ pixel_y = 28 @@ -19042,9 +18442,6 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) "aWg" = ( -/obj/machinery/light/small{ - dir = 1 - }, /obj/structure/cable{ icon_state = "4-8" }, @@ -19061,7 +18458,6 @@ icon_state = "2-8" }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -19129,7 +18525,6 @@ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -19230,46 +18625,31 @@ }, /area/hallway/secondary/exit/departure_lounge) "aWF" = ( -/turf/open/floor/plasteel/escape/corner, -/area/hallway/secondary/exit/departure_lounge) -"aWG" = ( -/obj/structure/chair{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /turf/open/floor/plasteel/escape, /area/hallway/secondary/exit/departure_lounge) -"aWH" = ( -/obj/structure/chair{ - dir = 1 +"aWI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 }, -/turf/open/floor/plasteel/escape, -/area/hallway/secondary/exit/departure_lounge) -"aWI" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/snacks/cookie, -/turf/open/floor/plasteel/escape, -/area/hallway/secondary/exit/departure_lounge) -"aWJ" = ( -/obj/machinery/light, -/obj/structure/chair{ +/obj/machinery/camera{ + c_tag = "Departure Lounge Hallway"; dir = 1 }, /turf/open/floor/plasteel/escape, /area/hallway/secondary/exit/departure_lounge) -"aWK" = ( +"aWJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/escape, /area/hallway/secondary/exit/departure_lounge) -"aWL" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-14" - }, -/turf/open/floor/plasteel/escape{ - dir = 6 - }, +"aWK" = ( +/turf/open/floor/plasteel/escape, /area/hallway/secondary/exit/departure_lounge) "aWM" = ( /obj/machinery/washing_machine, @@ -19279,7 +18659,7 @@ name = "Mr. Deempisi portrait"; pixel_y = 28 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault, /area/janitor) "aWN" = ( /obj/machinery/camera{ @@ -19292,20 +18672,22 @@ dir = 1 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, /obj/machinery/light/small{ dir = 1 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault, /area/janitor) "aWO" = ( /obj/structure/bed, /obj/effect/landmark/start/janitor, /obj/item/bedsheet/purple, -/turf/open/floor/plasteel/dark, +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/turf/open/floor/plasteel/vault, /area/janitor) "aWP" = ( /obj/machinery/hydroponics/constructable, @@ -19320,27 +18702,32 @@ }, /area/hydroponics) "aWR" = ( -/obj/structure/sink/kitchen{ - name = "utility sink"; - pixel_y = 28 +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Hydroponics"; + departmentType = 2; + pixel_y = 30 }, /turf/open/floor/plasteel, /area/hydroponics) "aWS" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2; +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/sorting/mail{ sortType = 21 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hydroponics) "aWT" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, /obj/machinery/light_switch{ - pixel_y = 22 + pixel_x = -4; + pixel_y = 30 + }, +/obj/structure/sink/kitchen{ + name = "utility sink"; + pixel_y = 28 }, /turf/open/floor/plasteel/green/corner{ dir = 4 @@ -19376,12 +18763,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/bar) -"aXa" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 4; - sortType = 19 +/obj/machinery/light/small{ + dir = 2 }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) @@ -19398,6 +18781,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/light/small{ + dir = 2 + }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) "aXd" = ( @@ -19582,39 +18968,34 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) +"aXB" = ( +/obj/structure/sign/departments/evac, +/turf/closed/wall, +/area/security/checkpoint/customs) "aXC" = ( /obj/structure/chair/stool, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aXD" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - pixel_y = 3 - }, -/turf/open/floor/plasteel/escape{ - dir = 10 - }, -/area/hallway/secondary/exit/departure_lounge) -"aXE" = ( -/obj/machinery/camera{ - c_tag = "Departure Lounge Port"; - dir = 1 - }, -/turf/open/floor/plasteel/escape, -/area/hallway/secondary/exit/departure_lounge) "aXF" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10" +/obj/structure/chair{ + dir = 4 }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -28 }, -/turf/open/floor/plasteel/escape{ - dir = 6 +/turf/open/floor/plasteel/vault{ + dir = 8 }, /area/hallway/secondary/exit/departure_lounge) "aXG" = ( -/turf/closed/wall/r_wall, +/obj/structure/table, +/obj/effect/holodeck_effect/cards{ + pixel_y = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/hallway/secondary/exit/departure_lounge) "aXH" = ( /turf/closed/wall/r_wall, @@ -19722,12 +19103,10 @@ }, /area/hydroponics) "aXW" = ( -/obj/machinery/biogenerator, -/obj/machinery/requests_console{ - department = "Hydroponics"; - departmentType = 2; - pixel_y = 30 +/obj/machinery/plantgenes{ + pixel_y = 6 }, +/obj/structure/table, /turf/open/floor/plasteel/green/corner{ dir = 4 }, @@ -19735,7 +19114,6 @@ "aXX" = ( /obj/machinery/hydroponics/constructable, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -19780,8 +19158,9 @@ /area/crew_quarters/kitchen) "aYd" = ( /obj/machinery/door/airlock{ - name = "Kitchen"; - req_one_access_txt = "25; 28" + name = "Service Access"; + req_access_txt = "0"; + req_one_access_txt = "25; 26; 28; 35" }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -19861,17 +19240,21 @@ /area/crew_quarters/theatre) "aYm" = ( /obj/structure/closet/crate/wooden/toy, +/obj/item/lipstick/random, +/obj/item/clothing/gloves/color/rainbow/clown, /turf/open/floor/plasteel/vault{ dir = 8 }, /area/crew_quarters/theatre) "aYn" = ( -/obj/machinery/computer/cargo, /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; pixel_x = -32 }, +/obj/machinery/computer/cargo{ + dir = 4 + }, /turf/open/floor/plasteel/brown{ dir = 1 }, @@ -19920,13 +19303,6 @@ dir = 1 }, /area/quartermaster/office) -"aYt" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/quartermaster/office) "aYu" = ( /obj/machinery/light{ dir = 4 @@ -19986,7 +19362,6 @@ /area/quartermaster/storage) "aYB" = ( /obj/machinery/conveyor_switch/oneway{ - dir = 8; id = "QMLoad2" }, /obj/effect/turf_decal/stripes/line{ @@ -20025,7 +19400,6 @@ /obj/item/shard{ icon_state = "small" }, -/obj/effect/decal/cleanable/insectguts, /obj/item/light/bulb, /turf/open/floor/plating, /area/maintenance/department/cargo) @@ -20054,7 +19428,7 @@ }, /area/security/checkpoint/customs) "aYJ" = ( -/obj/structure/closet/wardrobe/red, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/red/side{ dir = 1 }, @@ -20062,7 +19436,6 @@ "aYK" = ( /obj/structure/closet/secure_closet/security, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -20083,9 +19456,7 @@ name = "Custodial Quarters"; req_access_txt = "26" }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, +/turf/open/floor/plasteel/vault, /area/janitor) "aYN" = ( /obj/machinery/hydroponics/constructable, @@ -20131,7 +19502,6 @@ "aYU" = ( /obj/machinery/processor, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -20277,13 +19647,15 @@ }, /area/hallway/primary/central) "aZj" = ( -/obj/structure/table, /obj/machinery/status_display{ dir = 4; layer = 4; pixel_x = -32; supply_display = 1 }, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/plasteel, /area/quartermaster/office) "aZk" = ( @@ -20414,24 +19786,11 @@ dir = 1 }, /area/hallway/secondary/entry) -"aZB" = ( -/obj/machinery/camera{ - c_tag = "Arrivals Fore"; - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/arrival{ - dir = 1 - }, -/area/hallway/secondary/entry) "aZC" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -20626,10 +19985,6 @@ }, /turf/open/floor/plasteel, /area/hydroponics) -"aZY" = ( -/obj/effect/landmark/start/botanist, -/turf/open/floor/plasteel, -/area/hydroponics) "aZZ" = ( /obj/machinery/smartfridge, /turf/closed/wall, @@ -20690,7 +20045,6 @@ "bao" = ( /obj/machinery/computer/slot_machine, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -20729,7 +20083,6 @@ /obj/structure/table, /obj/item/pen, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = -26 }, @@ -20786,10 +20139,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/office) -"bay" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/closed/wall, -/area/quartermaster/office) "baz" = ( /obj/machinery/door/firedoor, /turf/open/floor/plasteel, @@ -20839,7 +20188,6 @@ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = -26 }, @@ -20869,7 +20217,9 @@ /turf/closed/wall, /area/maintenance/solars/starboard) "baH" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/rack, +/obj/item/clothing/mask/gas, +/obj/item/multitool, /turf/open/floor/plating, /area/maintenance/solars/starboard) "baI" = ( @@ -21042,7 +20392,6 @@ /turf/open/floor/plasteel/floorgrime, /area/janitor) "bba" = ( -/obj/effect/landmark/start/botanist, /obj/machinery/holopad, /turf/open/floor/plasteel, /area/hydroponics) @@ -21071,21 +20420,6 @@ /obj/structure/chair/stool, /turf/open/floor/plasteel/green/side, /area/hydroponics) -"bbf" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/eastleft{ - dir = 8; - name = "Hydroponics Desk"; - req_access_txt = "35" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/eastleft{ - dir = 4; - name = "Kitchen Desk"; - req_access_txt = "28" - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) "bbg" = ( /obj/effect/landmark/start/cook, /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -21224,6 +20558,8 @@ pixel_x = 6; pixel_y = -5 }, +/obj/item/clothing/under/rank/mailman, +/obj/item/clothing/head/mailman, /turf/open/floor/plasteel, /area/quartermaster/office) "bbC" = ( @@ -21234,9 +20570,7 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "bbD" = ( -/obj/structure/closet/wardrobe/cargotech, -/obj/item/clothing/head/mailman, -/obj/item/clothing/under/rank/mailman, +/obj/machinery/vending/wardrobe/cargo_wardrobe, /turf/open/floor/plasteel, /area/quartermaster/office) "bbE" = ( @@ -21300,16 +20634,16 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard) -"bbN" = ( -/obj/structure/rack, -/obj/item/clothing/mask/gas, -/obj/item/multitool, -/turf/open/floor/plating, -/area/maintenance/solars/starboard) "bbO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" }, /turf/open/floor/plating, /area/maintenance/solars/starboard) @@ -21382,15 +20716,11 @@ /turf/open/floor/plasteel/floorgrime, /area/janitor) "bbY" = ( -/obj/structure/closet/jcloset, -/obj/item/clothing/head/crown, /obj/machinery/camera{ c_tag = "Custodial Closet"; dir = 8 }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, +/obj/machinery/vending/wardrobe/jani_wardrobe, /turf/open/floor/plasteel/floorgrime, /area/janitor) "bbZ" = ( @@ -21415,22 +20745,19 @@ /obj/structure/table/reinforced, /obj/machinery/door/firedoor, /obj/machinery/door/window/westright{ + base_state = "left"; dir = 1; + icon_state = "left"; name = "Hydroponics Desk"; req_access_txt = "35" }, /obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/hydroponics) "bcc" = ( -/obj/structure/table/reinforced, +/obj/machinery/biogenerator, /obj/machinery/door/firedoor, -/obj/machinery/door/window/westright{ - dir = 1; - name = "Hydroponics Desk"; - req_access_txt = "35" - }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/hydroponics) "bcd" = ( /obj/structure/table/reinforced, @@ -21441,7 +20768,7 @@ req_access_txt = "35" }, /obj/item/reagent_containers/food/snacks/monkeycube, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/hydroponics) "bce" = ( /obj/structure/table, @@ -21684,26 +21011,14 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard) -"bcM" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/solars/starboard) "bcN" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance"; - req_access_txt = "10; 13" +/obj/machinery/power/solar_control{ + dir = 8; + id = "starboardsolar"; + name = "Starboard Solar Control"; + track = 0 }, +/obj/structure/cable, /turf/open/floor/plating, /area/maintenance/solars/starboard) "bcO" = ( @@ -21712,19 +21027,6 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard) -"bcP" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance"; - req_access_txt = "10; 13" - }, -/turf/open/floor/plating, -/area/maintenance/solars/starboard) "bcQ" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -21762,13 +21064,6 @@ }, /turf/open/floor/plasteel/airless/solarpanel, /area/solar/starboard) -"bcW" = ( -/obj/structure/sign/warning/vacuum/external{ - pixel_y = 32 - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/hallway/secondary/entry) "bcX" = ( /turf/open/floor/plating, /area/hallway/secondary/entry) @@ -21797,7 +21092,9 @@ /area/hallway/secondary/entry) "bdc" = ( /obj/machinery/door/firedoor, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/arrival{ + dir = 1 + }, /area/hallway/secondary/entry) "bdd" = ( /obj/machinery/light{ @@ -21933,10 +21230,6 @@ icon_state = "platingdmg3" }, /area/maintenance/department/cargo) -"bdA" = ( -/obj/machinery/droneDispenser, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "bdB" = ( /obj/structure/cable{ icon_state = "1-4" @@ -22000,7 +21293,9 @@ /turf/open/floor/plasteel, /area/quartermaster/qm) "bdH" = ( -/obj/structure/filingcabinet, +/obj/machinery/computer/bounty{ + dir = 8 + }, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -22036,14 +21331,14 @@ /turf/open/floor/plasteel, /area/quartermaster/miningdock) "bdM" = ( -/obj/machinery/computer/security/mining{ - dir = 8 - }, /obj/machinery/requests_console{ department = "Mining"; departmentType = 0; pixel_x = 32 }, +/obj/machinery/computer/security/mining{ + dir = 8 + }, /turf/open/floor/plasteel/brown/corner, /area/quartermaster/miningdock) "bdQ" = ( @@ -22074,16 +21369,6 @@ /obj/item/cigbutt/cigarbutt, /turf/open/floor/plating, /area/maintenance/solars/starboard) -"bdT" = ( -/obj/machinery/power/solar_control{ - dir = 8; - id = "starboardsolar"; - name = "Starboard Solar Control"; - track = 0 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/maintenance/solars/starboard) "bdU" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -22163,6 +21448,10 @@ pixel_y = 3 }, /obj/item/storage/box/mousetraps, +/obj/structure/extinguisher_cabinet{ + pixel_x = 24 + }, +/obj/item/clothing/head/crown, /turf/open/floor/plasteel/floorgrime, /area/janitor) "bef" = ( @@ -22265,6 +21554,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenwindowshutters"; + name = "kitchen shutters" + }, /turf/open/floor/plasteel, /area/crew_quarters/kitchen) "bep" = ( @@ -22342,6 +21635,12 @@ /obj/machinery/light{ light_color = "#c9d3e8" }, +/obj/machinery/button/door{ + id = "barshutters"; + name = "Bar Lockdown"; + pixel_y = -28; + req_access_txt = "25" + }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) "beB" = ( @@ -22355,6 +21654,12 @@ /obj/machinery/light{ light_color = "#c9d3e8" }, +/obj/machinery/button/door{ + id = "barshutters"; + name = "Bar Lockdown"; + pixel_y = -28; + req_access_txt = "25" + }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) "beD" = ( @@ -22405,23 +21710,13 @@ /turf/closed/wall, /area/science/robotics/mechbay) "beJ" = ( -/obj/structure/table, -/obj/item/cartridge/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/cartridge/quartermaster, -/obj/item/cartridge/quartermaster{ - pixel_x = -4; - pixel_y = 7 - }, -/obj/item/coin/silver, /obj/machinery/status_display{ dir = 4; layer = 4; pixel_x = -32; supply_display = 1 }, +/obj/structure/filingcabinet, /turf/open/floor/plasteel/brown{ dir = 8 }, @@ -22479,13 +21774,6 @@ /obj/item/caution, /turf/open/floor/plating, /area/maintenance/department/cargo) -"beT" = ( -/obj/structure/table, -/obj/item/paper_bin{ - layer = 2.9 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "beU" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -22521,7 +21809,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/arrival, /area/hallway/secondary/entry) "bfb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -22572,7 +21860,6 @@ }, /obj/structure/sign/directions/evac{ dir = 8; - icon_state = "direction_evac"; pixel_y = -32 }, /turf/open/floor/plasteel, @@ -22738,6 +22025,10 @@ departmentType = 2; pixel_x = -30 }, +/obj/item/paper_bin{ + layer = 2.9 + }, +/obj/item/pen, /turf/open/floor/plasteel/brown{ dir = 10 }, @@ -22745,24 +22036,37 @@ "bfC" = ( /obj/structure/table, /obj/item/clipboard, -/obj/item/stamp/qm, /obj/machinery/light, /obj/machinery/camera{ c_tag = "Cargo Quartermaster's Office"; dir = 1 }, +/obj/machinery/light_switch{ + pixel_y = -24 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/cartridge/quartermaster, +/obj/item/cartridge/quartermaster{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/item/coin/silver, +/obj/item/stamp/qm, /turf/open/floor/plasteel/brown{ dir = 2 }, /area/quartermaster/qm) "bfD" = ( -/obj/machinery/computer/security/mining{ - dir = 8 - }, /obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, +/obj/machinery/computer/security/qm{ + dir = 8 + }, /turf/open/floor/plasteel/brown{ dir = 6 }, @@ -22847,15 +22151,8 @@ /obj/item/trash/chips, /turf/open/floor/plating, /area/maintenance/department/cargo) -"bfO" = ( -/obj/structure/frame/machine, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "bfP" = ( -/obj/structure/closet/cabinet, -/obj/effect/spawner/lootdrop/maintenance, -/obj/item/circuitboard/machine/hydroponics, -/obj/item/electronics/apc, +/obj/machinery/shieldwallgen, /turf/open/floor/plating, /area/maintenance/department/cargo) "bfY" = ( @@ -22899,13 +22196,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/sign/directions/security{ dir = 1; - icon_state = "direction_sec"; pixel_x = 32; pixel_y = 40 }, /obj/structure/sign/directions/science{ dir = 4; - icon_state = "direction_sci"; pixel_x = 32; pixel_y = 32 }, @@ -22937,7 +22232,6 @@ name = "Throne of Custodia" }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -23091,13 +22385,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/sign/directions/evac{ dir = 1; - icon_state = "direction_evac"; pixel_x = -32; pixel_y = 40 }, /obj/structure/sign/directions/medical{ dir = 8; - icon_state = "direction_med"; pixel_x = -32; pixel_y = 32 }, @@ -23193,11 +22485,6 @@ "bgM" = ( /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"bgN" = ( -/obj/structure/table, -/obj/item/paperplane, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "bgS" = ( /obj/docking_port/stationary{ dir = 8; @@ -23319,7 +22606,6 @@ }, /obj/structure/sign/directions/evac{ dir = 1; - icon_state = "direction_evac"; pixel_x = 32; pixel_y = 38 }, @@ -23509,24 +22795,21 @@ }, /area/quartermaster/miningdock) "bhz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bhA" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, /turf/open/floor/plating, /area/maintenance/department/cargo) "bhB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, /obj/structure/cable{ icon_state = "2-8" }, @@ -23602,14 +22885,14 @@ /area/hallway/primary/central) "bhN" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Lounge"; + location = "Kitchen" + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "bhO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Eng"; - location = "Bar1" - }, /obj/effect/turf_decal/plaque{ icon_state = "L7" }, @@ -23627,7 +22910,8 @@ dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; - pixel_x = 25 + pixel_x = 25; + req_access_txt = "29" }, /turf/open/floor/plasteel/purple/corner, /area/hallway/primary/central) @@ -23639,7 +22923,8 @@ dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; - pixel_x = -25 + pixel_x = -25; + req_access_txt = "29" }, /obj/machinery/camera{ c_tag = "Mech Bay"; @@ -23778,10 +23063,6 @@ /area/hallway/primary/central) "bio" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Lounge"; - location = "Bar2" - }, /obj/effect/turf_decal/plaque{ icon_state = "L8" }, @@ -23818,7 +23099,8 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research{ name = "Mech Bay"; - req_access_txt = "29" + req_access_txt = "29"; + req_one_access_txt = "0" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -23876,24 +23158,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"biB" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "biC" = ( /obj/structure/cable{ icon_state = "2-8" @@ -23910,38 +23174,20 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "biD" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"biE" = ( -/obj/structure/girder, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 }, -/area/maintenance/department/cargo) +/turf/open/floor/circuit/killroom, +/area/science/xenobiology) "biF" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"biG" = ( -/obj/item/cigbutt/cigarbutt, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/department/cargo) -"biH" = ( -/obj/structure/closet/radiation, -/obj/effect/decal/cleanable/cobweb{ - icon_state = "cobweb2" - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/department/cargo) "biI" = ( /obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ dir = 8 @@ -24009,15 +23255,28 @@ /obj/item/pen{ layer = 3.2 }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, /turf/open/floor/plasteel/blue/side, /area/hallway/primary/central) "biP" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-05" }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/purple/side, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/sign/departments/examroom{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/blue/side, /area/hallway/primary/central) "biR" = ( /obj/machinery/light, @@ -24025,12 +23284,7 @@ c_tag = "Central Primary Hallway Genetics"; dir = 1 }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-05" - }, -/turf/open/floor/plasteel/blue/corner{ - dir = 8 - }, +/turf/open/floor/plasteel/blue/side, /area/hallway/primary/central) "biS" = ( /obj/structure/closet/emcloset, @@ -24040,38 +23294,27 @@ /area/hallway/primary/central) "biT" = ( /obj/structure/closet/firecloset, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, /turf/open/floor/plasteel/blue/corner{ dir = 8 }, /area/hallway/primary/central) -"biU" = ( -/obj/structure/grille, -/obj/structure/window/fulltile, -/turf/open/floor/plating, -/area/medical/medbay/zone3) -"biV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Medbay" - }, -/turf/open/floor/plasteel/white/side, -/area/medical/medbay/zone3) "biW" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Medbay" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/maintenance{ + name = "Port Emergency Storage"; + req_access_txt = "0"; + req_one_access_txt = "0" }, -/turf/open/floor/plasteel/white/side, -/area/medical/medbay/zone3) +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/storage/emergency/port) "biX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Medbay" - }, -/turf/open/floor/plasteel/white/side, -/area/medical/medbay/zone3) +/turf/closed/wall, +/area/storage/emergency/port) "biY" = ( /turf/closed/wall, /area/medical/morgue) @@ -24124,7 +23367,16 @@ /turf/open/floor/plasteel/blue/side, /area/hallway/primary/central) "bjj" = ( -/turf/open/floor/plasteel/blue/side, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/purple/side, /area/hallway/primary/central) "bjk" = ( /obj/machinery/camera{ @@ -24147,33 +23399,18 @@ }, /turf/open/floor/plasteel/purple/side, /area/hallway/primary/central) -"bjo" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/science/research/lobby) "bjp" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/green/corner{ dir = 8 }, -/area/science/research/lobby) -"bjq" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bjr" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/green/corner, -/area/science/research/lobby) -"bjs" = ( -/obj/structure/sign/departments/science, -/turf/closed/wall, -/area/science/research/lobby) -"bjt" = ( -/turf/closed/wall, -/area/science/research/lobby) +/area/hallway/primary/aft) "bju" = ( /turf/open/floor/plasteel, /area/science/robotics/mechbay) @@ -24187,59 +23424,21 @@ /turf/closed/wall/r_wall, /area/science/explab) "bjx" = ( -/turf/closed/wall/r_wall, -/area/maintenance/department/cargo) -"bjy" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 + dir = 4 }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bjz" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bjA" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/cargo) "bjB" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bjC" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/turf/open/floor/circuit/killroom, +/area/science/xenobiology) "bjD" = ( /obj/structure/cable{ icon_state = "4-8" @@ -24250,26 +23449,22 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "bjE" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 + dir = 5 }, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +/obj/structure/cable{ + icon_state = "1-4" }, -/area/maintenance/department/cargo) -"bjF" = ( -/obj/item/trash/sosjerky, -/obj/effect/decal/cleanable/vomit/old, /turf/open/floor/plating, /area/maintenance/department/cargo) -"bjH" = ( -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating{ - icon_state = "panelscorched" +"bjF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, /area/maintenance/department/cargo) "bjI" = ( /obj/structure/bookcase/random/nonfiction, @@ -24286,38 +23481,22 @@ "bjL" = ( /turf/closed/wall, /area/storage/emergency/port) -"bjM" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock{ - name = "Port Emergency Storage" - }, -/turf/open/floor/plasteel/freezer, -/area/storage/emergency/port) "bjN" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/storage/emergency/port) -"bjO" = ( -/turf/closed/wall, -/area/medical/medbay/zone3) "bjP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/whiteblue/corner{ - dir = 8 - }, -/area/medical/medbay/zone3) +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/storage/emergency/port) "bjQ" = ( /turf/open/floor/plasteel/white, /area/medical/medbay/zone3) "bjR" = ( +/obj/structure/plasticflaps/opaque, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whiteblue/corner, -/area/medical/medbay/zone3) +/turf/open/floor/plating, +/area/storage/emergency/port) "bjS" = ( /obj/machinery/airalarm/unlocked{ pixel_y = 23 @@ -24383,7 +23562,6 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -24458,23 +23636,6 @@ dir = 1 }, /area/medical/medbay/central) -"bkj" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/public/glass, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"bkk" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"bkl" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/public/glass, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "bkm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/sink{ @@ -24484,23 +23645,27 @@ /turf/open/floor/plasteel/green/side{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bkn" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sci3"; + location = "Sci2" + }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bko" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/green/side{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bkp" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bkq" = ( /obj/structure/table, /obj/item/gps{ @@ -24515,11 +23680,11 @@ pixel_y = 16 }, /turf/open/floor/plasteel/dark, -/area/science/research/lobby) +/area/hallway/primary/aft) "bkr" = ( /obj/machinery/modular_computer/console/preset/civilian, /turf/open/floor/plasteel/dark, -/area/science/research/lobby) +/area/hallway/primary/aft) "bks" = ( /obj/structure/table, /obj/item/wrench, @@ -24527,7 +23692,7 @@ /obj/item/electronics/apc, /obj/item/electronics/airlock, /turf/open/floor/plasteel/dark, -/area/science/research/lobby) +/area/hallway/primary/aft) "bkt" = ( /turf/closed/wall/r_wall, /area/science/robotics/lab) @@ -24565,7 +23730,8 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research{ name = "Mech Bay"; - req_access_txt = "29" + req_access_txt = "29"; + req_one_access_txt = "0" }, /turf/open/floor/plasteel, /area/science/robotics/lab) @@ -24595,89 +23761,25 @@ }, /turf/open/floor/engine, /area/science/explab) -"bkC" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Testing Lab Maintenance"; - req_access_txt = "47" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "bkD" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/explab) -"bkE" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "bkF" = ( /turf/closed/wall/r_wall, /area/science/xenobiology) -"bkG" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/science/xenobiology) "bkH" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + glass = 1; + name = "Slime Euthanization Chamber"; + opacity = 0; + req_access_txt = "55" }, -/turf/closed/wall/r_wall, +/turf/open/floor/plating, /area/science/xenobiology) -"bkI" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/science/xenobiology) -"bkJ" = ( -/obj/item/extinguisher, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bkK" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bkL" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/item/reagent_containers/food/snacks/deadmouse, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/department/cargo) -"bkM" = ( -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bkN" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bkO" = ( -/obj/item/tank/internals/air, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "bkP" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -24729,17 +23831,17 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bkX" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ pixel_x = -28 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel/freezer, /area/storage/emergency/port) "bkY" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/freezer, /area/storage/emergency/port) "bkZ" = ( @@ -24748,34 +23850,38 @@ }, /obj/machinery/camera{ c_tag = "Genetics Cloning Foyer"; + network = list("ss13","medbay"); dir = 2 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/power/apc{ + dir = 1; + name = "Port Emergency Storage APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + pixel_y = 1 + }, +/turf/open/floor/plasteel/freezer, +/area/storage/emergency/port) +"bla" = ( /obj/machinery/airalarm{ pixel_y = 22 }, /turf/open/floor/plasteel/freezer, /area/storage/emergency/port) -"bla" = ( -/obj/machinery/space_heater, -/turf/open/floor/plasteel/freezer, -/area/storage/emergency/port) "blb" = ( -/obj/structure/closet/l3closet, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/medical/medbay/zone3) +/turf/open/floor/plating, +/area/storage/emergency/port) "blc" = ( +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 2 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/poster/official/walk{ - pixel_x = 32 - }, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel/whiteblue/corner, -/area/medical/medbay/zone3) +/turf/open/floor/plating, +/area/storage/emergency/port) "bld" = ( /obj/structure/bodycontainer/morgue, /turf/open/floor/plasteel/dark, @@ -24892,18 +23998,19 @@ /area/medical/medbay/central) "bls" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) +/turf/open/floor/plasteel/yellow/corner{ + dir = 1 + }, +/area/hallway/primary/central) "blt" = ( /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/hallway/primary/aft) "blu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) +/turf/open/floor/plasteel/yellow/corner{ + dir = 4 + }, +/area/hallway/primary/central) "blv" = ( /obj/structure/table, /obj/item/paicard, @@ -24911,7 +24018,7 @@ /turf/open/floor/plasteel/green/side{ dir = 9 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "blw" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -24919,7 +24026,7 @@ /turf/open/floor/plasteel/green/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "blx" = ( /obj/machinery/light{ dir = 1 @@ -24928,7 +24035,7 @@ /turf/open/floor/plasteel/green/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bly" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ @@ -24939,7 +24046,7 @@ /turf/open/floor/plasteel/green/corner{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "blz" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -24947,7 +24054,7 @@ /turf/open/floor/plasteel/green/corner{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "blA" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -24956,7 +24063,7 @@ /turf/open/floor/plasteel/green/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "blB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -24965,7 +24072,7 @@ /turf/open/floor/plasteel/green/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "blC" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -24974,7 +24081,7 @@ /turf/open/floor/plasteel/green/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "blD" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -24983,7 +24090,7 @@ /turf/open/floor/plasteel/green/side{ dir = 5 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "blE" = ( /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/plasteel/vault{ @@ -25110,88 +24217,64 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/book/manual/experimentor, /turf/open/floor/engine, /area/science/explab) "blT" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Testing Lab APC"; - pixel_y = 25 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/engine, -/area/science/explab) -"blU" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, -/turf/open/floor/engine, -/area/science/explab) -"blV" = ( -/obj/structure/sign/plaques/kiddie/perfect_drone{ +/obj/structure/table/reinforced, +/obj/item/integrated_circuit_printer, +/obj/item/integrated_electronics/wirer, +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, -/turf/open/floor/engine, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/explab) +"blU" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/integrated_electronics/debugger, +/obj/machinery/computer/security/telescreen/circuitry{ + pixel_y = 30 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/explab) +"blV" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/item/stack/sheet/metal/ten, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, /area/science/explab) "blW" = ( -/obj/machinery/door/window/eastright{ - base_state = "left"; - dir = 8; - icon_state = "left"; - name = "Research Division Delivery"; - req_access_txt = "47" +/obj/structure/table/reinforced, +/obj/item/integrated_electronics/wirer, +/obj/machinery/light{ + dir = 1 }, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=2"; - dir = 8; - freq = 1400; - location = "Research Division" +/obj/machinery/computer/security/telescreen/circuitry{ + pixel_y = 30 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/obj/effect/turf_decal/delivery, -/obj/structure/window/reinforced, -/turf/open/floor/engine, /area/science/explab) "blX" = ( /turf/open/floor/engine, /area/science/xenobiology) -"blY" = ( -/obj/machinery/camera{ - c_tag = "Xenobiology Test Chamber"; - dir = 2; - network = list("xeno","rd") - }, -/obj/machinery/atmospherics/pipe/simple/general/hidden, -/obj/machinery/light{ - dir = 1; - light_color = "#d1dfff" - }, -/turf/open/floor/engine, -/area/science/xenobiology) "blZ" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden, -/turf/closed/wall/r_wall, -/area/science/xenobiology) -"bma" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/computer/camera_advanced/xenobio, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bmb" = ( -/obj/item/trash/candle, -/obj/item/cautery, -/turf/open/floor/plating, -/area/maintenance/department/cargo) +/area/science/xenobiology) "bmc" = ( /obj/structure/table, /obj/machinery/light/small{ @@ -25231,41 +24314,30 @@ }, /obj/machinery/door/airlock/maintenance{ name = "Genetics Maintenance"; + req_access_txt = "0"; req_one_access_txt = "12;45;5;9" }, /turf/open/floor/plating, /area/maintenance/department/engine) "bmh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/freezer, +/area/storage/emergency/port) +"bmi" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/machinery/power/apc{ - dir = 2; - name = "Lounge APC"; - areastring = "/area/storage/emergency/port"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, /obj/structure/cable{ icon_state = "1-4" }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel/freezer, -/area/storage/emergency/port) -"bmi" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /turf/open/floor/plasteel/freezer, /area/storage/emergency/port) "bmj" = ( @@ -25276,6 +24348,9 @@ /obj/structure/cable{ icon_state = "2-8" }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/plasteel/freezer, /area/storage/emergency/port) "bmk" = ( @@ -25285,32 +24360,20 @@ /turf/open/floor/plasteel/freezer, /area/storage/emergency/port) "bml" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/medical/medbay/zone3) -"bmm" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/whiteblue/corner{ - dir = 8 - }, -/area/medical/medbay/zone3) +/obj/structure/girder, +/turf/open/floor/plating, +/area/storage/emergency/port) "bmn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance"; + req_access_txt = "5" }, -/turf/open/floor/plasteel/white, -/area/medical/medbay/zone3) -"bmo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/chair{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 }, -/turf/open/floor/plasteel/whiteblue/corner, -/area/medical/medbay/zone3) +/turf/open/floor/plating, +/area/storage/emergency/port) "bmp" = ( /obj/structure/bodycontainer/morgue, /obj/machinery/light/small{ @@ -25344,6 +24407,7 @@ }, /obj/machinery/camera{ c_tag = "Medbay Security Post"; + network = list("ss13","medbay"); dir = 4 }, /obj/structure/closet/secure_closet/security/med, @@ -25390,6 +24454,10 @@ /area/medical/medbay/central) "bmy" = ( /obj/machinery/holopad, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Kitchen"; + location = "Med" + }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bmz" = ( @@ -25403,9 +24471,20 @@ }, /area/medical/medbay/central) "bmB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/yellow/corner{ + dir = 1 + }, +/area/hallway/primary/central) "bmC" = ( /turf/open/floor/plasteel, /area/hallway/primary/aft) @@ -25413,27 +24492,27 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"bmG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/science/research/lobby) "bmH" = ( /obj/machinery/holopad, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sci2"; + location = "Sci" + }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bmI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bmJ" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bmL" = ( /obj/structure/rack, /obj/item/storage/toolbox/electrical{ @@ -25525,9 +24604,7 @@ /turf/open/floor/circuit/telecomms/server, /area/science/server) "bmV" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector{ - on = 1 - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/on, /turf/open/floor/engine, /area/science/explab) "bmW" = ( @@ -25547,31 +24624,38 @@ /turf/open/floor/engine, /area/science/explab) "bmZ" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 +/obj/structure/table/reinforced, +/obj/item/integrated_electronics/analyzer, +/obj/machinery/magnetic_controller{ + autolink = 1; + pixel_x = -28; + pixel_y = 3 }, -/obj/machinery/light{ - dir = 8 +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23 - }, -/turf/open/floor/engine, /area/science/explab) "bna" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/scientist, -/obj/machinery/atmospherics/components/trinary/filter, -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/turf_decal/box/red, +/turf/open/floor/plasteel/vault{ + dir = 5 }, /area/science/explab) "bnb" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 +/obj/structure/table/reinforced, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/turf/open/floor/engine, /area/science/explab) "bnc" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater{ @@ -25583,28 +24667,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/science/xenobiology) -"bne" = ( -/obj/machinery/light/small{ - brightness = 3; - dir = 8; - light_color = "#d1ffee" - }, -/turf/open/floor/engine, -/area/science/xenobiology) -"bnf" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ - dir = 1; - id = "xenobio_out" - }, -/turf/open/floor/engine, -/area/science/xenobiology) -"bng" = ( -/obj/machinery/light/small{ - dir = 4; - light_color = "#d1ffee" - }, -/turf/open/floor/engine, -/area/science/xenobiology) "bnh" = ( /obj/machinery/light{ dir = 1; @@ -25619,25 +24681,12 @@ "bnj" = ( /turf/closed/wall, /area/science/xenobiology) -"bnk" = ( -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "bnl" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"bnm" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/atmospherics/pipe/manifold/general/hidden{ - dir = 1 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/department/cargo) "bnn" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 8 @@ -25682,6 +24731,7 @@ /obj/structure/chair/comfy{ dir = 8 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bnu" = ( @@ -25699,6 +24749,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/medical/glass{ name = "Cloning"; + req_access_txt = "0"; req_one_access_txt = "5;9" }, /obj/structure/cable{ @@ -25709,36 +24760,37 @@ /turf/open/floor/plasteel/freezer, /area/storage/emergency/port) "bnx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 +/obj/structure/sign/poster/official/random{ + pixel_x = -32 }, -/obj/machinery/camera{ - c_tag = "Medbay Port Entrance"; - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 }, -/obj/machinery/light{ +/obj/structure/table, +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/item/clothing/neck/stethoscope, +/obj/item/clothing/mask/surgical, +/turf/open/floor/plasteel/whiteblue/side{ dir = 8 }, -/turf/open/floor/plasteel/whiteblue/corner{ - dir = 8 - }, -/area/medical/medbay/zone3) +/area/storage/emergency/port) "bny" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ dir = 8; pixel_x = 28 }, -/obj/structure/table, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-11" }, -/obj/item/storage/box/masks, -/turf/open/floor/plasteel/whiteblue/corner, -/area/medical/medbay/zone3) +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 4 + }, +/area/storage/emergency/port) "bnz" = ( /obj/structure/table, /obj/item/folder/white, @@ -25811,7 +24863,7 @@ dir = 4 }, /turf/open/floor/plasteel/purple/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bnL" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -25820,7 +24872,7 @@ dir = 4 }, /turf/open/floor/plasteel/purple/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bnM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25831,13 +24883,13 @@ /turf/open/floor/plasteel/purple/corner{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bnN" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bnO" = ( /obj/machinery/rnd/production/circuit_imprinter, /obj/machinery/light{ @@ -25928,7 +24980,6 @@ }, /obj/machinery/door/firedoor/heavy, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/delivery, /turf/open/floor/engine, /area/science/explab) "bnY" = ( @@ -25940,21 +24991,18 @@ /turf/open/floor/engine, /area/science/explab) "bnZ" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-10" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/turf/open/floor/engine, /area/science/explab) "boa" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/general/visible, /turf/open/floor/engine, /area/science/explab) -"bob" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/item/wrench, -/turf/open/floor/engine, -/area/science/explab) "boc" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 8 @@ -25965,54 +25013,31 @@ /turf/closed/wall, /area/science/explab) "boe" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, -/obj/item/radio/intercom{ - dir = 0; - name = "Station Intercom (General)"; - pixel_x = -28 +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 }, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 +/obj/structure/window/reinforced{ + dir = 8 }, -/area/science/xenobiology) +/turf/open/floor/engine, +/area/science/explab) "bof" = ( -/obj/structure/table, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/trinary/filter, +/turf/open/floor/engine{ + name = "Holodeck Projector Floor" }, -/obj/item/storage/box/syringes, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 - }, -/area/science/xenobiology) +/area/science/explab) "bog" = ( -/obj/structure/table, -/obj/item/stack/sheet/mineral/plasma, -/obj/item/stack/sheet/mineral/plasma, -/obj/item/stack/sheet/mineral/plasma, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 }, -/area/science/xenobiology) +/turf/open/floor/engine, +/area/science/explab) "boh" = ( -/obj/structure/table, -/obj/item/pen, -/obj/item/clothing/glasses/science, -/obj/item/clothing/glasses/science, -/obj/item/paper_bin{ - layer = 2.9 - }, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 - }, -/area/science/xenobiology) -"boj" = ( -/obj/item/weldingtool, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/department/cargo) +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/engine, +/area/science/explab) "bok" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -26021,12 +25046,6 @@ icon_state = "platingdmg3" }, /area/maintenance/department/cargo) -"bol" = ( -/obj/machinery/atmospherics/pipe/manifold/general/hidden, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/department/cargo) "bom" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 8 @@ -26119,20 +25138,19 @@ }, /area/medical/genetics) "boA" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/whiteblue/corner{ +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/whiteblue/side{ dir = 8 }, /area/medical/medbay/zone3) "boB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table, -/obj/item/clothing/gloves/color/latex/nitrile, -/obj/item/clothing/neck/stethoscope, -/turf/open/floor/plasteel/whiteblue/corner, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 4 + }, /area/medical/medbay/zone3) "boC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -26219,6 +25237,7 @@ /obj/structure/bed/roller, /obj/machinery/camera{ c_tag = "Medbay Entrance"; + network = list("ss13","medbay"); dir = 1 }, /turf/open/floor/plasteel/whiteblue/side, @@ -26236,12 +25255,12 @@ /obj/structure/closet/emcloset, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/dark, -/area/science/research/lobby) +/area/hallway/primary/aft) "boQ" = ( /obj/structure/closet/firecloset/full, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/dark, -/area/science/research/lobby) +/area/hallway/primary/aft) "boR" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -26251,14 +25270,14 @@ }, /obj/item/pen, /turf/open/floor/plasteel/dark, -/area/science/research/lobby) +/area/hallway/primary/aft) "boS" = ( /obj/structure/chair, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "boT" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" @@ -26267,7 +25286,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "boU" = ( /obj/machinery/firealarm{ dir = 1; @@ -26285,11 +25304,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/science/research/lobby) -"boW" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "boX" = ( /obj/machinery/computer/rdconsole/robotics{ dir = 4 @@ -26367,7 +25382,9 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, /area/science/explab) "bpe" = ( /obj/machinery/computer/rdconsole/experiment, @@ -26375,7 +25392,9 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, /area/science/explab) "bpf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -26383,21 +25402,19 @@ /area/science/explab) "bpg" = ( /obj/structure/table/reinforced, -/obj/item/folder, -/obj/item/book/manual/experimentor, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel/white, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, /area/science/explab) "bph" = ( -/obj/machinery/disposal/bin, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, /obj/machinery/requests_console{ department = "Science"; departmentType = 2; @@ -26406,70 +25423,57 @@ pixel_y = 30; receive_ore_updates = 1 }, -/turf/open/floor/plasteel/white, +/obj/machinery/disposal/bin, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/camera{ + c_tag = "Experimentation Lab Central"; + dir = 2; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, /area/science/explab) "bpi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/closet/crate, +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target/syndicate, +/obj/item/target/syndicate, +/obj/item/gun/energy/laser/practice, +/obj/item/gun/energy/laser/practice, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/ears/earmuffs, +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/white, /area/science/explab) -"bpj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/plasteel/white, -/area/science/explab) -"bpk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/science/explab) -"bpl" = ( -/obj/structure/rack, -/obj/item/stack/packageWrap, -/obj/item/stack/cable_coil, -/obj/item/wirecutters, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/science/explab) -"bpm" = ( -/obj/machinery/monkey_recycler, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23 - }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) "bpn" = ( /turf/open/floor/plasteel/white, /area/science/xenobiology) "bpo" = ( -/obj/effect/landmark/start/scientist, -/obj/structure/chair/office/light{ +/obj/item/wrench, +/obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) +/turf/open/floor/engine, +/area/science/explab) "bpp" = ( -/obj/machinery/computer/camera_advanced/xenobio{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) +/turf/open/floor/engine, +/area/science/explab) "bpq" = ( -/obj/structure/sign/warning/electricshock, -/turf/closed/wall/r_wall, -/area/science/xenobiology) +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "bpr" = ( /obj/structure/disposaloutlet{ dir = 1 @@ -26477,12 +25481,6 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/engine, /area/science/xenobiology) -"bps" = ( -/obj/machinery/space_heater, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/department/cargo) "bpt" = ( /obj/structure/table, /obj/item/folder, @@ -26564,7 +25562,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/whiteblue/corner{ +/turf/open/floor/plasteel/whiteblue/side{ dir = 8 }, /area/medical/medbay/zone3) @@ -26588,7 +25586,7 @@ /area/medical/medbay/zone3) "bpG" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/grunge{ +/obj/machinery/door/airlock/centcom{ name = "Morgue"; opacity = 1; req_access_txt = "6" @@ -26642,6 +25640,13 @@ }, /turf/open/floor/plasteel/dark, /area/medical/morgue) +"bpL" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "bpM" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ @@ -26752,24 +25757,6 @@ "bpY" = ( /turf/closed/wall, /area/medical/chemistry) -"bpZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/yellow/corner{ - dir = 1 - }, -/area/hallway/primary/aft) -"bqa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/directions/engineering{ - pixel_x = 32 - }, -/turf/open/floor/plasteel/yellow/corner{ - dir = 4 - }, -/area/hallway/primary/aft) "bqb" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -26787,7 +25774,7 @@ /obj/machinery/door/window/eastright{ dir = 2; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "research_shutters_2"; @@ -26806,7 +25793,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bqe" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -26815,7 +25802,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bqf" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -26826,7 +25813,7 @@ /turf/open/floor/plasteel/green/side{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bqg" = ( /obj/structure/table, /obj/item/book/manual/robotics_cyborgs{ @@ -26836,10 +25823,12 @@ /obj/item/storage/belt/utility, /obj/item/reagent_containers/glass/beaker/large, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -27 }, +/obj/item/radio/headset/headset_sci{ + pixel_x = -3 + }, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -26908,14 +25897,18 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -24 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 9 + }, /area/science/explab) "bqp" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /obj/structure/chair/stool, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, /area/science/explab) "bqq" = ( /obj/effect/landmark/start/scientist, @@ -26923,142 +25916,99 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, /area/science/explab) "bqr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, /area/science/explab) "bqs" = ( /turf/open/floor/plasteel/white, /area/science/explab) "bqt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/science/explab) -"bqu" = ( -/obj/structure/table, +"bqv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/explab) +"bqw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/explab) +"bqx" = ( /obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, /obj/item/stack/sheet/metal/fifty, -/obj/item/assembly/timer, -/obj/item/assembly/timer, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 4 + }, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 4 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, /area/science/explab) -"bqv" = ( -/obj/machinery/processor/slime, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"bqw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"bqx" = ( -/obj/machinery/smartfridge/extract/preloaded, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"bqy" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/shieldwallgen/xenobiologyaccess, -/turf/open/floor/plating, -/area/science/xenobiology) -"bqz" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/turf/open/floor/engine, -/area/science/xenobiology) "bqA" = ( -/obj/structure/cable{ - icon_state = "0-8" +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/engine, -/area/science/xenobiology) -"bqB" = ( -/obj/machinery/door/window/southleft{ - dir = 1; - name = "Test Chamber"; - req_access_txt = "55" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/turf/open/floor/engine, -/area/science/xenobiology) +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "bqC" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "0-8" +/obj/machinery/monkey_recycler, +/obj/structure/window/reinforced, +/obj/structure/extinguisher_cabinet{ + pixel_x = -26 }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/engine, -/area/science/xenobiology) -"bqD" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/engine, +/turf/open/floor/plasteel, /area/science/xenobiology) "bqE" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/shieldwallgen/xenobiologyaccess, -/turf/open/floor/plating, +/obj/structure/table, +/obj/structure/window/reinforced, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel/whitepurple/side, /area/science/xenobiology) "bqF" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden, -/turf/closed/wall, +/obj/machinery/computer/camera_advanced/xenobio{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/whitepurple/side, /area/science/xenobiology) "bqG" = ( /obj/machinery/door/poddoor/preopen{ @@ -27146,30 +26096,16 @@ }, /turf/open/floor/engine, /area/science/xenobiology) -"bqM" = ( +"bqO" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "0"; + req_one_access_txt = "12; 55" + }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bqN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bqO" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/item/cigbutt, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/maintenance/department/cargo) "bqS" = ( @@ -27192,7 +26128,7 @@ /obj/machinery/camera{ c_tag = "Genetics Monkey Pen Fore"; dir = 4; - network = list("ss13","rd") + network = list("ss13","medbay") }, /obj/machinery/light/small{ dir = 8 @@ -27258,6 +26194,7 @@ /obj/machinery/door/airlock/medical/glass{ id_tag = "GeneticsDoor"; name = "Cloning"; + req_access_txt = "0"; req_one_access_txt = "5;9" }, /obj/structure/cable{ @@ -27307,6 +26244,9 @@ /obj/structure/cable{ icon_state = "0-8" }, +/obj/machinery/light{ + dir = 4 + }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 4 }, @@ -27377,7 +26317,8 @@ /obj/structure/table/glass, /obj/item/reagent_containers/glass/beaker/large, /obj/item/reagent_containers/glass/beaker/large, -/obj/item/clothing/glasses/science, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/dropper, /turf/open/floor/plasteel/whiteyellow/side{ dir = 1 }, @@ -27395,30 +26336,13 @@ dir = 5 }, /area/medical/chemistry) -"brn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/yellow/corner{ - dir = 1 - }, -/area/hallway/primary/aft) "bro" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/corner{ - dir = 4 - }, -/area/hallway/primary/aft) +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/maintenance/department/engine) "brp" = ( -/obj/structure/table, -/obj/item/crowbar, -/obj/item/wrench, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_x = -32; - receive_ore_updates = 1 - }, -/obj/item/book/manual/research_and_development, +/obj/item/storage/toolbox/mechanical, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -27429,6 +26353,7 @@ name = "old sink"; pixel_y = 28 }, +/obj/item/stack/cable_coil/orange, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -27441,6 +26366,9 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, +/obj/machinery/airalarm/unlocked{ + pixel_y = 23 + }, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -27463,11 +26391,11 @@ }, /area/science/lab) "bru" = ( -/obj/item/storage/toolbox/mechanical, /obj/machinery/holopad, /obj/machinery/light_switch{ - pixel_x = 22 + pixel_x = 25 }, +/obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -27481,12 +26409,9 @@ /turf/open/floor/plasteel/purple/side{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "brw" = ( -/obj/structure/closet/wardrobe/robotics_black, -/obj/item/radio/headset/headset_sci{ - pixel_x = -3 - }, +/obj/machinery/vending/wardrobe/robo_wardrobe, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -27551,6 +26476,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/item/bot_assembly/cleanbot, /turf/open/floor/plasteel/white, /area/science/robotics/lab) "brB" = ( @@ -27575,9 +26501,6 @@ /area/science/robotics/lab) "brD" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/machinery/light_switch{ - pixel_x = -22 - }, /turf/open/floor/plasteel/dark, /area/science/server) "brE" = ( @@ -27599,20 +26522,17 @@ name = "Connector Port (Air Supply)" }, /obj/machinery/light_switch{ - pixel_x = -22 + pixel_x = -25 + }, +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 }, -/turf/open/floor/plasteel/white, /area/science/explab) "brH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/explab) -"brI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/science/explab) "brJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -27620,152 +26540,72 @@ /turf/open/floor/plasteel/white, /area/science/explab) "brK" = ( -/obj/structure/chair/stool, -/obj/effect/decal/cleanable/oil{ - icon_state = "floor5" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/table/reinforced, +/obj/machinery/computer/libraryconsole/bookmanagement, /turf/open/floor/plasteel/white, /area/science/explab) "brL" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, +/obj/machinery/bookbinder, /turf/open/floor/plasteel/white, /area/science/explab) "brM" = ( -/obj/structure/table, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28 - }, +/obj/machinery/libraryscanner, /turf/open/floor/plasteel/white, /area/science/explab) -"brN" = ( -/obj/structure/table/glass, -/obj/item/folder, -/obj/item/pen, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) "brO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"brP" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"brQ" = ( -/obj/machinery/computer/camera_advanced/xenobio{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Xenobiology Port"; - dir = 8; - network = list("ss13","rd") - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 2 - }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) "brR" = ( /obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/xenobiology) -"brS" = ( -/obj/item/wrench, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/science/xenobiology) "brT" = ( -/obj/machinery/computer/security/telescreen{ - name = "Test Chamber Monitor"; - network = list("xeno"); - pixel_y = 2 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/science/xenobiology) -"brU" = ( -/obj/machinery/button/door{ - id = "misclab"; - name = "Test Chamber Blast Doors"; - pixel_y = -2; - req_access_txt = "55" - }, -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, /obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/science/xenobiology) -"brV" = ( -/obj/machinery/door/window/southleft{ - name = "Test Chamber"; - req_access_txt = "55" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/science/xenobiology) -"brW" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/science/xenobiology) -"brX" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/portable_atmospherics/canister/bz, -/turf/open/floor/plasteel, -/area/science/xenobiology) -"brY" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/science/xenobiology) -"brZ" = ( -/obj/structure/sign/departments/xenobio, -/obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 9 }, -/turf/closed/wall, +/obj/structure/closet/l3closet, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/xenobiology) +"brU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/sign/departments/xenobio{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/xenobiology) +"brV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/xenobiology) +"brW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 1 + }, +/area/science/xenobiology) +"brX" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/darkblue/side{ + dir = 1 + }, /area/science/xenobiology) "bsa" = ( /obj/machinery/disposal/bin, @@ -27843,17 +26683,21 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "bsf" = ( -/obj/machinery/door/airlock/maintenance{ - req_one_access_txt = "12; 55" +/obj/machinery/camera{ + c_tag = "Xenobiology Starboard"; + dir = 2; + network = list("ss13","rd") }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/sign/departments/xenobio{ + pixel_y = 32 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/plating, -/area/maintenance/department/cargo) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 1 + }, +/area/science/xenobiology) "bsl" = ( /obj/structure/sign/warning/vacuum/external, /obj/effect/spawner/structure/window/reinforced, @@ -27896,6 +26740,7 @@ /obj/machinery/dna_scannernew, /obj/machinery/camera{ c_tag = "Genetics Cloning"; + network = list("ss13","medbay"); dir = 4 }, /obj/machinery/airalarm/unlocked{ @@ -28039,6 +26884,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ + id_tag = "medbaybolts"; name = "Medbay" }, /turf/open/floor/plasteel/whiteblue/corner{ @@ -28050,6 +26896,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ + id_tag = "medbaybolts"; name = "Medbay" }, /turf/open/floor/plasteel/whiteblue/corner, @@ -28069,11 +26916,8 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "bsL" = ( -/obj/item/book/manual/wiki/chemistry, /obj/item/storage/box/beakers, /obj/structure/table/glass, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/dropper, /turf/open/floor/plasteel/white, /area/medical/chemistry) "bsM" = ( @@ -28085,38 +26929,13 @@ layer = 2.7 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = 29 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/whiteyellow/side{ + dir = 4 + }, /area/medical/chemistry) -"bsO" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/yellow/corner{ - dir = 1 - }, -/area/hallway/primary/aft) -"bsP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"bsQ" = ( -/obj/structure/table, -/obj/structure/extinguisher_cabinet{ - pixel_x = -26 - }, -/obj/item/disk/tech_disk, -/obj/item/disk/design_disk, -/turf/open/floor/plasteel/white, -/area/science/lab) "bsR" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, @@ -28143,7 +26962,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bsV" = ( /obj/structure/chair{ dir = 8 @@ -28156,7 +26975,7 @@ /turf/open/floor/plasteel/green/side{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bsW" = ( /obj/item/twohanded/required/kirbyplants, /turf/open/floor/plasteel/vault{ @@ -28256,127 +27075,92 @@ /obj/structure/rack, /obj/item/crowbar, /obj/item/wrench, -/turf/open/floor/plasteel/white, -/area/science/explab) -"bth" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/white, -/area/science/explab) -"bti" = ( -/obj/machinery/light, -/obj/structure/closet/radiation, -/turf/open/floor/plasteel/white, -/area/science/explab) -"btj" = ( -/obj/structure/table, -/turf/open/floor/plasteel/white, -/area/science/explab) -"btk" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/obj/item/clothing/ears/earmuffs, -/turf/open/floor/plasteel/white, -/area/science/explab) -"btl" = ( -/obj/structure/table, -/obj/item/electropack, -/obj/item/healthanalyzer, -/obj/item/assembly/signaler, -/obj/machinery/light, -/obj/item/assembly/voice, -/obj/machinery/camera{ - c_tag = "Experimentation Lab"; - dir = 1; - network = list("ss13","rd") - }, -/turf/open/floor/plasteel/white, -/area/science/explab) -"btm" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/item/screwdriver, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/science/explab) -"btn" = ( -/obj/structure/table, -/obj/item/hand_labeler, -/obj/item/clothing/glasses/science, -/obj/item/clothing/glasses/science, -/turf/open/floor/plasteel/white, -/area/science/explab) -"bto" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, /obj/machinery/firealarm{ dir = 8; - pixel_x = -27 + pixel_x = -28 }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"btp" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/item/multitool, +/obj/item/multitool, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/science/explab) +"bth" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, /turf/open/floor/plasteel/white, -/area/science/xenobiology) -"btq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/area/science/explab) +"bti" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 }, /turf/open/floor/plasteel/white, -/area/science/xenobiology) -"btr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, +/area/science/explab) +"btk" = ( /obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/explab) +"btl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/explab) +"btp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/white, -/area/science/xenobiology) +/area/science/explab) "bts" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/darkpurple/side{ - dir = 1 +/turf/open/floor/plasteel/whitepurple/side{ + dir = 4 }, -/area/science/xenobiology) +/area/science/explab) "btt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 1 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 }, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Lab"; + req_access_txt = "55" + }, +/turf/open/floor/plasteel/dark, /area/science/xenobiology) "btu" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plasteel/darkgreen/side{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, +/turf/open/floor/plasteel/dark, /area/science/xenobiology) "btv" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plasteel/darkpurple/side{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 }, +/turf/open/floor/plasteel/dark, /area/science/xenobiology) "btw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -28397,34 +27181,6 @@ dir = 1 }, /area/science/xenobiology) -"bty" = ( -/obj/machinery/camera{ - c_tag = "Xenobiology Starboard Fore"; - dir = 2; - network = list("ss13","rd") - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = 28 - }, -/turf/open/floor/plasteel/darkpurple/side{ - dir = 1 - }, -/area/science/xenobiology) -"btz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/darkpurple/side{ - dir = 1 - }, -/area/science/xenobiology) "btA" = ( /obj/structure/chair{ dir = 4 @@ -28445,31 +27201,49 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/floorgrime, /area/science/xenobiology) -"btC" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/biohazard, -/turf/open/floor/plating, -/area/science/xenobiology) -"btD" = ( -/turf/open/floor/plating/airless, -/area/science/xenobiology) "btE" = ( -/obj/effect/decal/remains/xeno, -/turf/open/floor/plating/airless, -/area/science/xenobiology) -"btF" = ( -/obj/structure/chair{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb, -/turf/open/floor/plating, -/area/maintenance/department/cargo) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"btF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/landmark/blobstart, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel/floorgrime, +/area/science/xenobiology) "btK" = ( /obj/docking_port/stationary{ dir = 8; @@ -28486,7 +27260,8 @@ dir = 4 }, /obj/machinery/door/airlock/external{ - name = "Port Docking Bay 2" + name = "Port Docking Bay 2"; + req_access_txt = "0" }, /turf/open/floor/plating, /area/hallway/secondary/entry) @@ -28495,7 +27270,8 @@ dir = 8 }, /obj/machinery/door/airlock/external{ - name = "Port Docking Bay 2" + name = "Port Docking Bay 2"; + req_access_txt = "0" }, /turf/open/floor/plating, /area/hallway/secondary/entry) @@ -28688,8 +27464,8 @@ c_tag = "Chemistry"; dir = 4 }, -/turf/open/floor/plasteel/whiteyellow/side{ - dir = 8 +/turf/open/floor/plasteel/whiteyellow/corner{ + dir = 1 }, /area/medical/chemistry) "buk" = ( @@ -28699,10 +27475,10 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "bul" = ( -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 8 }, +/obj/machinery/disposal/bin, /turf/open/floor/plasteel/white, /area/medical/chemistry) "bum" = ( @@ -28710,34 +27486,10 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "bun" = ( -/obj/machinery/chem_heater, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28 - }, -/turf/open/floor/plasteel/whiteyellow/side{ - dir = 6 +/turf/open/floor/plasteel/whiteyellow/corner{ + dir = 4 }, /area/medical/chemistry) -"buo" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/oil{ - icon_state = "floor6" - }, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/reagent_containers/glass/beaker/large, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/obj/item/storage/box/beakers, -/obj/item/clothing/glasses/welding, -/turf/open/floor/plasteel/white, -/area/science/lab) "bup" = ( /obj/machinery/rnd/destructive_analyzer, /obj/effect/turf_decal/delivery, @@ -28780,7 +27532,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "buu" = ( /obj/structure/chair{ dir = 8 @@ -28790,7 +27542,7 @@ /turf/open/floor/plasteel/green/side{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "buv" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -28799,7 +27551,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/airlock/research{ name = "Robotics Lab"; - req_access_txt = "29" + req_access_txt = "29"; + req_one_access_txt = "0" }, /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, @@ -28813,14 +27566,14 @@ /turf/open/floor/plasteel/darkpurple/side{ dir = 8 }, -/area/science/research) +/area/science/explab) "bux" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "buy" = ( /obj/item/twohanded/required/kirbyplants/photosynthetic{ pixel_y = 10 @@ -28829,77 +27582,59 @@ icon_state = "darkpurple"; dir = 4 }, -/area/science/research) +/area/science/explab) "buz" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/science/explab) "buA" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research/glass{ - name = "Experimentation Lab"; - req_access_txt = "47" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/science/explab) -"buB" = ( -/obj/item/radio/intercom{ - dir = 0; - name = "Station Intercom (General)"; - pixel_y = -28 - }, -/turf/closed/wall, -/area/science/explab) -"buC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/science/explab) -"buD" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/light{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-14" - }, -/obj/machinery/light_switch{ - pixel_x = -22 - }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"buE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"buF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"buG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/explab) +"buB" = ( /obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) +/turf/open/floor/plasteel, +/area/science/explab) +"buC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/explab) +"buD" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-11" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/explab) +"buE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/explab) +"buF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/explab) +"buG" = ( +/turf/open/floor/plasteel/whitepurple/side, +/area/science/explab) "buH" = ( -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/plasteel/whitepurple/side{ + dir = 6 }, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/area/science/explab) "buI" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28914,13 +27649,9 @@ /turf/open/floor/plasteel/dark, /area/science/xenobiology) "buK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/whitepurple/side, /area/science/xenobiology) "buL" = ( /obj/structure/disposalpipe/segment{ @@ -28970,21 +27701,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"buP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) "buQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28997,94 +27713,24 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"buR" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) -"buS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Kill Room Access"; - req_access_txt = "55" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/xenobiology) -"buT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/floorgrime, -/area/science/xenobiology) "buU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -29 + }, +/turf/open/floor/plasteel/darkpurple/side, +/area/science/xenobiology) +"buW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/blobstart, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/turf/open/floor/plasteel/floorgrime, -/area/science/xenobiology) -"buV" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research/glass{ - name = "Kill Room"; - req_access_txt = "55" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plating, -/area/science/xenobiology) -"buW" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Xenobiology Kill Room"; - dir = 8; - network = list("ss13","rd") - }, -/turf/open/floor/plating/airless, +/turf/open/floor/plasteel/darkpurple/side, /area/science/xenobiology) "bva" = ( /turf/closed/wall, @@ -29120,8 +27766,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/camera{ c_tag = "Medbay Port Hallway"; + network = list("ss13","medbay"); dir = 4 }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/closet/wardrobe/pjs, /turf/open/floor/plasteel/white, /area/medical/medbay/zone3) "bvg" = ( @@ -29131,12 +27783,17 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/plasteel/white, /area/medical/medbay/zone3) "bvh" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8; - sortType = 9 +/obj/structure/disposalpipe/junction/flip{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/open/floor/plasteel/white, /area/medical/medbay/zone3) @@ -29145,12 +27802,18 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bvj" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bvk" = ( @@ -29158,6 +27821,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bvl" = ( @@ -29170,13 +27836,18 @@ /obj/structure/disposalpipe/junction/flip{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bvn" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bvo" = ( @@ -29217,47 +27888,17 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "bvt" = ( -/obj/machinery/shower{ - dir = 8; - name = "emergency shower" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 }, -/obj/machinery/requests_console{ - department = "Chemistry"; - departmentType = 2; - pixel_x = 32; - receive_ore_updates = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/medical/chemistry) "bvu" = ( -/obj/machinery/camera{ - c_tag = "Aft Primary Hallway Chemistry"; - dir = 4; - start_active = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/yellow/corner{ - dir = 1 - }, -/area/hallway/primary/aft) -"bvv" = ( -/obj/item/radio/intercom{ - dir = 0; - name = "Station Intercom (General)"; - pixel_x = -28; - pixel_y = 3 - }, -/obj/machinery/button/door{ - dir = 2; - id = "research_shutters_2"; - name = "Shutters Control Button"; - pixel_x = -28; - pixel_y = -7; - req_access_txt = "47" - }, -/turf/open/floor/plasteel/white, -/area/science/lab) +/turf/closed/wall, +/area/maintenance/department/engine) "bvw" = ( /obj/machinery/computer/rdconsole/core{ dir = 4 @@ -29289,7 +27930,7 @@ dir = 5 }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bvB" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -29300,31 +27941,29 @@ /turf/open/floor/plasteel/green/corner{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bvC" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/power/apc/highcap/ten_k{ - dir = 1; - name = "Research Lobby APC"; - pixel_y = 25 - }, -/obj/structure/cable{ - icon_state = "0-2" +/obj/machinery/newscaster{ + pixel_y = 34 }, /turf/open/floor/plasteel/green/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bvD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bvE" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -29339,7 +27978,7 @@ /turf/open/floor/plasteel/green/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bvF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -29353,7 +27992,7 @@ /turf/open/floor/plasteel/green/side{ dir = 5 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bvG" = ( /obj/machinery/door/poddoor/preopen{ id = "rndshutters"; @@ -29368,13 +28007,13 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/hallway/primary/aft) "bvH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/closed/wall/r_wall, -/area/science/research) +/area/science/explab) "bvI" = ( /obj/structure/closet/emcloset, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -29390,7 +28029,7 @@ network = list("ss13","rd") }, /turf/open/floor/plasteel/white, -/area/science/research) +/area/science/explab) "bvJ" = ( /obj/structure/closet/firecloset/full, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -29398,13 +28037,13 @@ }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, -/area/science/research) +/area/science/explab) "bvK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/closed/wall, -/area/science/research) +/area/science/explab) "bvL" = ( /obj/machinery/power/apc/highcap/ten_k{ dir = 1; @@ -29417,22 +28056,20 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/structure/sign/poster/random{ - pixel_x = -32 - }, -/obj/machinery/light{ - dir = 1 +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -28 }, /turf/open/floor/plasteel/darkpurple/side{ dir = 1 }, -/area/science/research) +/area/science/explab) "bvM" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/darkpurple/corner{ dir = 1 }, -/area/science/research) +/area/science/explab) "bvN" = ( /obj/structure/cable{ icon_state = "1-2" @@ -29442,7 +28079,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bvO" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -29451,21 +28088,19 @@ icon_state = "darkpurplecorners"; dir = 4 }, -/area/science/research) +/area/science/explab) "bvP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/light{ - dir = 1 - }, /obj/structure/extinguisher_cabinet{ pixel_y = 30 }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/darkpurple/side{ dir = 1 }, -/area/science/research) +/area/science/explab) "bvQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -29473,7 +28108,7 @@ /turf/open/floor/plasteel/darkpurple/side{ dir = 1 }, -/area/science/research) +/area/science/explab) "bvR" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -29481,117 +28116,76 @@ /turf/open/floor/plasteel/darkpurple/side{ dir = 1 }, -/area/science/research) +/area/science/explab) "bvS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, /turf/open/floor/plasteel/darkpurple/side{ dir = 1 }, -/area/science/research) +/area/science/explab) "bvT" = ( -/obj/machinery/vending/assist, -/obj/machinery/airalarm{ - dir = 2; - pixel_y = 22 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/darkpurple/side{ - dir = 1 - }, -/area/science/research) -"bvU" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-18" - }, -/turf/open/floor/plasteel/darkpurple/side{ - dir = 1 - }, -/area/science/research) -"bvV" = ( -/obj/structure/closet/firecloset, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 - }, -/area/science/xenobiology) -"bvW" = ( -/obj/structure/closet/l3closet, -/obj/machinery/camera{ - c_tag = "Xenobiology Access"; - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/window/reinforced{ + dir = 4; + layer = 2.9 }, +/obj/structure/closet/emcloset, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 - }, -/area/science/xenobiology) -"bvX" = ( -/obj/structure/closet/l3closet, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/plasteel/darkpurple/side{ + icon_state = "darkpurple"; dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/area/science/explab) +"bvU" = ( +/obj/machinery/recharger, +/obj/structure/table, +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 +/area/science/explab) +"bvV" = ( +/turf/open/floor/plasteel, +/area/science/explab) +"bvW" = ( +/obj/machinery/magnetic_module, +/obj/effect/landmark/blobstart, +/obj/structure/target_stake, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/area/science/xenobiology) +/area/science/explab) "bvY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/science/xenobiology) -"bvZ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"bwa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"bwb" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"bwc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"bwd" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/turf/open/floor/plasteel, +/area/science/explab) +"bvZ" = ( +/obj/structure/window/reinforced{ + dir = 8 }, -/turf/open/floor/plasteel/darkpurple/side, -/area/science/xenobiology) +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel/dark, +/area/science/explab) +"bwa" = ( +/turf/open/floor/plasteel/dark, +/area/science/explab) +"bwb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/science/explab) +"bwc" = ( +/obj/machinery/chem_master, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel/dark, +/area/science/explab) "bwe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -29607,91 +28201,28 @@ }, /turf/open/floor/plasteel/darkpurple/side, /area/science/xenobiology) -"bwg" = ( -/obj/machinery/light, -/obj/machinery/camera{ - c_tag = "Xenobiology Central"; - dir = 1; - network = list("ss13","rd") - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/darkpurple/side, -/area/science/xenobiology) "bwh" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/darkpurple/side, /area/science/xenobiology) -"bwi" = ( -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +"bwm" = ( +/turf/closed/wall, +/area/maintenance/department/science) +"bwn" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "0"; + req_one_access_txt = "12; 55" }, -/obj/machinery/camera{ - c_tag = "Xenobiology Starboard Aft"; - dir = 1; - network = list("ss13","rd") +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 }, -/turf/open/floor/plasteel/darkpurple/side, -/area/science/xenobiology) -"bwj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/science/xenobiology) -"bwk" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/apc/highcap/five_k{ - dir = 8; - name = "Xenobiology APC"; - pixel_x = -25 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/plasteel/floorgrime, -/area/science/xenobiology) -"bwl" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/floorgrime, -/area/science/xenobiology) -"bwm" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, /turf/open/floor/plating, -/area/maintenance/department/cargo) -"bwn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/department/cargo) -"bwo" = ( -/obj/structure/disposaloutlet{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/area/maintenance/department/science) "bwq" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -29794,12 +28325,12 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=2"; - dir = 4; - freq = 1400; - location = "Medbay" +/obj/structure/table/glass, +/obj/item/storage/box/gloves{ + pixel_x = 3; + pixel_y = 3 }, +/obj/item/storage/box/masks, /turf/open/floor/plasteel/white, /area/medical/medbay/zone3) "bwC" = ( @@ -29809,71 +28340,49 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-4" - }, /turf/open/floor/plasteel/white, /area/medical/medbay/zone3) "bwD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/medical/medbay/zone3) "bwE" = ( -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, +/turf/closed/wall, /area/medical/sleeper) "bwF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_y = 3 }, /turf/open/floor/plasteel/whiteblue/side, /area/medical/sleeper) "bwG" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/whiteblue/side, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel/white, /area/medical/sleeper) "bwH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/camera{ - c_tag = "Medbay Sleepers"; - dir = 1 - }, -/turf/open/floor/plasteel/whiteblue/side, +/turf/open/floor/plasteel/white, /area/medical/sleeper) "bwI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/sleeper) -"bwJ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/structure/chair{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/whiteblue/side, /area/medical/sleeper) "bwK" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -29927,7 +28436,13 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, -/turf/open/floor/plasteel/white, +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/turf/open/floor/plasteel/whiteyellow/corner{ + dir = 8 + }, /area/medical/chemistry) "bwT" = ( /obj/structure/disposalpipe/segment, @@ -29941,67 +28456,37 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "bwV" = ( +/turf/open/floor/plasteel/whiteyellow/corner, +/area/medical/chemistry) +"bwW" = ( /obj/structure/rack, /obj/item/stack/packageWrap, /obj/item/hand_labeler, -/obj/item/radio/headset/headset_med, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/machinery/light_switch{ + pixel_x = 25 + }, +/turf/open/floor/plasteel/whiteyellow/side{ + dir = 6 + }, /area/medical/chemistry) -"bwW" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/hallway/primary/aft) -"bwX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"bwY" = ( -/obj/structure/disposalpipe/junction/yjunction{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"bwZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) "bxa" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/table/glass, +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side{ - dir = 4 - }, -/area/hallway/primary/aft) -"bxb" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "research_shutters_2"; - name = "research shutters" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, +/obj/item/book/manual/research_and_development, +/obj/item/disk/tech_disk, +/obj/item/disk/design_disk, +/turf/open/floor/plasteel/dark, /area/science/lab) "bxc" = ( /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 }, /turf/open/floor/plasteel/white, /area/science/lab) @@ -30016,6 +28501,9 @@ dir = 8; sortType = 13 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/science/lab) "bxe" = ( @@ -30026,12 +28514,10 @@ dir = 8; sortType = 12 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/white, /area/science/lab) "bxf" = ( @@ -30077,6 +28563,7 @@ }, /obj/machinery/door/airlock/research{ name = "R&D Lab"; + req_access_txt = "0"; req_one_access_txt = "7;29;30" }, /obj/effect/turf_decal/delivery, @@ -30095,7 +28582,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bxj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -30104,8 +28591,12 @@ dir = 4 }, /obj/machinery/holopad, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sci9"; + location = "Sci8" + }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bxk" = ( /obj/structure/disposalpipe/junction{ dir = 8 @@ -30114,7 +28605,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bxl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -30122,11 +28613,8 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-4" - }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bxm" = ( /obj/structure/cable{ icon_state = "4-8" @@ -30137,8 +28625,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sci8"; + location = "Sci7" + }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bxn" = ( /obj/structure/disposalpipe/junction/flip{ dir = 8 @@ -30154,7 +28646,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bxo" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -30169,7 +28661,7 @@ /turf/open/floor/plasteel/green/side{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bxp" = ( /obj/machinery/door/poddoor/preopen{ id = "rndshutters"; @@ -30184,7 +28676,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/hallway/primary/aft) "bxq" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -30200,7 +28692,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxr" = ( /obj/structure/cable{ icon_state = "4-8" @@ -30210,7 +28702,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxs" = ( /obj/structure/cable{ icon_state = "4-8" @@ -30222,7 +28714,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxt" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -30238,7 +28730,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxu" = ( /obj/structure/cable{ icon_state = "1-8" @@ -30251,7 +28743,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxv" = ( /obj/structure/cable{ icon_state = "4-8" @@ -30259,8 +28751,11 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 2 + }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxw" = ( /obj/structure/cable{ icon_state = "1-8" @@ -30273,83 +28768,54 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxx" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxy" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxz" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ icon_state = "2-8" }, /turf/open/floor/plasteel/dark, -/area/science/research) -"bxB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/structure/window/reinforced{ + dir = 4; + layer = 2.9 + }, +/obj/structure/closet/firecloset, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/darkpurple/side{ + icon_state = "darkpurple"; dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bxD" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/turf/open/floor/plasteel/dark, -/area/science/research) -"bxE" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research{ - autoclose = 0; - frequency = 1449; - id_tag = "xeno_airlock_exterior"; - name = "Xenobiology Lab External Airlock"; - req_access_txt = "55" - }, -/obj/machinery/doorButtons/access_button{ - idDoor = "xeno_airlock_exterior"; - idSelf = "xeno_airlock_control"; - name = "Access Button"; - pixel_y = -24 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/science/xenobiology) +/area/science/explab) "bxF" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -30357,71 +28823,34 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "bxG" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/science/explab) "bxH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/effect/turf_decal/box/corners, +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"bxI" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research{ - autoclose = 0; - frequency = 1449; - id_tag = "xeno_airlock_interior"; - name = "Xenobiology Lab Internal Airlock"; - req_access_txt = "55" - }, -/obj/machinery/doorButtons/access_button{ - idDoor = "xeno_airlock_interior"; - idSelf = "xeno_airlock_control"; - name = "Access Button"; - pixel_y = -24 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/area/science/explab) +"bxJ" = ( +/obj/structure/window/reinforced{ dir = 8 }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) -"bxJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/doorButtons/airlock_controller{ - idExterior = "xeno_airlock_exterior"; - idInterior = "xeno_airlock_interior"; - idSelf = "xeno_airlock_control"; - name = "Access Console"; - pixel_x = -25; - pixel_y = 25 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) +/obj/machinery/chem_heater, +/turf/open/floor/plasteel/dark, +/area/science/explab) "bxK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/structure/chair/office/light, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) +/obj/structure/chair/stool, +/obj/item/reagent_containers/glass/beaker/large, +/turf/open/floor/plasteel/dark, +/area/science/explab) "bxL" = ( /obj/structure/sink{ dir = 4; pixel_x = 11 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/science/xenobiology) +/turf/open/floor/plasteel/dark, +/area/science/explab) "bxM" = ( /obj/machinery/disposal/bin, /obj/structure/window/reinforced{ @@ -30467,9 +28896,9 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "bxP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/science/xenobiology) +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/department/science) "bxQ" = ( /obj/machinery/door/window/northleft{ base_state = "right"; @@ -30536,57 +28965,6 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"bxU" = ( -/obj/machinery/door/window/northleft{ - base_state = "right"; - dir = 1; - icon_state = "right"; - name = "Containment Pen #4"; - req_access_txt = "55" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/science/xenobiology) -"bxV" = ( -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "xenobio4"; - name = "Containment Blast Doors"; - pixel_y = 4; - req_access_txt = "55" - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/science/xenobiology) -"bxW" = ( -/obj/machinery/door/airlock/maintenance{ - req_one_access_txt = "12; 55" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bxX" = ( -/obj/structure/girder, -/turf/open/floor/plating/airless, -/area/maintenance/department/cargo) "bxY" = ( /obj/structure/closet/emcloset, /obj/machinery/light/small{ @@ -30687,7 +29065,8 @@ dir = 4 }, /obj/machinery/light_switch{ - pixel_x = 22 + dir = 8; + pixel_x = 24 }, /turf/open/floor/plasteel/whitepurple/side{ dir = 4 @@ -30697,9 +29076,6 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -24 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, /obj/machinery/light{ dir = 8 }, @@ -30707,6 +29083,9 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 8 }, @@ -30737,23 +29116,10 @@ /turf/open/floor/plating, /area/medical/sleeper) "byp" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Sleepers"; - req_access_txt = "5" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, /area/medical/sleeper) -"byq" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Sleepers"; - req_access_txt = "5" - }, -/turf/open/floor/plasteel/white, -/area/medical/sleeper) "byr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/whiteblue/corner{ @@ -30796,6 +29162,7 @@ icon_state = "0-4" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/radio/headset/headset_med, /turf/open/floor/plasteel/whiteyellow/side{ dir = 8 }, @@ -30811,81 +29178,65 @@ /obj/structure/chair/office/light{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, /turf/open/floor/plasteel/whiteyellow/side{ dir = 4 }, /area/medical/chemistry) "byz" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/eastright{ +/obj/structure/window/reinforced{ dir = 8; - name = "Chemistry Desk"; + layer = 2.9 + }, +/obj/machinery/door/window/eastright{ + dir = 1; + name = "Chemistry Testing"; req_access_txt = "5; 33" }, -/obj/item/pen, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/item/paper_bin{ - layer = 2.9; - pixel_x = -2 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "chemistry_shutters"; - name = "chemistry shutters" - }, -/turf/open/floor/plasteel/whiteyellow{ - dir = 4 +/mob/living/simple_animal/mouse/white{ + name = "Labrette" }, +/turf/open/floor/engine, /area/medical/chemistry) "byA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 2 }, -/obj/structure/chair{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/hallway/primary/aft) -"byB" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) +/turf/open/floor/engine, +/area/medical/chemistry) "byC" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/hallway/primary/aft) "byD" = ( -/obj/structure/chair{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/open/floor/plasteel/purple/side{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-4" }, -/area/hallway/primary/aft) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/science/lab) "byE" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/eastright{ - dir = 4; - name = "Research and Development Desk"; - req_access_txt = "7" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/item/folder/white, -/obj/machinery/door/firedoor, -/obj/item/pen, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "research_shutters_2"; - name = "research shutters" +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/side, /area/science/lab) "byF" = ( /obj/structure/chair/office/light{ @@ -30899,19 +29250,16 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/white, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/whitepurple/side, /area/science/lab) "byH" = ( /obj/structure/table, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/item/stock_parts/capacitor, -/obj/item/stock_parts/capacitor, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/scanning_module, -/obj/item/stock_parts/scanning_module, /obj/item/multitool, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, /turf/open/floor/plasteel/whitepurple/side, /area/science/lab) "byI" = ( @@ -30930,13 +29278,13 @@ icon_state = "purple"; dir = 10 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "byK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/purple/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "byL" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -30944,7 +29292,7 @@ /turf/open/floor/plasteel/purple/corner{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "byM" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/structure/disposalpipe/junction{ @@ -30953,8 +29301,12 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sci5"; + location = "Sci4" + }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "byN" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -30969,7 +29321,7 @@ /turf/open/floor/plasteel/green/side{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "byO" = ( /obj/machinery/door/poddoor/preopen{ id = "rndshutters"; @@ -30988,13 +29340,13 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/hallway/primary/aft) "byP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall/r_wall, -/area/science/research) +/area/science/explab) "byQ" = ( /obj/structure/sink{ dir = 8; @@ -31005,7 +29357,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/white, -/area/science/research) +/area/science/explab) "byR" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -31019,13 +29371,13 @@ dir = 4 }, /turf/open/floor/plasteel/white, -/area/science/research) +/area/science/explab) "byS" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, -/area/science/research) +/area/science/explab) "byT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -31035,24 +29387,22 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/darkpurple/side, -/area/science/research) +/area/science/explab) "byU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /obj/structure/chair/comfy{ - icon_state = "comfychair"; dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/darkpurple/side, -/area/science/research) +/area/science/explab) "byV" = ( /obj/structure/table, /obj/item/folder, /obj/item/pen, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/light, /turf/open/floor/plasteel/darkpurple/side, -/area/science/research) +/area/science/explab) "byW" = ( /obj/structure/chair/comfy{ dir = 8 @@ -31061,21 +29411,18 @@ dir = 4 }, /turf/open/floor/plasteel/darkpurple/side, -/area/science/research) +/area/science/explab) "byX" = ( /obj/machinery/camera{ c_tag = "Research Division Secure Hallway"; dir = 1 }, -/obj/machinery/disposal/bin, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/darkpurple/side, -/area/science/research) +/area/science/explab) "byY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -31084,7 +29431,7 @@ icon_state = "darkpurplecorners"; dir = 8 }, -/area/science/research) +/area/science/explab) "byZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -31094,83 +29441,80 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bza" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, /turf/open/floor/plasteel/darkpurple/corner, -/area/science/research) +/area/science/explab) "bzb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/closet/radiation, +/obj/structure/window/reinforced{ + dir = 4; + layer = 2.9 }, -/turf/open/floor/plasteel/darkpurple/side, -/area/science/research) -"bzc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/turf/open/floor/plasteel/darkpurple/side, -/area/science/research) -"bzd" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel/whitepurple/side, -/area/science/xenobiology) -"bze" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/whitepurple/side, -/area/science/xenobiology) -"bzf" = ( -/obj/machinery/shower{ - dir = 8; - name = "emergency shower"; - pixel_y = -4 - }, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/plasteel/darkpurple/side{ + icon_state = "darkpurple"; dir = 6 }, -/turf/open/floor/plasteel/whitepurple/side, -/area/science/xenobiology) +/area/science/explab) +"bzc" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/explab) +"bzd" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/science/explab) +"bze" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/science/explab) "bzg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/whitepurple/side, /area/science/xenobiology) "bzh" = ( -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/monkeycubes, -/obj/structure/table/glass, -/turf/open/floor/plasteel/whitepurple/side, -/area/science/xenobiology) +/obj/structure/table, +/obj/machinery/camera{ + c_tag = "Experimentation Lab"; + dir = 1; + network = list("ss13","rd") + }, +/obj/item/storage/toolbox/electrical{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/plasteel/dark, +/area/science/explab) "bzi" = ( -/obj/item/extinguisher{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/extinguisher, -/obj/structure/table/glass, -/turf/open/floor/plasteel/whitepurple/side, -/area/science/xenobiology) +/obj/structure/table, +/obj/item/electropack, +/obj/item/taperecorder, +/obj/item/screwdriver, +/turf/open/floor/plasteel/dark, +/area/science/explab) "bzj" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_x = 32; - receive_ore_updates = 1 +/obj/structure/table, +/obj/item/storage/box/syringes, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 }, -/turf/open/floor/plasteel/whitepurple/side, -/area/science/xenobiology) +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/dropper, +/turf/open/floor/plasteel/dark, +/area/science/explab) "bzk" = ( /obj/machinery/door/poddoor/preopen{ id = "xenobio1"; @@ -31224,23 +29568,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/engine, /area/science/xenobiology) -"bzo" = ( -/obj/machinery/door/poddoor/preopen{ - id = "xenobio3"; - name = "containment blast door" - }, -/obj/machinery/door/window/northleft{ - base_state = "right"; - dir = 2; - icon_state = "right"; - name = "Containment Pen #2"; - req_access_txt = "55" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/science/xenobiology) "bzp" = ( /obj/machinery/door/poddoor/preopen{ id = "xenobio2"; @@ -31294,74 +29621,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/science/xenobiology) -"bzt" = ( -/obj/machinery/door/poddoor/preopen{ - id = "xenobio4"; - name = "containment blast door" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/engine, -/area/science/xenobiology) -"bzu" = ( -/obj/machinery/door/poddoor/preopen{ - id = "xenobio4"; - name = "containment blast door" - }, -/obj/machinery/door/window/northleft{ - base_state = "right"; - dir = 2; - icon_state = "right"; - name = "Containment Pen #4"; - req_access_txt = "55" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/science/xenobiology) -"bzv" = ( -/obj/machinery/door/poddoor/preopen{ - id = "xenobio4"; - name = "containment blast door" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/engine, -/area/science/xenobiology) -"bzw" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) -"bzx" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "bzy" = ( /obj/structure/grille, /turf/open/space, @@ -31417,7 +29676,7 @@ /obj/machinery/camera{ c_tag = "Genetics Monkey Pen Aft"; dir = 4; - network = list("ss13","rd") + network = list("ss13","medbay") }, /obj/structure/flora/ausbushes/grassybush, /obj/machinery/light/small{ @@ -31475,9 +29734,6 @@ }, /area/medical/genetics) "bzM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-10" }, @@ -31487,9 +29743,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, /turf/open/floor/plasteel/whitegreen/side, /area/medical/medbay/zone3) "bzO" = ( @@ -31499,57 +29752,40 @@ /turf/open/floor/plasteel/whitegreen/side, /area/medical/medbay/zone3) "bzP" = ( -/obj/machinery/vending/medical, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/turf/open/floor/plasteel/whiteblue/side{ - dir = 1 - }, -/area/medical/sleeper) -"bzQ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/whiteblue/side{ - dir = 1 - }, -/area/medical/sleeper) -"bzR" = ( -/turf/open/floor/plasteel/whiteblue/side{ - dir = 1 - }, -/area/medical/sleeper) -"bzS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/machinery/sleeper{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/blue, +/area/medical/sleeper) +"bzQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bzR" = ( +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"bzS" = ( +/obj/structure/chair, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, /area/medical/sleeper) "bzT" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/machinery/button/door{ - desc = "A remote control switch for exiting the sleeper room."; - id = "MedbaySleepers"; - name = "Medbay Exit Button"; - normaldoorcontrol = 1; - pixel_x = 24; - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/table/glass, +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/item/clothing/neck/stethoscope, +/obj/item/clothing/mask/surgical, +/obj/machinery/airalarm{ + pixel_y = 22 }, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 @@ -31558,7 +29794,7 @@ "bzU" = ( /obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 + dir = 6 }, /turf/open/floor/plating, /area/medical/sleeper) @@ -31642,13 +29878,10 @@ /turf/open/floor/plasteel/cmo, /area/crew_quarters/heads/cmo) "bAe" = ( -/obj/structure/closet/wardrobe/chemistry_white, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/obj/machinery/light_switch{ - pixel_y = -22 - }, +/obj/machinery/vending/wardrobe/chem_wardrobe, /turf/open/floor/plasteel/whiteyellow/side{ dir = 10 }, @@ -31665,12 +29898,13 @@ /area/medical/chemistry) "bAg" = ( /obj/structure/table/glass, -/obj/machinery/reagentgrinder, /obj/machinery/light, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 }, +/obj/item/stack/cable_coil/random, +/obj/item/book/manual/wiki/chemistry, /turf/open/floor/plasteel/whiteyellow/side, /area/medical/chemistry) "bAh" = ( @@ -31682,31 +29916,18 @@ /obj/item/grenade/chem_grenade, /obj/item/grenade/chem_grenade, /obj/item/grenade/chem_grenade, -/obj/item/stack/cable_coil/random, /obj/item/screwdriver, /turf/open/floor/plasteel/whiteyellow/side{ dir = 6 }, /area/medical/chemistry) "bAi" = ( -/obj/item/folder/white, -/obj/item/clothing/gloves/color/latex, -/obj/structure/table/glass, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/hallway/primary/aft) -"bAj" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) +/obj/machinery/smoke_machine, +/turf/open/floor/engine, +/area/medical/chemistry) "bAk" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bAl" = ( @@ -31714,37 +29935,25 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bAm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/door/airlock/maintenance{ + name = "Research Lab Maintenance"; + req_access_txt = "0"; + req_one_access_txt = "7;29" }, -/obj/structure/table/glass, -/obj/item/paper_bin{ - layer = 2.9; - pixel_x = -2; - pixel_y = 4 - }, -/turf/open/floor/plasteel/purple/side{ - dir = 4 - }, -/area/hallway/primary/aft) -"bAn" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "research_shutters_2"; - name = "research shutters" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/science/lab) +/area/maintenance/department/engine) "bAo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "rdprivacy"; @@ -31760,19 +29969,19 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, /obj/machinery/door/airlock/research{ name = "Research Director's Office"; - req_access_txt = "30" + req_access_txt = "30"; + req_one_access_txt = "0" }, +/obj/machinery/door/firedoor, /obj/structure/cable{ icon_state = "1-8" }, /obj/structure/cable{ icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/darkpurple/side{ dir = 1 }, @@ -31784,10 +29993,10 @@ name = "Privacy shutters" }, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "0-4" }, /obj/structure/cable{ - icon_state = "0-4" + icon_state = "0-8" }, /turf/open/floor/plating, /area/crew_quarters/heads/hor) @@ -31799,10 +30008,10 @@ name = "Privacy shutters" }, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "0-4" }, /obj/structure/cable{ - icon_state = "0-4" + icon_state = "0-8" }, /turf/open/floor/plating, /area/crew_quarters/heads/hor) @@ -31819,7 +30028,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bAw" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -31827,7 +30036,7 @@ }, /obj/machinery/door/firedoor, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bAx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/extinguisher_cabinet{ @@ -31840,13 +30049,10 @@ /turf/open/floor/plasteel/green/side{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bAy" = ( /turf/closed/wall/r_wall, -/area/science/research/lobby) -"bAz" = ( -/turf/closed/wall, -/area/science/research) +/area/hallway/primary/aft) "bAA" = ( /turf/closed/wall, /area/science/storage) @@ -31859,7 +30065,7 @@ /turf/open/floor/plasteel/darkpurple/side{ dir = 8 }, -/area/science/research) +/area/science/explab) "bAD" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ @@ -31867,7 +30073,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bAE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, @@ -31875,7 +30081,7 @@ icon_state = "darkpurple"; dir = 4 }, -/area/science/research) +/area/science/explab) "bAF" = ( /turf/closed/wall, /area/science/mixing) @@ -32023,7 +30229,6 @@ pixel_x = -24; req_access_txt = "39" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel/white, /area/medical/virology) @@ -32031,36 +30236,26 @@ /obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/medical/virology) -"bAZ" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/chair, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/white, -/area/medical/sleeper) -"bBa" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/sleeper) "bBb" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bBc" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bBd" = ( -/obj/machinery/door/airlock/medical/glass{ - id_tag = "MedbaySleepers"; - name = "Sleepers"; - req_access_txt = "5" +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 }, /turf/open/floor/plasteel/white, /area/medical/sleeper) @@ -32132,20 +30327,16 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching surgery."; - dir = 8; - layer = 4; - name = "Surgery Telescreen"; - network = list("surgery"); - pixel_x = 30 - }, /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/cable{ icon_state = "2-8" }, +/obj/machinery/computer/security/telescreen/cmo{ + dir = 8; + pixel_x = 30 + }, /turf/open/floor/plasteel/cmo, /area/crew_quarters/heads/cmo) "bBl" = ( @@ -32166,13 +30357,6 @@ dir = 8 }, /area/hallway/primary/aft) -"bBn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/corner, -/area/hallway/primary/aft) "bBo" = ( /turf/closed/wall, /area/hallway/primary/aft) @@ -32234,14 +30418,18 @@ pixel_y = 6 }, /obj/machinery/button/door{ - id = "research_shutters_2"; + id = "rndshutters"; name = "Research Lockdown"; pixel_x = 28; pixel_y = -5; req_access_txt = "47" }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/button/door{ + id = "research_shutters_2"; + name = "RnD Shutters"; + pixel_x = 40; + pixel_y = 5; + req_access_txt = "47" }, /turf/open/floor/plasteel/darkpurple/side{ icon_state = "darkpurple"; @@ -32284,7 +30472,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bBA" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -32292,7 +30480,7 @@ /turf/open/floor/plasteel/green/side{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bBB" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-20"; @@ -32301,7 +30489,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bBC" = ( /obj/machinery/portable_atmospherics/canister/toxins, /obj/effect/turf_decal/delivery, @@ -32344,65 +30532,65 @@ /turf/open/floor/plasteel/darkpurple/side{ dir = 8 }, -/area/science/research) +/area/science/explab) "bBI" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bBJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/darkpurple/side{ icon_state = "darkpurple"; dir = 4 }, -/area/science/research) +/area/science/explab) "bBK" = ( /obj/structure/closet/bombcloset, /obj/machinery/firealarm{ dir = 8; pixel_x = -24 }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, /turf/open/floor/plasteel/dark, /area/science/mixing) "bBL" = ( /obj/structure/closet/bombcloset, -/turf/open/floor/plasteel/dark, -/area/science/mixing) -"bBM" = ( -/obj/machinery/light{ - dir = 1 - }, /obj/machinery/airalarm{ pixel_y = 22 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister, /turf/open/floor/plasteel/dark, /area/science/mixing) +"bBM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/science/mixing) "bBN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"bBO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 4 + }, +/area/science/mixing) +"bBP" = ( /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/portable_atmospherics/canister, -/obj/machinery/camera{ - c_tag = "Toxins Lab Port"; - dir = 2; - network = list("ss13","rd") - }, -/turf/open/floor/plasteel/dark, -/area/science/mixing) -"bBO" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/turf/open/floor/plasteel/dark, -/area/science/mixing) -"bBP" = ( -/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plasteel/dark, /area/science/mixing) "bBQ" = ( @@ -32417,7 +30605,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/portable_atmospherics/canister, /turf/open/floor/plasteel/dark, /area/science/mixing) "bBR" = ( @@ -32439,21 +30627,24 @@ dir = 2; network = list("ss13","rd") }, +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/science/mixing) "bBT" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/structure/sign/poster/official/random{ pixel_y = 32 }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -32482,7 +30673,6 @@ /obj/structure/table, /obj/item/pen, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = -27 }, @@ -32504,7 +30694,7 @@ /obj/machinery/camera{ c_tag = "Genetics"; dir = 1; - network = list("ss13","rd") + network = list("ss13","medbay") }, /turf/open/floor/plasteel/whitepurple/side, /area/medical/genetics) @@ -32551,8 +30741,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 }, /turf/open/floor/plasteel/white, /area/medical/virology) @@ -32560,6 +30750,7 @@ /obj/structure/closet/emcloset, /obj/machinery/camera{ c_tag = "Virology Airlock"; + network = list("ss13","medbay"); dir = 2 }, /obj/effect/turf_decal/stripes/line{ @@ -32573,16 +30764,9 @@ "bCi" = ( /obj/structure/table/glass, /obj/item/stack/medical/gauze, -/obj/machinery/power/apc{ - dir = 8; - name = "Treatment Center APC"; - areastring = "/area/medical/sleeper"; +/obj/structure/extinguisher_cabinet{ pixel_x = -24 }, -/obj/item/reagent_containers/glass/beaker/cryoxadone, -/obj/item/reagent_containers/glass/beaker/cryoxadone, -/obj/item/reagent_containers/glass/beaker/cryoxadone, -/obj/structure/cable, /turf/open/floor/plasteel/blue, /area/medical/sleeper) "bCj" = ( @@ -32591,21 +30775,23 @@ }, /turf/open/floor/plasteel/blue, /area/medical/sleeper) -"bCk" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/blue, -/area/medical/sleeper) "bCl" = ( -/obj/machinery/sleeper{ - dir = 8 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/plasteel/blue, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = -2; + pixel_y = -27 + }, +/turf/open/floor/plasteel/whiteblue/side, /area/medical/sleeper) "bCm" = ( -/obj/structure/table/glass, -/obj/item/clothing/neck/stethoscope, -/obj/item/healthanalyzer, -/turf/open/floor/plasteel/blue, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel/whiteblue/side, /area/medical/sleeper) "bCn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -32631,10 +30817,6 @@ }, /area/medical/medbay/central) "bCq" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Chief Medical Office"; - req_access_txt = "40" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -32642,6 +30824,10 @@ dir = 4 }, /obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Chief Medical Office"; + req_access_txt = "40" + }, /turf/open/floor/plasteel/barber, /area/crew_quarters/heads/cmo) "bCr" = ( @@ -32783,8 +30969,11 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/open/floor/plating, /area/maintenance/department/engine) @@ -32793,11 +30982,17 @@ /turf/open/floor/plasteel/yellow/corner, /area/hallway/primary/aft) "bCD" = ( -/obj/machinery/vending/cola, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/area/hallway/primary/aft) +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) "bCE" = ( /obj/machinery/computer/robotics{ dir = 4 @@ -32833,9 +31028,6 @@ dir = 4; light_color = "#c1caff" }, -/obj/structure/cable{ - icon_state = "1-4" - }, /turf/open/floor/plasteel/darkpurple/side{ icon_state = "darkpurple"; dir = 4 @@ -32850,9 +31042,6 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/structure/cable{ - icon_state = "0-2" - }, /turf/open/floor/plating, /area/crew_quarters/heads/hor) "bCK" = ( @@ -32863,6 +31052,9 @@ network = list("ss13","rd") }, /obj/item/book/manual/wiki/security_space_law, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/red/side{ dir = 10 }, @@ -32872,6 +31064,9 @@ /obj/structure/chair/office/dark{ dir = 1 }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/plasteel, /area/security/checkpoint/science) "bCM" = ( @@ -32884,11 +31079,11 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bCO" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/science/research/lobby) +/area/hallway/primary/aft) "bCP" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -32912,7 +31107,7 @@ /turf/open/floor/plasteel/darkpurple/side{ dir = 8 }, -/area/science/research) +/area/science/explab) "bCU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 @@ -32921,7 +31116,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bCV" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -32933,27 +31128,14 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bCX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/science/mixing) -"bCY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible, /turf/open/floor/plasteel/white, /area/science/mixing) "bCZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, /turf/open/floor/plasteel/white, /area/science/mixing) @@ -32964,13 +31146,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/mixing) "bDb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, /obj/machinery/atmospherics/components/trinary/mixer/flipped{ dir = 1 }, @@ -33029,7 +31207,6 @@ /area/maintenance/department/engine) "bDj" = ( /obj/item/trash/candy, -/obj/effect/decal/cleanable/insectguts, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/structure/cable{ icon_state = "1-2" @@ -33057,7 +31234,7 @@ /turf/open/floor/plasteel/whitepurple/side, /area/medical/genetics) "bDn" = ( -/obj/structure/closet/wardrobe/genetics_white, +/obj/machinery/vending/wardrobe/gene_wardrobe, /turf/open/floor/plasteel/whitepurple/side{ dir = 6 }, @@ -33076,6 +31253,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/plaque, /turf/open/floor/plasteel/white, /area/medical/virology) "bDq" = ( @@ -33152,10 +31330,11 @@ /area/maintenance/department/engine) "bDA" = ( /obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/machinery/light/small{ + dir = 4 }, -/area/hallway/primary/aft) +/turf/open/floor/plating, +/area/maintenance/department/engine) "bDB" = ( /obj/machinery/airalarm/unlocked{ dir = 4; @@ -33199,12 +31378,21 @@ /obj/machinery/recharger{ pixel_y = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/red/side{ dir = 8 }, /area/security/checkpoint/science) "bDH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/plasteel, /area/security/checkpoint/science) "bDI" = ( @@ -33227,7 +31415,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bDL" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/turf_decal/bot, @@ -33270,13 +31458,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/door/airlock/research/glass{ - name = "Toxins Storage"; - req_access_txt = "8" - }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, +/obj/machinery/door/airlock/research{ + name = "Toxins Storage"; + req_access_txt = "8" + }, /turf/open/floor/plasteel/dark, /area/science/storage) "bDR" = ( @@ -33289,7 +31477,7 @@ /turf/open/floor/plasteel/darkpurple/side{ dir = 8 }, -/area/science/research) +/area/science/explab) "bDS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -33301,7 +31489,7 @@ icon_state = "1-4" }, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bDT" = ( /obj/structure/cable{ icon_state = "4-8" @@ -33311,7 +31499,7 @@ icon_state = "darkpurple"; dir = 4 }, -/area/science/research) +/area/science/explab) "bDU" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/door/airlock/research/glass{ @@ -33327,14 +31515,16 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, /area/science/mixing) "bDV" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 }, /turf/open/floor/plasteel/white, /area/science/mixing) @@ -33357,32 +31547,15 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/white, -/area/science/mixing) -"bDZ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/mixing) "bEa" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-8" }, /turf/open/floor/plasteel/white, /area/science/mixing) @@ -33424,18 +31597,17 @@ }, /area/science/mixing) "bEf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/science/mixing) -"bEh" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/airalarm{ + pixel_y = 22 }, -/obj/item/trash/sosjerky, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/department/cargo) +/obj/item/storage/bag/ore, +/obj/item/pickaxe, +/obj/structure/closet/crate, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) "bEj" = ( /obj/machinery/atmospherics/pipe/manifold/general/hidden{ dir = 8 @@ -33537,7 +31709,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/machinery/rnd/production/techfab/department/medical, +/obj/machinery/rnd/production/protolathe/department/medical, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, @@ -33711,7 +31883,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/landmark/blobstart, /obj/item/melee/baton/cattleprod{ - cell = new /obj/item/stock_parts/cell/high() + preload_cell_type = /obj/item/stock_parts/cell/high }, /turf/open/floor/plasteel/dark, /area/medical/exam_room) @@ -33768,37 +31940,24 @@ dir = 8 }, /area/hallway/primary/aft) -"bEO" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"bEP" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/corner, -/area/hallway/primary/aft) "bEQ" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-03" +/obj/structure/closet/crate{ + icon_state = "crateopen" }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/hallway/primary/aft) +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/turf/open/floor/plating, +/area/maintenance/department/engine) "bER" = ( /obj/machinery/computer/mecha{ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = -26 }, /obj/machinery/light_switch{ + dir = 9; pixel_x = -22 }, /turf/open/floor/plasteel/darkpurple/side{ @@ -33852,13 +32011,11 @@ pixel_x = 4; pixel_y = 6 }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons and the AI's satellite from the safety of his office."; - name = "Research Monitor"; - network = list("rd","minisat"); - pixel_y = -32 - }, /obj/structure/table/glass, +/obj/machinery/computer/security/telescreen/rd{ + dir = 1; + pixel_y = -26 + }, /turf/open/floor/plasteel/darkpurple/side, /area/crew_quarters/heads/hor) "bEV" = ( @@ -33877,7 +32034,7 @@ /obj/structure/reagent_dispensers/peppertank{ pixel_x = -32 }, -/obj/structure/filingcabinet, +/obj/structure/filingcabinet/security, /turf/open/floor/plasteel/red/side{ dir = 10 }, @@ -33887,6 +32044,9 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/red/side, /area/security/checkpoint/science) "bEY" = ( @@ -33911,7 +32071,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bFa" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -33937,21 +32097,12 @@ }, /turf/open/floor/engine, /area/science/storage) -"bFe" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/science/research) "bFf" = ( /turf/open/floor/plasteel/darkpurple/side{ icon_state = "darkpurple"; dir = 4 }, -/area/science/research) -"bFg" = ( -/turf/open/floor/plasteel/white, -/area/science/mixing) +/area/science/explab) "bFh" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -33999,20 +32150,13 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bFm" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/science/mixing) "bFn" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -34020,223 +32164,88 @@ dir = 5 }, /area/science/mixing) -"bFo" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/science/mixing) "bFp" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/light_switch{ - pixel_x = 22 - }, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/science/mixing) -"bFq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/closed/wall, -/area/science/mixing) "bFr" = ( -/obj/structure/cable{ - icon_state = "4-8" +/turf/open/floor/plasteel/purple/side{ + dir = 1 }, -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel, /area/science/mixing) "bFs" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 }, -/obj/structure/closet/firecloset, -/obj/machinery/camera{ - c_tag = "Toxins Launch Area"; - dir = 2; - network = list("ss13","rd") +/turf/open/floor/plasteel/purple/side{ + dir = 1 }, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/turf/open/floor/plasteel, /area/science/mixing) "bFt" = ( -/obj/machinery/suit_storage_unit/rd, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/machinery/light{ +/turf/open/floor/plasteel/purple/side{ dir = 1 }, -/turf/open/floor/plasteel, /area/science/mixing) "bFu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/button/massdriver{ + dir = 4; + id = "toxinsdriver"; + pixel_x = 28 }, -/obj/machinery/airalarm{ - pixel_y = 22 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/purple/side{ + dir = 1 }, -/turf/open/floor/plasteel, /area/science/mixing) -"bFv" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/sign/nanotrasen, -/turf/closed/wall, -/area/science/mixing) -"bFw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/sign/warning/deathsposal{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/purple/corner, -/area/science/circuit) "bFx" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light{ +/obj/structure/chair{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - dir = 2; - name = "Science Requests Console"; - pixel_y = 30; - receive_ore_updates = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side, -/area/science/circuit) +/area/maintenance/department/science) "bFy" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Circuitry Lab APC"; - pixel_y = 25 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/structure/chair{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side, -/area/science/circuit) -"bFz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side, -/area/science/circuit) -"bFA" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/research{ - name = "Circuitry Storeroom"; - req_access_txt = "47" - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side, -/area/science/circuit) -"bFB" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side, -/area/science/circuit) -"bFC" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side, -/area/science/circuit) -"bFD" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "47" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, /turf/open/floor/plating, -/area/maintenance/department/cargo) +/area/maintenance/department/science) +"bFz" = ( +/obj/item/cigbutt/cigarbutt, +/turf/open/floor/plating, +/area/maintenance/department/science) +"bFB" = ( +/obj/item/newspaper, +/turf/open/floor/plating, +/area/maintenance/department/science) +"bFC" = ( +/obj/item/wallframe/camera, +/obj/machinery/button/door{ + id = "PottySci"; + name = "Bathroom Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + pixel_y = 4; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"bFD" = ( +/obj/item/chair, +/turf/open/floor/plating, +/area/maintenance/department/science) "bFE" = ( /obj/docking_port/stationary{ dwidth = 2; @@ -34293,7 +32302,6 @@ /turf/open/floor/plasteel/freezer, /area/medical/virology) "bFL" = ( -/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plasteel/freezer, /area/medical/virology) "bFM" = ( @@ -34422,13 +32430,9 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bFZ" = ( -/obj/machinery/camera{ - c_tag = "Aft Primary Hallway Central"; - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/corner, -/area/hallway/primary/aft) +/turf/closed/wall, +/area/maintenance/department/engine) "bGa" = ( /obj/structure/sign/departments/science, /turf/closed/wall, @@ -34457,7 +32461,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bGe" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/machinery/firealarm{ @@ -34467,7 +32471,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bGf" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/nitrogen, @@ -34505,29 +32509,37 @@ /turf/open/floor/engine, /area/science/storage) "bGj" = ( -/obj/structure/closet/firecloset, +/obj/machinery/vending/coffee, /turf/open/floor/plasteel/darkpurple/side{ dir = 8 }, -/area/science/research) +/area/science/explab) "bGk" = ( -/obj/structure/reagent_dispensers/watertank, /obj/machinery/light, +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/plasteel/dark, -/area/science/research) +/area/science/explab) "bGl" = ( -/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plasteel/darkpurple/side{ icon_state = "darkpurple"; dir = 4 }, -/area/science/research) +/area/science/explab) "bGm" = ( /obj/structure/closet/emcloset, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -24; + pixel_y = 8 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGn" = ( -/obj/structure/closet/wardrobe/science_white, +/obj/machinery/vending/wardrobe/science_wardrobe, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGo" = ( @@ -34547,6 +32559,9 @@ pixel_y = -2 }, /obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGp" = ( @@ -34565,6 +32580,15 @@ pixel_x = 5 }, /obj/structure/table/reinforced, +/obj/machinery/camera{ + c_tag = "Toxins Lab Port"; + dir = 1; + network = list("ss13","rd") + }, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGq" = ( @@ -34582,17 +32606,25 @@ }, /obj/item/assembly/timer, /obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGr" = ( /obj/structure/tank_dispenser, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGs" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGt" = ( @@ -34645,29 +32677,20 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"bGz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/mixing) "bGA" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 +/obj/machinery/door/airlock/maintenance{ + name = "Toxins Launch Maintenance"; + req_access_txt = "8" }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, /area/science/mixing) "bGB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"bGC" = ( -/turf/open/floor/plasteel/whitepurple/side{ - dir = 5 - }, -/area/science/circuit) +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/department/science) "bGD" = ( /obj/structure/window/reinforced{ dir = 4 @@ -34890,18 +32913,13 @@ }, /area/hallway/primary/aft) "bHg" = ( -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/public/glass{ - name = "Research Division" - }, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHh" = ( /obj/machinery/light{ dir = 1 @@ -34912,7 +32930,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHi" = ( /obj/structure/chair, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -34921,7 +32939,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHj" = ( /obj/item/storage/belt/utility, /obj/item/clothing/glasses/science, @@ -34932,7 +32950,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHk" = ( /obj/item/gps{ gpstag = "RD0" @@ -34949,7 +32967,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHl" = ( /obj/structure/chair, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -34959,7 +32977,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHm" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -34967,7 +32985,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHn" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -34979,13 +32997,13 @@ /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHo" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -34994,7 +33012,7 @@ /turf/open/floor/plasteel/purple/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -35003,7 +33021,7 @@ /turf/open/floor/plasteel/purple/corner{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHr" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -35015,7 +33033,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHs" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -35026,7 +33044,7 @@ /turf/open/floor/plasteel/green/side{ dir = 4 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHt" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -35035,7 +33053,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bHu" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 @@ -35054,20 +33072,13 @@ "bHw" = ( /turf/closed/wall/r_wall, /area/science/storage) -"bHx" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/science/research) "bHy" = ( /turf/closed/wall/r_wall, /area/science/mixing) "bHz" = ( /obj/machinery/atmospherics/components/binary/valve, -/obj/machinery/button/door{ - id = "toxvent"; - name = "Aft Vent Control"; - pixel_y = -24; - req_one_access_txt = "8;24" +/obj/machinery/button/door/incinerator_vent_toxmix{ + pixel_y = -24 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -35083,69 +33094,49 @@ pixel_x = -6; pixel_y = -24 }, -/obj/machinery/embedded_controller/radio/airlock_controller{ - name = "Mixing Chamber Access Console"; - airpump_tag = "tox_airlock_pump"; - exterior_door_tag = "tox_airlock_exterior"; - id_tag = "tox_airlock_control"; - interior_door_tag = "tox_airlock_interior"; +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ pixel_x = 6; - pixel_y = -26; - sanitize_external = 1; - sensor_tag = "tox_airlock_sensor" - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 + pixel_y = -26 }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/science/mixing) -"bHB" = ( +"bHC" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 2; name = "Incinerator Output Pump" }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = -22 - }, -/turf/open/floor/plasteel, -/area/science/mixing) -"bHC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel, /area/science/mixing) "bHD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/purple/side, /area/science/mixing) "bHE" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel, +/obj/structure/window/reinforced, +/obj/machinery/doppler_array/research/science{ + dir = 2 + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/purple/side, /area/science/mixing) -"bHF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/purple/corner{ - dir = 4 - }, -/area/science/circuit) -"bHG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) "bHI" = ( /obj/structure/grille/broken, /turf/open/space/basic, @@ -35226,18 +33217,14 @@ "bHY" = ( /obj/machinery/camera{ c_tag = "Virology"; + network = list("ss13","medbay"); dir = 2 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/radio/intercom{ - broadcasting = 0; - freerange = 0; - frequency = 1485; - listening = 1; - name = "Station Intercom (Medbay)"; - pixel_y = 28 +/obj/machinery/airalarm/unlocked{ + pixel_y = 23 }, /turf/open/floor/plasteel/whitegreen/side{ dir = 1 @@ -35289,15 +33276,13 @@ /obj/machinery/light, /obj/machinery/camera{ c_tag = "Medbay Equipment Room"; + network = list("ss13","medbay"); dir = 1 }, /turf/open/floor/plasteel/whiteblue/side, /area/medical/medbay/central) "bIf" = ( -/obj/structure/closet/wardrobe/white/medical, -/obj/machinery/light_switch{ - pixel_y = -22 - }, +/obj/machinery/vending/wardrobe/medi_wardrobe, /turf/open/floor/plasteel/whiteblue/side, /area/medical/medbay/central) "bIg" = ( @@ -35320,6 +33305,9 @@ /obj/item/clothing/glasses/hud/health, /obj/item/clothing/glasses/hud/health, /obj/item/reagent_containers/spray/cleaner, +/obj/machinery/light_switch{ + pixel_y = -24 + }, /turf/open/floor/plasteel/whiteblue/side, /area/medical/medbay/central) "bIh" = ( @@ -35355,6 +33343,7 @@ "bIm" = ( /obj/machinery/camera{ c_tag = "Medbay Recovery Room"; + network = list("ss13","medbay"); dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -35440,6 +33429,10 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Eng2"; + location = "Eng" + }, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bIu" = ( @@ -35450,23 +33443,13 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sci6"; + location = "Eng3" + }, /turf/open/floor/plasteel, /area/hallway/primary/aft) "bIv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Research Division" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/science/research/lobby) -"bIw" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -35474,7 +33457,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bIx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -35486,7 +33469,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bIy" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -35496,13 +33479,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/science/research/lobby) -"bIz" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bIA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -35512,14 +33489,18 @@ icon_state = "1-4" }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bIC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sci7"; + location = "Sci6" + }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bID" = ( /obj/structure/cable{ icon_state = "1-8" @@ -35527,14 +33508,18 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Eng"; + location = "Sci5" + }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "bIE" = ( /obj/machinery/vending/assist, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bIF" = ( /obj/machinery/power/apc{ dir = 8; @@ -35581,9 +33566,6 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/light_switch{ - pixel_y = -22 - }, /turf/open/floor/engine, /area/science/storage) "bIK" = ( @@ -35594,14 +33576,7 @@ /area/science/mixing) "bIL" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Interior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/engine, /area/science/mixing) @@ -35610,53 +33585,37 @@ /turf/closed/wall/r_wall, /area/science/mixing) "bIN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -27 - }, -/turf/open/floor/plasteel, -/area/science/mixing) -"bIO" = ( -/obj/structure/window/reinforced, -/obj/machinery/doppler_array/research/science{ - dir = 2 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the test chamber."; + dir = 4; + layer = 4; + name = "Test Chamber Telescreen"; + network = list("toxins"); + pixel_x = -32 }, +/turf/open/floor/plasteel/purple/side, /area/science/mixing) "bIP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/science/circuit) +/turf/open/floor/plating, +/area/maintenance/department/science) "bIQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/science/circuit) +/turf/open/floor/plating, +/area/maintenance/department/science) "bIR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/science/circuit) -"bIS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/science/circuit) +/area/maintenance/department/science) "bIT" = ( /obj/structure/window/reinforced{ dir = 4; @@ -35757,6 +33716,9 @@ "bJj" = ( /obj/structure/rack, /obj/item/cartridge/medical, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, /turf/open/floor/plating, /area/maintenance/department/engine) "bJk" = ( @@ -35770,6 +33732,9 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitegreen/side{ dir = 8 }, @@ -35932,13 +33897,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Research Division" +/obj/structure/sign/departments/engineering{ + pixel_y = -32 }, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bJE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -35947,14 +33910,14 @@ dir = 2 }, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bJF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bJG" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -35963,7 +33926,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bJH" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/machinery/firealarm{ @@ -35978,18 +33941,18 @@ dir = 2 }, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bJI" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/purple/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bJJ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, /obj/machinery/door/firedoor, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bJK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -35999,14 +33962,14 @@ pixel_y = -32 }, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bJL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "bJM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -36021,7 +33984,7 @@ /turf/open/floor/plasteel/green/side{ dir = 6 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "bJN" = ( /turf/closed/wall/r_wall, /area/engine/atmos) @@ -36047,22 +34010,17 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/airlock_sensor{ - id_tag = "tox_airlock_sensor"; - master_tag = "tox_airlock_control"; - pixel_x = -24; - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/machinery/airlock_sensor/incinerator_toxmix{ + pixel_x = -24 + }, /turf/open/floor/engine, /area/science/mixing) "bJR" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 4; - frequency = 1449; - id = "tox_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 8 }, /turf/open/floor/engine, /area/science/mixing) @@ -36073,32 +34031,19 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/engine, /area/science/mixing) "bJT" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the bomb testing site."; - dir = 2; - layer = 4; - name = "Testing Site Telescreen"; - network = list("toxins"); - pixel_y = -32 +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + req_access_txt = "8"; + req_one_access_txt = "0" }, -/turf/open/floor/plasteel, -/area/science/mixing) -"bJU" = ( -/obj/machinery/button/massdriver{ - dir = 2; - id = "toxinsdriver"; - pixel_y = -24 - }, -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/science/mixing) "bJV" = ( /obj/machinery/mass_driver{ @@ -36117,27 +34062,6 @@ }, /turf/open/floor/plating, /area/science/mixing) -"bJW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"bJX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"bJY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/circuit) "bJZ" = ( /obj/structure/window/reinforced{ dir = 4; @@ -36509,7 +34433,6 @@ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -36575,8 +34498,11 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bLc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1441; + id_tag = "mix_in"; + name = "distro out" }, /turf/open/floor/engine/vacuum, /area/engine/atmos) @@ -36591,27 +34517,12 @@ /area/engine/atmos) "bLf" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Exterior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, /turf/open/floor/engine, /area/science/mixing) -"bLg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - req_access_txt = "8" - }, -/turf/open/floor/plating, -/area/science/mixing) "bLh" = ( /obj/structure/window/reinforced{ dir = 8; @@ -36628,37 +34539,6 @@ }, /turf/open/floor/plating, /area/science/mixing) -"bLi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/science/mixing) -"bLj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"bLk" = ( -/obj/effect/decal/cleanable/oil{ - icon_state = "floor5" - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"bLl" = ( -/turf/open/floor/plasteel, -/area/science/circuit) -"bLm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/circuit) "bLn" = ( /turf/open/floor/plasteel/dark, /area/chapel/dock) @@ -36748,34 +34628,29 @@ /area/medical/virology) "bLC" = ( /obj/structure/table, -/obj/item/reagent_containers/dropper, /obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"bLD" = ( -/obj/effect/landmark/start/virologist, -/obj/structure/chair/office/light{ - dir = 8 +/obj/item/stack/sheet/mineral/plasma{ + amount = 2; + layer = 3 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/item/storage/box/monkeycubes{ + layer = 3.1 + }, +/obj/item/clothing/gloves/color/latex, /turf/open/floor/plasteel/white, /area/medical/virology) "bLE" = ( /obj/structure/table/glass, -/obj/item/clothing/gloves/color/latex, /obj/machinery/requests_console{ department = "Virology"; name = "Virology Requests Console"; pixel_x = 32; receive_ore_updates = 1 }, -/obj/item/storage/box/monkeycubes{ - layer = 3.1 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 2; - layer = 3 +/obj/item/paper_bin{ + layer = 2.9 }, +/obj/item/pen/red, /turf/open/floor/plasteel/whitegreen/side{ dir = 4 }, @@ -36927,7 +34802,7 @@ "bLX" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/atmos/glass{ +/obj/machinery/door/airlock/atmos{ name = "Atmospherics"; req_access_txt = "24" }, @@ -37013,8 +34888,13 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bMh" = ( -/obj/machinery/computer/atmos_control/tank/mix_tank{ - dir = 8 +/obj/machinery/computer/atmos_control/tank{ + dir = 8; + frequency = 1441; + input_tag = "mix_in"; + name = "Gas Mix Tank Control"; + output_tag = "mix_in"; + sensors = list("mix_sensor" = "Tank") }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -37025,7 +34905,10 @@ /turf/open/floor/plating/airless, /area/engine/atmos) "bMj" = ( -/obj/machinery/air_sensor/atmos/mix_tank, +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "mix_sensor" + }, /turf/open/floor/engine/vacuum, /area/engine/atmos) "bMk" = ( @@ -37035,8 +34918,10 @@ /turf/open/floor/engine/vacuum, /area/engine/atmos) "bMl" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ - dir = 1 +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "inc_in" }, /obj/structure/sign/warning/vacuum/external{ pixel_x = -32 @@ -37045,30 +34930,25 @@ /area/science/mixing) "bMm" = ( /obj/machinery/igniter{ - id = "toxigniter" + id = "toxigniter"; + luminosity = 2 }, /turf/open/floor/engine/vacuum, /area/science/mixing) "bMn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ dir = 1 }, /turf/open/floor/engine/vacuum, /area/science/mixing) -"bMo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = -32 - }, -/turf/open/floor/plating, -/area/science/mixing) "bMp" = ( -/obj/structure/closet/emcloset/anchored, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + req_access_txt = "8"; + req_one_access_txt = "0" }, /turf/open/floor/plating, /area/science/mixing) @@ -37184,8 +35064,12 @@ /obj/structure/table, /obj/structure/disposalpipe/segment, /obj/structure/table, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/glasses/hud/health, +/obj/item/storage/box/beakers{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/syringes, +/obj/item/reagent_containers/spray/cleaner, /turf/open/floor/plasteel/white, /area/medical/virology) "bMI" = ( @@ -37193,19 +35077,17 @@ /obj/structure/chair/office/light{ dir = 8 }, +/obj/effect/landmark/start/virologist, /turf/open/floor/plasteel/white, /area/medical/virology) "bMJ" = ( /obj/structure/table/glass, -/obj/item/storage/box/beakers{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/box/syringes, /obj/structure/reagent_dispensers/virusfood{ pixel_x = 32 }, -/obj/item/reagent_containers/spray/cleaner, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/glasses/hud/health, +/obj/item/reagent_containers/dropper, /turf/open/floor/plasteel/whitegreen/side{ dir = 6 }, @@ -37434,8 +35316,11 @@ /turf/open/space, /area/space/nearstation) "bNo" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input{ - dir = 8 +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + frequency = 1441; + id = "mix_in"; + pixel_y = 1 }, /turf/open/floor/engine/vacuum, /area/engine/atmos) @@ -37443,9 +35328,12 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bNq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plating, -/area/science/mixing) +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/space, +/area/space/nearstation) "bNr" = ( /obj/structure/window/reinforced{ dir = 4 @@ -37456,7 +35344,7 @@ /area/space/nearstation) "bNs" = ( /obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/chapel/asteroid/monastery) "bNt" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -37489,7 +35377,6 @@ dir = 1 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = 27 }, @@ -37614,11 +35501,7 @@ "bNQ" = ( /obj/machinery/light, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/obj/structure/table, -/obj/item/paper_bin{ - layer = 2.9 - }, -/obj/item/pen/red, +/obj/machinery/vending/wardrobe/viro_wardrobe, /turf/open/floor/plasteel/whitegreen/side, /area/medical/virology) "bNR" = ( @@ -37800,7 +35683,6 @@ dir = 4 }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; name = "Mix to Port" }, /turf/open/floor/plasteel, @@ -37840,22 +35722,15 @@ /turf/closed/wall/r_wall, /area/science/mixing) "bOt" = ( -/obj/machinery/door/poddoor{ - id = "toxvent"; - name = "Aft Vent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "bOu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 1 }, -/obj/machinery/door/airlock/external{ - req_access_txt = "8" - }, -/turf/open/floor/plating, -/area/science/mixing) +/turf/open/floor/plating/airless, +/area/space/nearstation) "bOv" = ( /obj/structure/window/reinforced{ dir = 4 @@ -37912,6 +35787,9 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, /turf/open/floor/plating, /area/maintenance/department/engine) "bOG" = ( @@ -37931,6 +35809,9 @@ dir = 4 }, /obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/department/engine) "bOI" = ( @@ -38133,28 +36014,17 @@ /turf/open/floor/plating, /area/engine/atmos) "bPg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1441; + id_tag = "n2o_out"; + name = "n2o out" }, /turf/open/floor/engine/n2o, /area/engine/atmos) "bPh" = ( /turf/open/floor/engine/n2o, /area/engine/atmos) -"bPj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"bPk" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) "bPl" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -38191,7 +36061,6 @@ /area/maintenance/department/engine) "bPq" = ( /obj/item/trash/chips, -/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plasteel/dark, /area/maintenance/department/engine) "bPr" = ( @@ -38216,6 +36085,7 @@ /obj/structure/cable{ icon_state = "2-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/department/engine) "bPu" = ( @@ -38279,7 +36149,11 @@ /area/storage/tech) "bPF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, +/obj/machinery/door/airlock/maintenance{ + name = "Tech Storage Maintenance"; + req_access_txt = "23" + }, +/turf/open/floor/plating, /area/storage/tech) "bPG" = ( /obj/machinery/light{ @@ -38351,7 +36225,6 @@ /area/engine/atmos) "bPR" = ( /obj/machinery/atmospherics/components/binary/pump/on{ - dir = 0; name = "Waste In" }, /turf/open/floor/plasteel, @@ -38362,7 +36235,6 @@ /area/engine/atmos) "bPT" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; name = "Air to Port" }, /obj/machinery/light{ @@ -38375,7 +36247,6 @@ /area/engine/atmos) "bPU" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; name = "Mix to Port" }, /turf/open/floor/plasteel, @@ -38392,8 +36263,13 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bPX" = ( -/obj/machinery/computer/atmos_control/tank/nitrous_tank{ - dir = 8 +/obj/machinery/computer/atmos_control/tank{ + dir = 8; + frequency = 1441; + input_tag = "n2o_in"; + name = "Nitrous Oxide Supply Control"; + output_tag = "n2o_out"; + sensors = list("n2o_sensor" = "Tank") }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -38405,7 +36281,10 @@ /turf/open/floor/plating, /area/engine/atmos) "bPZ" = ( -/obj/machinery/air_sensor/atmos/nitrous_tank, +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "n2o_sensor" + }, /turf/open/floor/engine/n2o, /area/engine/atmos) "bQa" = ( @@ -38433,6 +36312,7 @@ /area/chapel/asteroid/monastery) "bQe" = ( /obj/item/flashlight/lantern{ + icon_state = "lantern-on"; on = 1 }, /turf/open/floor/plating/asteroid, @@ -38523,31 +36403,13 @@ /area/storage/tech) "bQs" = ( /obj/structure/table, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, /obj/effect/decal/cleanable/cobweb, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/turf/open/floor/plasteel/darkgreen, -/area/storage/tech) -"bQt" = ( -/obj/structure/table, /obj/item/aicard, /obj/item/aiModule/reset, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/airalarm{ - dir = 2; - pixel_y = 22 - }, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bQu" = ( @@ -38582,6 +36444,10 @@ }, /obj/item/circuitboard/computer/monastery_shuttle, /obj/effect/spawner/lootdrop/techstorage/service, +/obj/machinery/airalarm{ + dir = 2; + pixel_y = 22 + }, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bQx" = ( @@ -38633,8 +36499,8 @@ icon_state = "2-8" }, /obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Bar2"; - location = "Eng" + codes_txt = "patrol;next_patrol=Eng3"; + location = "Eng2" }, /turf/open/floor/plasteel, /area/hallway/primary/aft) @@ -38720,7 +36586,8 @@ /area/engine/atmos) "bQN" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ - dir = 1 + dir = 1; + on = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -38733,8 +36600,11 @@ /turf/open/floor/plating, /area/engine/atmos) "bQP" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input{ - dir = 8 +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + frequency = 1441; + id = "n2o_in"; + pixel_y = 1 }, /turf/open/floor/engine/n2o, /area/engine/atmos) @@ -38768,19 +36638,22 @@ /obj/structure/cable{ icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/engine) "bQV" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/structure/cable{ icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plating, /area/maintenance/department/engine) "bQW" = ( @@ -38790,6 +36663,9 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/department/engine) "bQX" = ( @@ -38802,6 +36678,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/department/engine) "bQY" = ( @@ -38861,7 +36740,6 @@ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -38889,17 +36767,20 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/chair/office/dark{ + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bRh" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable{ + icon_state = "4-8" }, /turf/open/floor/plasteel/dark, /area/storage/tech) @@ -38910,6 +36791,9 @@ /obj/effect/turf_decal/stripes/corner{ dir = 2 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bRj" = ( @@ -38917,6 +36801,9 @@ dir = 1 }, /obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bRk" = ( @@ -38926,12 +36813,18 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bRl" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bRm" = ( @@ -38941,6 +36834,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bRn" = ( @@ -39100,7 +36996,6 @@ /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) "bRH" = ( -/obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering{ name = "Gravity Generator"; req_access_txt = "11" @@ -39119,6 +37014,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "bRJ" = ( @@ -39126,6 +37024,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "bRK" = ( @@ -39138,13 +37039,18 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, /area/storage/tech) "bRL" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bRM" = ( @@ -39195,6 +37101,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bRU" = ( @@ -39253,9 +37162,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "bSa" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/delivery, /obj/machinery/conveyor{ dir = 4; @@ -39335,8 +37242,11 @@ /turf/open/floor/plating, /area/engine/atmos) "bSj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1441; + id_tag = "tox_out"; + name = "toxin out" }, /turf/open/floor/engine/plasma, /area/engine/atmos) @@ -39378,23 +37288,16 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"bSr" = ( -/obj/structure/disposalpipe/junction/yjunction{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/department/engine) "bSs" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, -/obj/item/wrench, -/turf/open/floor/plating, /area/maintenance/department/engine) "bSt" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/machinery/meter, /turf/open/floor/plating, /area/maintenance/department/engine) @@ -39445,6 +37348,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "bSC" = ( @@ -39453,12 +37359,18 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "bSD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/closed/wall/r_wall, /area/storage/tech) "bSE" = ( @@ -39471,6 +37383,9 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bSF" = ( @@ -39479,6 +37394,9 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/item/beacon, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bSG" = ( @@ -39488,6 +37406,9 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bSH" = ( @@ -39498,6 +37419,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bSI" = ( @@ -39508,6 +37432,9 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, /turf/open/floor/plasteel/dark, /area/storage/tech) "bSJ" = ( @@ -39584,7 +37511,6 @@ dir = 8 }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; name = "Port to Filter" }, /obj/structure/extinguisher_cabinet{ @@ -39610,15 +37536,23 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bSV" = ( -/obj/machinery/computer/atmos_control/tank/toxin_tank{ - dir = 8 +/obj/machinery/computer/atmos_control/tank{ + dir = 8; + frequency = 1441; + input_tag = "tox_in"; + name = "Plasma Supply Control"; + output_tag = "tox_out"; + sensors = list("tox_sensor" = "Tank") }, /turf/open/floor/plasteel/yellow/side{ dir = 4 }, /area/engine/atmos) "bSW" = ( -/obj/machinery/air_sensor/atmos/toxin_tank, +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "tox_sensor" + }, /turf/open/floor/engine/plasma, /area/engine/atmos) "bSX" = ( @@ -39668,32 +37602,30 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"bTe" = ( -/obj/item/cigbutt/cigarbutt, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/department/engine) "bTf" = ( -/obj/machinery/door/airlock/atmos/abandoned{ - name = "Atmospherics Maintenance"; - req_access_txt = "12;24" +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 2; + name = "Virology Waste to Space" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" }, -/turf/open/floor/plating, /area/maintenance/department/engine) "bTg" = ( -/obj/machinery/atmospherics/components/binary/valve, -/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Virology Waste to Atmospherics" + }, /turf/open/floor/plating, /area/maintenance/department/engine) "bTh" = ( -/obj/machinery/light/small{ - dir = 4 - }, /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; name = "Air Out" }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, /area/maintenance/department/engine) "bTi" = ( /obj/item/picket_sign, @@ -39776,6 +37708,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/plating, /area/engine/gravity_generator) "bTs" = ( @@ -39962,7 +37897,6 @@ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_x = 30; pixel_y = 26 @@ -39973,7 +37907,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/structure/closet/wardrobe/atmospherics_yellow, +/obj/machinery/vending/wardrobe/atmos_wardrobe, /turf/open/floor/plasteel/yellow/side{ dir = 1 }, @@ -40023,13 +37957,17 @@ /area/engine/atmos) "bTU" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ - dir = 1 + dir = 1; + on = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) "bTV" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input{ - dir = 8 +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + frequency = 1441; + id = "tox_in"; + pixel_y = 1 }, /turf/open/floor/engine/plasma, /area/engine/atmos) @@ -40045,11 +37983,10 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bUa" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1; - name = "Connector Port (Air Supply)" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 }, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/item/wrench, /turf/open/floor/plating, /area/maintenance/department/engine) "bUb" = ( @@ -40157,7 +38094,6 @@ dir = 6 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 24 }, @@ -40287,7 +38223,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bUG" = ( -/obj/item/circuitboard/computer/libraryconsole, +/obj/machinery/power/emitter, /turf/open/floor/plating, /area/maintenance/department/engine) "bUH" = ( @@ -40327,6 +38263,9 @@ c_tag = "Chief Engineer's Office"; dir = 2 }, +/obj/machinery/computer/security/telescreen/ce{ + pixel_y = 30 + }, /turf/open/floor/plasteel/yellow/side{ dir = 1 }, @@ -40622,15 +38561,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"bVq" = ( -/obj/machinery/door/airlock/external{ - name = "Construction Zone" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plating, -/area/construction/mining/aux_base) "bVr" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/airless, @@ -40640,52 +38570,28 @@ /obj/item/mop, /turf/open/floor/plating, /area/maintenance/department/engine) -"bVt" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/plating, -/area/maintenance/department/engine) "bVu" = ( -/obj/structure/rack, -/obj/item/wrench, -/obj/item/clothing/head/welding, -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 }, -/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/department/engine) "bVv" = ( -/obj/structure/rack, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/obj/item/wallframe/camera, -/obj/item/wallframe/camera, -/obj/item/wallframe/camera, -/obj/item/wallframe/camera, -/obj/item/assault_pod/mining, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 }, -/area/maintenance/department/engine) -"bVw" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/rods/fifty, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/plating{ icon_state = "panelscorched" }, /area/maintenance/department/engine) -"bVx" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty, -/turf/open/floor/plating, +"bVw" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, /area/maintenance/department/engine) "bVy" = ( /obj/structure/table, @@ -40701,21 +38607,6 @@ icon_state = "panelscorched" }, /area/maintenance/department/engine) -"bVA" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/department/engine) -"bVB" = ( -/obj/item/book/manual/barman_recipes, -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/item/cigbutt, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/department/engine) "bVC" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -40918,11 +38809,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 27; - pixel_y = -39 - }, /obj/machinery/firealarm{ dir = 1; pixel_x = 27; @@ -40932,7 +38818,6 @@ /area/engine/break_room) "bVV" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 0; name = "Waste to Space" }, /turf/open/floor/plasteel, @@ -41019,6 +38904,9 @@ /area/chapel/asteroid/monastery) "bWj" = ( /obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/light/small{ + dir = 1 + }, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -41035,12 +38923,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"bWm" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/department/engine) "bWn" = ( /obj/structure/closet/secure_closet/engineering_chief, /obj/structure/extinguisher_cabinet{ @@ -41084,7 +38966,7 @@ /area/crew_quarters/heads/chief) "bWs" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/techstorage/AI, +/obj/effect/spawner/lootdrop/techstorage/RnD_secure, /turf/open/floor/plasteel/darkred, /area/storage/tech) "bWt" = ( @@ -41093,12 +38975,12 @@ c_tag = "Secure Tech Storage"; dir = 1 }, -/obj/effect/spawner/lootdrop/techstorage/RnD_secure, +/obj/effect/spawner/lootdrop/techstorage/command, /turf/open/floor/plasteel/darkred, /area/storage/tech) "bWu" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/techstorage/command, +/obj/effect/spawner/lootdrop/techstorage/AI, /turf/open/floor/plasteel/darkred, /area/storage/tech) "bWv" = ( @@ -41256,7 +39138,7 @@ dir = 9 }, /turf/closed/wall, -/area/engine/break_room) +/area/engine/engineering) "bWI" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, @@ -41364,24 +39246,19 @@ icon_state = "platingdmg3" }, /area/maintenance/department/engine) -"bXb" = ( -/obj/item/storage/toolbox/electrical, -/turf/open/floor/plating, -/area/maintenance/department/engine) -"bXc" = ( -/obj/item/flashlight, -/turf/open/floor/plating, -/area/maintenance/department/engine) "bXd" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/plating, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/floorgrime, /area/maintenance/department/engine) "bXe" = ( -/obj/structure/closet/firecloset, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/plating, /area/maintenance/department/engine) "bXf" = ( @@ -41616,59 +39493,25 @@ /area/chapel/asteroid/monastery) "bXS" = ( /obj/structure/grille/broken, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/sign/warning/deathsposal{ - pixel_x = -32 - }, /turf/open/floor/plating{ icon_state = "platingdmg1" }, /area/maintenance/department/engine) -"bXT" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +"bXU" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /turf/open/floor/plating{ icon_state = "platingdmg3" }, /area/maintenance/department/engine) -"bXU" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for the Auxillary Mining Base."; - dir = 1; - name = "Auxillary Base Monitor"; - network = list("auxbase"); - pixel_y = -28 - }, -/obj/machinery/computer/shuttle/mining{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/department/engine) "bXV" = ( -/obj/machinery/computer/camera_advanced/base_construction{ - dir = 1 +/obj/item/shard{ + icon_state = "small" }, -/turf/open/floor/plating, -/area/maintenance/department/engine) -"bXW" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/department/engine) -"bXX" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/engine) @@ -41699,10 +39542,6 @@ /turf/open/floor/plating, /area/crew_quarters/heads/chief) "bYa" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Chief Engineer"; - req_access_txt = "56" - }, /obj/structure/cable{ icon_state = "1-2" }, @@ -41714,6 +39553,11 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/door/airlock/command{ + name = "Chief Engineer"; + req_access_txt = "56" + }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) "bYb" = ( @@ -41859,64 +39703,43 @@ /obj/structure/chair/wood/normal, /turf/open/floor/plasteel/chapel, /area/chapel/main/monastery) +"bYC" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/plasteel, +/area/engine/engineering) "bYF" = ( -/obj/machinery/door/airlock/external{ - name = "Construction Zone" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plating, -/area/construction/mining/aux_base) -"bYG" = ( -/obj/machinery/power/apc/highcap/five_k{ - dir = 8; - name = "Engineering Maintenance APC"; - pixel_x = -25; - pixel_y = 1 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/maintenance/department/engine) -"bYH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, +/obj/item/trash/pistachios, +/obj/structure/rack, /turf/open/floor/plating, /area/maintenance/department/engine) "bYI" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance{ - name = "Engineering Maintenance"; - req_access_txt = "10" - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_y = 3 }, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 6 }, -/turf/open/floor/plating, -/area/maintenance/department/engine) +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) "bYJ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/turf/open/floor/plasteel, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYK" = ( /obj/structure/cable{ @@ -41929,7 +39752,9 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYL" = ( /obj/structure/cable{ @@ -41943,7 +39768,9 @@ sortType = 5 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYM" = ( /obj/structure/cable{ @@ -41958,7 +39785,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYN" = ( /obj/structure/cable{ @@ -41978,7 +39807,9 @@ icon_state = "map-pubby"; pixel_y = 32 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYO" = ( /obj/structure/cable{ @@ -41990,7 +39821,9 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYP" = ( /obj/structure/cable{ @@ -42005,7 +39838,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYQ" = ( /obj/structure/cable{ @@ -42017,7 +39852,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYR" = ( /obj/structure/cable{ @@ -42036,7 +39873,9 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYS" = ( /obj/structure/cable{ @@ -42051,7 +39890,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYT" = ( /obj/structure/cable{ @@ -42069,7 +39910,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYU" = ( /obj/structure/cable{ @@ -42088,7 +39931,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYV" = ( /obj/structure/cable{ @@ -42116,7 +39961,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYX" = ( /obj/structure/cable{ @@ -42135,7 +39982,9 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYY" = ( /obj/structure/cable{ @@ -42152,11 +40001,12 @@ dir = 4 }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, /area/engine/engineering) "bYZ" = ( /obj/structure/cable{ @@ -42184,29 +40034,19 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"bZb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plasteel, /area/engine/engineering) "bZc" = ( -/obj/machinery/power/apc/highcap/fifteen_k{ - dir = 4; - name = "Engineering APC"; - pixel_x = 28 +/obj/structure/rack, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/head/hardhat/orange, +/obj/item/clothing/head/hardhat/orange, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/closet/wardrobe/engineering_yellow, -/turf/open/floor/plasteel, /area/engine/engineering) "bZd" = ( /obj/structure/lattice, @@ -42314,33 +40154,39 @@ }, /area/maintenance/department/engine) "bZs" = ( -/turf/open/floor/plating, -/area/construction/mining/aux_base) -"bZt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, -/area/construction/mining/aux_base) -"bZw" = ( -/obj/item/bikehorn/rubberducky, -/turf/open/floor/plating, +/area/maintenance/department/engine) +"bZt" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, /area/maintenance/department/engine) "bZx" = ( -/obj/structure/sign/directions/engineering{ - icon_state = "direction_eng"; - dir = 4 +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/closed/wall, -/area/maintenance/department/engine) +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 26 + }, +/obj/item/storage/belt/utility, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/clothing/glasses/meson/engine, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) "bZy" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/requests_console{ - announcementConsole = 0; - department = "Engineering"; - departmentType = 4; - name = "Engineering RC"; - pixel_x = -32 +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plasteel, /area/engine/engineering) @@ -42479,19 +40325,13 @@ dir = 8; id = "incineratorturbine" }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Outtake Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = 24; - pixel_y = 6; - req_one_access_txt = "8;24" + pixel_y = 6 }, -/obj/machinery/button/door{ - id = "mixvent"; - name = "Intake Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = 24; - pixel_y = -6; - req_one_access_txt = "8;24" + pixel_y = -6 }, /turf/open/floor/plasteel/darkyellow/side{ dir = 4 @@ -42511,6 +40351,9 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airlock_sensor/incinerator_atmos{ + pixel_y = 22 + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "bZT" = ( @@ -42539,47 +40382,26 @@ }, /area/maintenance/department/engine) "cab" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plating, -/area/construction/mining/aux_base) +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/department/engine) "cad" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, +/obj/structure/window/reinforced, /turf/open/floor/plating, -/area/construction/mining/aux_base) +/area/maintenance/department/engine) "cae" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, /area/engine/engineering) "caf" = ( -/obj/machinery/door/window/southleft{ - base_state = "left"; - dir = 4; - icon_state = "left"; - name = "Engineering Delivery"; - req_access_txt = "10" - }, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=4"; - freq = 1400; - location = "Engineering" - }, -/turf/open/floor/plasteel/vault{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/engine/engineering) -"cag" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/engine/engineering) "cah" = ( @@ -42588,6 +40410,7 @@ /area/engine/engineering) "cai" = ( /obj/structure/chair/office/dark, +/obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel, /area/engine/engineering) "caj" = ( @@ -42596,13 +40419,14 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/chair/office/dark, +/obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel, /area/engine/engineering) "cak" = ( -/obj/effect/landmark/start/station_engineer, /obj/structure/chair/office/dark{ dir = 8 }, +/obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel, /area/engine/engineering) "cal" = ( @@ -42797,24 +40621,10 @@ icon_state = "4-8" }, /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Turbine Interior Airlock"; - req_access_txt = "24" - }, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ pixel_x = -6; - pixel_y = -26; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" + pixel_y = -26 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -42822,10 +40632,8 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 2 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -42834,23 +40642,14 @@ icon_state = "4-8" }, /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Turbine Exterior Airlock"; - req_access_txt = "24" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "caO" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/igniter{ - id = "Incinerator" - }, +/obj/machinery/igniter/incinerator_atmos, /obj/machinery/air_sensor/atmos/incinerator_tank{ pixel_x = 32; pixel_y = -32 @@ -42887,10 +40686,7 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "caR" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Outtake Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "caS" = ( @@ -42925,7 +40721,6 @@ "cba" = ( /obj/structure/table, /obj/item/storage/fancy/cigarettes/cigpack_robustgold, -/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plating, /area/maintenance/department/engine) "cbb" = ( @@ -42935,17 +40730,14 @@ }, /area/maintenance/department/engine) "cbc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light{ - dir = 8 +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/item/radio/intercom{ - dir = 0; - name = "Station Intercom (General)"; - pixel_x = -27 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plasteel, /area/engine/engineering) @@ -42957,12 +40749,10 @@ /area/engine/engineering) "cbe" = ( /obj/item/pen, -/obj/item/storage/belt/utility, /obj/item/paper_bin{ layer = 2.9 }, /obj/structure/table/glass, -/obj/item/clothing/glasses/meson/engine, /turf/open/floor/plasteel, /area/engine/engineering) "cbf" = ( @@ -42971,13 +40761,11 @@ pixel_y = 3 }, /obj/item/book/manual/wiki/engineering_construction, -/obj/item/clothing/gloves/color/yellow, /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table/glass, -/obj/item/flashlight, /turf/open/floor/plasteel, /area/engine/engineering) "cbg" = ( @@ -42990,7 +40778,6 @@ pixel_x = -3; pixel_y = -3 }, -/obj/item/clothing/gloves/color/yellow, /obj/structure/table/glass, /turf/open/floor/plasteel, /area/engine/engineering) @@ -43047,9 +40834,7 @@ /area/engine/engineering) "cbn" = ( /obj/structure/table, -/obj/item/clothing/gloves/color/yellow, /obj/item/storage/belt/utility, -/obj/item/clothing/glasses/meson/engine, /turf/open/floor/plasteel, /area/engine/engineering) "cbo" = ( @@ -43061,7 +40846,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cbp" = ( -/obj/effect/landmark/start/station_engineer, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, @@ -43074,13 +40858,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"cbr" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "cbs" = ( /turf/open/floor/engine/n2, /area/engine/atmos) @@ -43129,8 +40906,7 @@ /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "cbC" = ( -/obj/machinery/button/ignition{ - id = "Incinerator"; +/obj/machinery/button/ignition/incinerator/atmos{ pixel_x = 26; pixel_y = -6 }, @@ -43154,12 +40930,6 @@ }, /obj/machinery/light/small, /obj/machinery/atmospherics/pipe/simple/general/hidden, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; - pixel_x = -26; - pixel_y = 8 - }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "cbF" = ( @@ -43224,40 +40994,38 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, /area/maintenance/department/engine) -"cbU" = ( -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/department/engine) "cbV" = ( /obj/machinery/shieldgen, /turf/open/floor/plating, /area/engine/engineering) "cbW" = ( -/obj/machinery/shieldgen, -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "cbX" = ( /turf/open/floor/plating, /area/engine/engineering) "cbY" = ( -/obj/machinery/door/poddoor{ - id = "Secure Storage"; - name = "secure storage" - }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/loading_area{ dir = 4 }, -/turf/open/floor/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, /area/engine/engineering) "cbZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plasteel, /area/engine/engineering) @@ -43266,16 +41034,22 @@ /obj/structure/chair/office/dark{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engineering) "ccb" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/chair/office/dark{ dir = 1 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel, /area/engine/engineering) "ccc" = ( @@ -43363,10 +41137,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"ccl" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel, -/area/engine/engineering) "ccm" = ( /obj/machinery/light/small, /turf/open/floor/engine/n2, @@ -43403,22 +41173,13 @@ }, /area/maintenance/disposal/incinerator) "ccs" = ( -/obj/machinery/door/poddoor{ - id = "mixvent"; - name = "Intake Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "ccu" = ( /obj/structure/flora/ausbushes/leafybush, /turf/open/floor/plating/asteroid, /area/chapel/asteroid/monastery) -"ccv" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/chapel/office) "ccE" = ( /obj/structure/cable{ icon_state = "1-8" @@ -43450,6 +41211,7 @@ /area/chapel/main/monastery) "ccL" = ( /obj/item/flashlight/lantern{ + icon_state = "lantern-on"; on = 1 }, /turf/open/floor/plasteel/asteroid{ @@ -43487,9 +41249,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 30 }, -/obj/item/gps{ - gpstag = "ENG0" - }, +/obj/item/gps/engineering, /turf/open/floor/plating, /area/engine/engineering) "ccS" = ( @@ -43628,7 +41388,7 @@ pixel_y = 4 }, /obj/item/pen, -/turf/open/floor/carpet, +/turf/open/floor/carpet/black, /area/chapel/office) "cdq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -43692,67 +41452,94 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "cdI" = ( -/obj/machinery/field/generator, -/obj/machinery/camera{ - c_tag = "Engineering Secure Storage"; - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"cdJ" = ( -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/plating, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "cdK" = ( -/obj/machinery/power/port_gen/pacman, -/turf/open/floor/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "cdL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/corner{ +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "cdM" = ( /obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "cdN" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/engineering) "cdO" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "cdP" = ( +/obj/machinery/light, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"cdQ" = ( +/obj/effect/turf_decal/stripes/line, /obj/machinery/camera{ c_tag = "Engineering Port Aft"; dir = 1 }, -/obj/machinery/light, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cdQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "cdR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, /obj/machinery/button/door{ id = "Singularity"; name = "Shutters Control"; pixel_x = 25; req_access_txt = "11" }, -/obj/effect/turf_decal/stripes/line{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "cdS" = ( @@ -43779,10 +41566,6 @@ /obj/structure/particle_accelerator/fuel_chamber, /turf/open/floor/plating, /area/engine/engineering) -"cdV" = ( -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/plating, -/area/engine/engineering) "cdW" = ( /obj/machinery/button/door{ id = "Singularity"; @@ -43796,33 +41579,30 @@ /turf/open/floor/plating, /area/engine/engineering) "cdX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, /obj/machinery/button/door{ id = "Singularity"; name = "Shutters Control"; pixel_x = -25; req_access_txt = "11" }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/reagent_dispensers/watertank, /turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "cdY" = ( -/obj/machinery/camera{ - c_tag = "Engineering Starboard Aft"; - dir = 1 - }, -/obj/machinery/light, /obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "cdZ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "ceb" = ( /obj/machinery/computer/rdconsole/production{ @@ -43855,7 +41635,7 @@ /turf/open/floor/plasteel/asteroid, /area/chapel/office) "ceg" = ( -/obj/machinery/door/airlock/grunge{ +/obj/machinery/door/airlock/centcom{ name = "Chapel Office"; opacity = 1; req_access_txt = "22" @@ -43933,19 +41713,13 @@ req_access_txt = "10; 61" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ces" = ( +/obj/machinery/door/firedoor, /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access_txt = "10;13" +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, /area/engine/engineering) "cet" = ( /obj/machinery/door/poddoor/shutters/preopen{ @@ -43994,17 +41768,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cez" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/engine/engineering) "ceA" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 1 @@ -44096,43 +41859,51 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "ceT" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/stripes/line, +/obj/structure/closet/emcloset, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/engine/engineering) "ceU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching telecomms."; + dir = 2; + layer = 4; + name = "Telecomms Telescreen"; + network = list("tcomms"); + pixel_y = 28 }, -/turf/open/floor/plasteel, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "ceV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/turf/open/floor/plasteel, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/engine/engineering) -"ceW" = ( +"ceX" = ( /obj/machinery/light/small{ dir = 8; light_color = "#fff4bc" }, /obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/engine/engineering) -"ceX" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/engine/engineering) "ceY" = ( @@ -44142,7 +41913,15 @@ /turf/open/floor/plating, /area/engine/engineering) "cfa" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/engine/engineering) "cfb" = ( @@ -44235,37 +42014,10 @@ /turf/open/floor/plating, /area/engine/engineering) "cfs" = ( -/obj/machinery/camera{ - c_tag = "Engineering Telecomms Access"; - dir = 8; - network = list("tcomm") - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching telecomms."; - dir = 8; - layer = 4; - name = "Telecomms Telescreen"; - network = list("tcomm"); - pixel_x = 30 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cft" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access_txt = "10;13" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "cfu" = ( /obj/structure/cable/yellow{ @@ -44301,19 +42053,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cfz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/engine/engineering) "cfC" = ( /obj/machinery/biogenerator, /turf/open/floor/plasteel/hydrofloor, @@ -44402,73 +42141,86 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "cfQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cfR" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cfS" = ( -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/chair{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cfS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/engine/engineering) "cfT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"cfU" = ( /obj/machinery/camera/emp_proof{ c_tag = "Engine Containment Port Fore"; dir = 2; network = list("engine") }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cfU" = ( -/obj/machinery/power/grounding_rod, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/plating/airless, /area/engine/engineering) "cfV" = ( /turf/open/floor/plating/airless, /area/engine/engineering) "cfW" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plating, /area/engine/engineering) "cfX" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Engine Containment Starboard Fore"; - dir = 2; - network = list("engine") +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/plating/airless, /area/engine/engineering) "cfY" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cfZ" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/disposal/deliveryChute, +/obj/structure/disposalpipe/trunk{ + dir = 8 }, /turf/open/floor/plating/airless, /area/engine/engineering) @@ -44536,11 +42288,12 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "cgp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/item/wrench, /turf/open/floor/plating, -/area/construction/mining/aux_base) +/area/maintenance/department/engine) "cgr" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/transit_tube, @@ -44552,14 +42305,10 @@ name = "Engineering External Access"; req_access_txt = "61" }, -/turf/open/floor/plating, -/area/engine/engineering) -"cgt" = ( -/obj/structure/grille, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/engine/engineering) "cgu" = ( /obj/structure/cable/yellow{ @@ -44664,27 +42413,10 @@ /obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, -/turf/open/floor/plating, -/area/engine/engineering) -"cgR" = ( -/obj/structure/grille, /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cgS" = ( -/obj/machinery/power/emitter/anchored{ - dir = 4; - state = 2 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/engine/engineering) "cgT" = ( /obj/effect/turf_decal/stripes/line{ @@ -44699,38 +42431,23 @@ /turf/open/floor/plating/airless, /area/engine/engineering) "cgV" = ( -/obj/machinery/field/generator{ - anchored = 1; - state = 2 +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, /turf/open/floor/plating/airless, -/area/space) +/area/engine/engineering) "cgY" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plating/airless, /area/engine/engineering) -"cgZ" = ( -/obj/machinery/power/emitter/anchored{ - dir = 8; - state = 2 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cha" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "chb" = ( /obj/machinery/camera{ c_tag = "Monastery Kitchen"; @@ -44837,6 +42554,9 @@ name = "Engineering External Access"; req_access_txt = "61" }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/engine/engineering) "chw" = ( @@ -44848,26 +42568,15 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) -"chx" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"chz" = ( -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/machinery/power/tesla_coil, -/turf/open/floor/plating/airless, -/area/engine/engineering) "chA" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/cable/yellow{ - icon_state = "1-8" +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plating/airless, /area/engine/engineering) @@ -44885,7 +42594,6 @@ }, /obj/effect/decal/cleanable/cobweb, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -44953,39 +42661,6 @@ /obj/item/soap/homemade, /turf/open/floor/plasteel/showroomfloor, /area/chapel/main/monastery) -"chO" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"chP" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"chR" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"chS" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"chT" = ( -/obj/structure/flora/ausbushes/leafybush, -/obj/structure/flora/ausbushes/fernybush, -/turf/open/floor/plating/asteroid, -/area/chapel/asteroid/monastery) "chU" = ( /obj/structure/sink{ dir = 4; @@ -45045,35 +42720,17 @@ /obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/grass, /area/hydroponics/garden/monastery) +"cif" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/item/stack/cable_coil/yellow, +/turf/open/floor/plating, +/area/maintenance/department/engine) "cig" = ( /obj/structure/transit_tube/crossing, /turf/open/floor/plating/airless, /area/space/nearstation) -"cih" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cii" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/space) -"cij" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space) -"cik" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/space) "cio" = ( /obj/structure/closet/cabinet, /obj/item/clothing/suit/holidaypriest, @@ -45103,39 +42760,25 @@ /turf/open/floor/plasteel/showroomfloor, /area/chapel/main/monastery) "cir" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 8 + }, /obj/machinery/light{ dir = 8 }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, /turf/open/floor/plating/airless, /area/engine/engineering) -"cis" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space) "cit" = ( /obj/machinery/the_singularitygen/tesla, /turf/open/floor/plating/airless, -/area/space) -"ciu" = ( -/obj/effect/turf_decal/stripes/line{ +/area/engine/engineering) +"civ" = ( +/obj/effect/turf_decal/stripes/end{ dir = 4 }, -/turf/open/floor/plating/airless, -/area/space) -"civ" = ( /obj/machinery/light{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, /turf/open/floor/plating/airless, /area/engine/engineering) "ciy" = ( @@ -45147,7 +42790,7 @@ /turf/open/floor/plasteel/hydrofloor, /area/chapel/main/monastery) "ciz" = ( -/obj/structure/closet/coffin, +/obj/structure/closet/crate/coffin, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "ciA" = ( @@ -45187,19 +42830,19 @@ dir = 10 }, /turf/open/floor/plating/airless, -/area/space) +/area/engine/engineering) "ciH" = ( /obj/effect/turf_decal/stripes/line{ dir = 2 }, /turf/open/floor/plating/airless, -/area/space) +/area/engine/engineering) "ciI" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 }, /turf/open/floor/plating/airless, -/area/space) +/area/engine/engineering) "ciJ" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/cobweb, @@ -45426,7 +43069,6 @@ icon_state = "plant-22" }, /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -45446,31 +43088,8 @@ }, /turf/open/floor/carpet, /area/library/lounge) -"cjT" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cjU" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "cjV" = ( -/obj/machinery/camera{ - active_power_usage = 0; - c_tag = "Bomb Testing Asteroid Fore"; - desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site. An external light is attached to the top."; - invuln = 1; - luminosity = 3; - name = "Hardened Bomb-Test Camera"; - network = list("ss13","rd","toxins"); - use_power = 0 - }, +/obj/machinery/camera/preset/toxins, /turf/open/floor/plating/asteroid/airless, /area/asteroid/nearstation/bomb_site) "cjZ" = ( @@ -45577,10 +43196,6 @@ }, /turf/open/floor/plasteel/dark, /area/library/lounge) -"ckq" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/engine/engineering) "ckr" = ( /obj/machinery/camera/emp_proof{ c_tag = "Engine Containment Port Aft"; @@ -45830,6 +43445,7 @@ /area/library) "clj" = ( /obj/item/flashlight/lantern{ + icon_state = "lantern-on"; on = 1 }, /turf/open/floor/plating/asteroid/airless, @@ -45858,52 +43474,34 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/closed/mineral, /area/asteroid/nearstation/bomb_site) -"clu" = ( -/obj/machinery/camera{ - c_tag = "Telecomms External Fore"; - dir = 1; - network = list("SS13","tcomm"); - start_active = 1 - }, -/turf/open/space, -/area/space/nearstation) "clv" = ( /turf/closed/mineral/iron, /area/asteroid/nearstation/bomb_site) "clw" = ( /turf/closed/wall/r_wall, /area/tcommsat/computer) -"clx" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 4 +"clz" = ( +/obj/structure/cable{ + icon_state = "2-8" }, /turf/open/floor/plating/airless, -/area/science/mixing) -"cly" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/space, /area/space/nearstation) -"clz" = ( +"clA" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ name = "Telecommunications External Access"; req_access_txt = "61" }, -/turf/open/floor/plating, -/area/tcommsat/computer) -"clA" = ( -/obj/machinery/light/small{ - brightness = 3; - dir = 8 +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plating, /area/tcommsat/computer) "clB" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, /area/tcommsat/computer) "clC" = ( /obj/structure/window/reinforced/fulltile, @@ -45911,12 +43509,12 @@ /turf/open/floor/plating, /area/tcommsat/computer) "clD" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 +/obj/machinery/light/small{ + brightness = 3; + dir = 8 }, -/obj/machinery/door/airlock/external{ - name = "Telecommunications External Access"; - req_access_txt = "61" +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/plating, /area/tcommsat/computer) @@ -45939,21 +43537,18 @@ }, /turf/open/floor/plating, /area/tcommsat/computer) -"clI" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/tcommsat/computer) "clJ" = ( -/turf/open/floor/plasteel, -/area/tcommsat/computer) -"clK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/machinery/light/small{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/turf/open/floor/plasteel, +/obj/machinery/door/airlock/external{ + name = "Telecommunications External Access"; + req_access_txt = "61" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, /area/tcommsat/computer) "clL" = ( /turf/closed/wall, @@ -45961,7 +43556,7 @@ "clM" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; - name = "Waste Out" + name = "Waste to Space" }, /turf/open/floor/plating, /area/tcommsat/computer) @@ -45979,102 +43574,127 @@ /turf/open/floor/plating, /area/tcommsat/computer) "clQ" = ( +/obj/machinery/light/small{ + dir = 1 + }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, /turf/open/floor/plasteel, /area/tcommsat/computer) "clR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/item/beacon, /turf/open/floor/plasteel, /area/tcommsat/computer) "clS" = ( +/obj/machinery/light/small{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, /turf/open/floor/plasteel, /area/tcommsat/computer) "clT" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Telecommunications Maintenance"; - req_access_txt = "61" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plating, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/closed/wall, /area/tcommsat/computer) "clU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, +/obj/item/wrench, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, /turf/open/floor/plating, /area/tcommsat/computer) "clV" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 0; - name = "Air Out" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating, -/area/tcommsat/computer) -"clW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/tcommsat/computer) "clX" = ( -/obj/machinery/camera/motion{ - c_tag = "Telecomms External Access"; - dir = 1; - network = list("ss13","tcomm") +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, /turf/open/floor/plasteel, /area/tcommsat/computer) "clY" = ( +/obj/item/beacon, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/tcommsat/computer) "clZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 + dir = 1 }, /turf/open/floor/plasteel, /area/tcommsat/computer) "cma" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/closed/wall, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Telecommunications Maintenance"; + req_access_txt = "61" + }, +/turf/open/floor/plating, /area/tcommsat/computer) "cmb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/wrench, -/obj/item/stack/cable_coil, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/tcommsat/computer) "cmc" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/machinery/power/port_gen/pacman, +/obj/item/stack/cable_coil, /turf/open/floor/plating, /area/tcommsat/computer) "cmd" = ( -/obj/machinery/door/airlock/engineering{ - name = "Telecommunications Chamber"; - req_access_txt = "61" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/tcommsat/computer) "cme" = ( @@ -46109,31 +43729,15 @@ }, /area/tcommsat/computer) "cmh" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 +/obj/machinery/door/airlock/engineering{ + name = "Telecommunications Chamber"; + req_access_txt = "61" }, -/area/tcommsat/computer) -"cmi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = 26 - }, -/obj/machinery/camera/motion{ - c_tag = "Telecomms Monitoring"; - dir = 2; - network = list("ss13","tcomm") - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 + icon_state = "1-2" }, +/turf/open/floor/plasteel, /area/tcommsat/computer) "cmj" = ( /obj/machinery/door/airlock/command/glass{ @@ -46237,7 +43841,7 @@ /obj/machinery/camera/motion{ c_tag = "Telecomms External Port"; dir = 8; - network = list("tcomm") + network = list("tcomms") }, /turf/open/space, /area/space/nearstation) @@ -46299,60 +43903,16 @@ /obj/machinery/camera/motion{ c_tag = "Telecomms External Starboard"; dir = 4; - network = list("tcomm") + network = list("tcomms") }, /turf/open/space, /area/space/nearstation) -"cmA" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/sign/warning{ - name = "\improper DANGER: NITROGEN ATMOSPHERE"; - pixel_x = 32 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/tcommsat/computer) "cmB" = ( /turf/closed/wall/r_wall, /area/tcommsat/server) -"cmC" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/closed/wall/r_wall, -/area/tcommsat/server) -"cmD" = ( -/obj/machinery/power/smes{ - charge = 5e+006 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/circuit/telecomms/mainframe, -/area/tcommsat/server) -"cmE" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/tcommsat/computer) "cmF" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/engineering/glass{ - name = "Server Room"; - req_access_txt = "61" - }, /obj/structure/cable{ - icon_state = "1-8" + icon_state = "1-2" }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -46366,23 +43926,6 @@ /obj/machinery/telecomms/message_server, /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) -"cmI" = ( -/obj/machinery/power/apc/highcap/five_k{ - dir = 1; - layer = 4; - name = "Telecomms Server APC"; - areastring = "/area/tcommsat/server"; - pixel_y = 24 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/dark/telecomms, -/area/tcommsat/server) -"cmJ" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/turf/open/floor/plasteel/dark/telecomms, -/area/tcommsat/server) "cmK" = ( /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) @@ -46488,16 +44031,9 @@ /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) "cnp" = ( -/obj/machinery/camera{ - active_power_usage = 0; +/obj/machinery/camera/preset/toxins{ c_tag = "Bomb Testing Asteroid Aft"; - desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site. An external light is attached to the top."; - dir = 1; - invuln = 1; - luminosity = 3; - name = "Hardened Bomb-Test Camera"; - network = list("ss13","rd","toxins"); - use_power = 0 + dir = 1 }, /turf/open/floor/plating/asteroid/airless, /area/asteroid/nearstation/bomb_site) @@ -46536,7 +44072,7 @@ /obj/machinery/camera/motion{ c_tag = "Telecomms Server Room"; dir = 1; - network = list("ss13","tcomm") + network = list("tcomms") }, /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) @@ -46567,7 +44103,7 @@ /obj/machinery/camera/motion{ c_tag = "Telecomms External Port Aft"; dir = 2; - network = list("tcomm") + network = list("tcomms") }, /turf/open/space, /area/space/nearstation) @@ -46576,7 +44112,7 @@ /obj/machinery/camera/motion{ c_tag = "Telecomms External Starboard Aft"; dir = 2; - network = list("tcomm") + network = list("tcomms") }, /turf/open/space, /area/space/nearstation) @@ -46608,8 +44144,8 @@ /turf/open/space/basic, /area/ai_monitored/turret_protected/AIsatextAS) "cnJ" = ( -/obj/structure/closet/wardrobe/red, /obj/effect/turf_decal/delivery, +/obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/plasteel/showroomfloor, /area/security/main) "cnN" = ( @@ -46635,9 +44171,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"cnS" = ( -/turf/closed/wall/r_wall, -/area/security/main) "cnT" = ( /obj/structure/weightlifter, /turf/open/floor/plasteel/showroomfloor, @@ -46691,6 +44224,7 @@ /obj/structure/chair/comfy{ dir = 8 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/carpet, /area/crew_quarters/dorms) "cok" = ( @@ -46700,6 +44234,7 @@ /obj/structure/chair/comfy{ dir = 8 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/carpet, /area/crew_quarters/dorms) "col" = ( @@ -46721,23 +44256,30 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "cop" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ - name = "Dormitories" + name = "Dormitories"; + req_access_txt = "0" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"coq" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/storage/emergency/starboard) "cor" = ( -/obj/item/extinguisher, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "public external airlock"; + req_access_txt = "0" + }, /turf/open/floor/plating, /area/storage/emergency/starboard) "cos" = ( @@ -46759,11 +44301,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral/side, /area/storage/primary) -"cow" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/emergency, -/turf/open/floor/plating, -/area/storage/emergency/starboard) "coy" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -46844,15 +44381,11 @@ /area/maintenance/department/crew_quarters/bar) "coL" = ( /obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/quartermaster/warehouse) "coN" = ( /turf/open/floor/plasteel/neutral/corner, /area/hallway/secondary/exit/departure_lounge) -"coT" = ( -/obj/item/beacon, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) "coV" = ( /obj/machinery/vending/cigarette, /turf/open/floor/plasteel/vault{ @@ -47150,12 +44683,12 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "cpQ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, /obj/effect/turf_decal/plaque{ icon_state = "L10" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "cpR" = ( @@ -47184,12 +44717,6 @@ /obj/item/twohanded/required/kirbyplants, /turf/open/floor/plasteel/purple/side, /area/hallway/primary/central) -"cpV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "cpX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/whiteblue/side{ @@ -47226,8 +44753,12 @@ /area/medical/medbay/central) "cqe" = ( /obj/effect/turf_decal/plaque, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Med"; + location = "Sci9" + }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqf" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -47239,10 +44770,10 @@ "cqh" = ( /obj/machinery/door/firedoor, /turf/open/floor/plasteel/purple/corner, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqi" = ( /turf/open/floor/plasteel/purple/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqk" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -47250,14 +44781,14 @@ /turf/open/floor/plasteel/purple/side{ dir = 8 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "cql" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqm" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -47273,7 +44804,7 @@ /turf/open/floor/plasteel/green/side{ dir = 1 }, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -47292,7 +44823,7 @@ dir = 2 }, /turf/open/floor/plasteel/purple/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqv" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -47302,21 +44833,21 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqw" = ( /obj/structure/cable{ icon_state = "4-8" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqx" = ( /obj/structure/cable{ icon_state = "4-8" }, /obj/machinery/door/firedoor, /turf/open/floor/plasteel, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqy" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, @@ -47326,12 +44857,12 @@ dir = 4 }, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqD" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqE" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-18"; @@ -47341,7 +44872,7 @@ dir = 4 }, /turf/open/floor/plasteel/green/side, -/area/science/research/lobby) +/area/hallway/primary/aft) "cqG" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 @@ -47363,7 +44894,7 @@ /area/chapel/dock) "cqS" = ( /obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/space/nearstation) "cqU" = ( /obj/structure/window/reinforced{ @@ -47416,6 +44947,15 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) +"cri" = ( +/obj/machinery/door/poddoor{ + id = "Secure Storage"; + name = "secure storage" + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/engine/engineering) "crj" = ( /obj/machinery/light/small{ dir = 8 @@ -47532,15 +45072,6 @@ /obj/item/reagent_containers/food/snacks/grown/poppy, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) -"crJ" = ( -/obj/machinery/door/airlock/grunge{ - name = "Crematorium"; - opacity = 1; - req_access_txt = "27" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/chapel/office) "crK" = ( /obj/machinery/light/small{ dir = 8 @@ -47583,12 +45114,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"crS" = ( -/obj/machinery/airalarm/unlocked{ - pixel_y = 23 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) "crT" = ( /obj/machinery/light/small{ dir = 1 @@ -47607,10 +45132,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) -"crV" = ( -/obj/structure/flora/ausbushes/pointybush, -/turf/closed/mineral, -/area/chapel/asteroid/monastery) "crX" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/dark, @@ -47627,16 +45148,13 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "csd" = ( -/obj/structure/table/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/black, /area/chapel/office) "cse" = ( -/obj/structure/table/wood, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-18"; - pixel_y = 8 +/obj/machinery/light/small{ + dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/black, /area/chapel/office) "csf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -47656,12 +45174,6 @@ "csi" = ( /turf/open/floor/plasteel/darkyellow/corner, /area/chapel/office) -"csj" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) "csk" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/bottle/wine{ @@ -47671,7 +45183,6 @@ /area/chapel/main/monastery) "csn" = ( /obj/item/radio/intercom{ - dir = 0; name = "Station Intercom (General)"; pixel_y = 26 }, @@ -47680,7 +45191,11 @@ departmentType = 2; pixel_x = -32 }, -/obj/structure/closet/wardrobe/chaplain_black, +/obj/structure/closet, +/obj/item/storage/backpack/cultpack, +/obj/item/clothing/head/nun_hood, +/obj/item/clothing/suit/nun, +/obj/item/clothing/suit/holidaypriest, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -47688,16 +45203,13 @@ "cso" = ( /obj/structure/table/wood, /obj/item/nullrod, -/turf/open/floor/carpet, +/turf/open/floor/carpet/black, /area/chapel/office) "csp" = ( /obj/structure/chair/wood/normal{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/darkred/side{ - dir = 10 - }, +/turf/open/floor/carpet/black, /area/chapel/office) "csq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -47724,6 +45236,15 @@ dir = 10 }, /area/chapel/office) +"csu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) "csv" = ( /obj/machinery/light/small{ dir = 8 @@ -47739,11 +45260,11 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "csB" = ( -/obj/structure/chair/comfy/black{ +/obj/effect/landmark/start/chaplain, +/obj/structure/chair/wood/normal{ dir = 4 }, -/obj/effect/landmark/start/chaplain, -/turf/open/floor/carpet, +/turf/open/floor/carpet/black, /area/chapel/office) "csC" = ( /obj/structure/table/wood, @@ -47752,14 +45273,7 @@ pixel_x = -2; pixel_y = 2 }, -/turf/open/floor/carpet, -/area/chapel/office) -"csD" = ( -/obj/structure/chair/wood/normal{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/darkred, +/turf/open/floor/carpet/black, /area/chapel/office) "csE" = ( /turf/open/floor/plasteel/darkred, @@ -47776,20 +45290,6 @@ }, /turf/open/floor/plasteel/darkred, /area/chapel/office) -"csI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/grunge{ - name = "Chapel Office"; - opacity = 1; - req_access_txt = "22" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) "csM" = ( /obj/structure/cable{ icon_state = "4-8" @@ -47851,11 +45351,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, /area/chapel/main/monastery) -"csX" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/airless, -/area/maintenance/department/engine) "csY" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/machinery/newscaster{ @@ -47865,17 +45360,6 @@ dir = 8 }, /area/chapel/office) -"csZ" = ( -/obj/structure/chair/wood/normal{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/darkred/side{ - dir = 9 - }, -/area/chapel/office) "cta" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -47912,7 +45396,6 @@ /area/chapel/main/monastery) "ctr" = ( /turf/open/floor/plasteel/darkyellow/corner{ - icon_state = "darkyellowcorners"; dir = 4 }, /area/chapel/office) @@ -47921,7 +45404,6 @@ dir = 1 }, /turf/open/floor/plasteel/darkyellow/corner{ - icon_state = "darkyellowcorners"; dir = 4 }, /area/chapel/office) @@ -47930,7 +45412,6 @@ dir = 2 }, /turf/open/floor/plasteel/darkyellow/corner{ - icon_state = "darkyellowcorners"; dir = 4 }, /area/chapel/office) @@ -48033,33 +45514,9 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"ctV" = ( -/obj/structure/closet, -/obj/item/clothing/suit/holidaypriest, -/obj/item/clothing/suit/nun, -/obj/item/clothing/head/nun_hood, -/obj/item/storage/backpack/cultpack, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/chapel/office) -"ctW" = ( -/obj/structure/closet, -/obj/machinery/light/small{ - dir = 2 - }, -/obj/item/storage/book/bible, -/obj/item/storage/book/bible, -/obj/item/storage/book/bible, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/chapel/office) "ctX" = ( -/obj/structure/closet/crate/bin, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/machinery/vending/wardrobe/chap_wardrobe, +/turf/open/floor/carpet, /area/chapel/office) "cua" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -48069,6 +45526,22 @@ dir = 8 }, /area/chapel/main/monastery) +"cuc" = ( +/obj/machinery/light, +/obj/machinery/camera{ + c_tag = "Xenobiology Central"; + dir = 1; + network = list("ss13","rd") + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/darkpurple/side, +/area/science/xenobiology) "cuk" = ( /obj/structure/closet{ name = "beekeeping wardrobe" @@ -48371,6 +45844,14 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) +"cvf" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/obj/machinery/recycler, +/turf/open/floor/plating, +/area/maintenance/disposal) "cvg" = ( /obj/structure/flora/ausbushes/ywflowers, /obj/structure/flora/ausbushes/brflowers, @@ -48849,6 +46330,13 @@ /obj/item/flashlight/lantern, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) +"cwP" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 28 + }, +/turf/closed/wall, +/area/medical/chemistry) "cwR" = ( /obj/structure/window/reinforced{ dir = 8; @@ -48865,6 +46353,10 @@ /obj/machinery/computer/libraryconsole, /turf/open/floor/plasteel/dark, /area/library/lounge) +"cxb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel/purple/side, +/area/science/mixing) "cxe" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -48911,6 +46403,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/carpet, /area/library/lounge) +"cxt" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/explab) "cxz" = ( /obj/machinery/door/airlock/grunge{ name = "Library" @@ -49132,7 +46632,7 @@ /area/library) "cyU" = ( /obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/library) "cyY" = ( /obj/machinery/light/small{ @@ -49208,6 +46708,7 @@ /obj/structure/table/wood/fancy, /obj/item/flashlight/lantern{ on = 1; + icon_state = "lantern-on"; pixel_y = 8 }, /turf/open/floor/carpet, @@ -49354,7 +46855,7 @@ /area/library) "cAu" = ( /obj/structure/table/wood, -/obj/item/clothing/head/pharoah, +/obj/item/clothing/head/pharaoh, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/vault{ dir = 5 @@ -49389,7 +46890,6 @@ "cAC" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/chair/wood/wings{ - icon_state = "wooden_chair_wings"; dir = 1 }, /turf/open/floor/plasteel/dark, @@ -49397,7 +46897,6 @@ "cAD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/chair/wood/wings{ - icon_state = "wooden_chair_wings"; dir = 1 }, /obj/effect/landmark/start/librarian, @@ -49430,7 +46929,7 @@ /turf/open/floor/plasteel/dark, /area/library) "cAS" = ( -/obj/structure/closet/wardrobe/curator, +/obj/machinery/vending/wardrobe/curator_wardrobe, /turf/open/floor/plasteel/dark, /area/library) "cAT" = ( @@ -49457,29 +46956,8 @@ }, /turf/open/floor/plasteel/dark, /area/library) -"cBi" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Brig Maintenance APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"cBj" = ( -/obj/structure/ore_box, -/turf/open/floor/plating, -/area/maintenance/department/engine) "cBk" = ( -/obj/machinery/vending/boozeomat{ - products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, /obj/item/reagent_containers/food/drinks/bottle/absinthe = 1, /obj/item/reagent_containers/food/drinks/bottle/limejuice = 1, /obj/item/reagent_containers/food/drinks/bottle/cream = 1, /obj/item/reagent_containers/food/drinks/soda_cans/tonic = 1, /obj/item/reagent_containers/food/drinks/drinkingglass = 10, /obj/item/reagent_containers/food/drinks/ice = 3, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6, /obj/item/reagent_containers/food/drinks/flask = 1); - req_access_txt = "0" - }, +/obj/machinery/vending/boozeomat/pubby_maint, /turf/closed/wall, /area/maintenance/department/crew_quarters/dorms) "cBl" = ( @@ -49508,7 +46986,6 @@ /obj/structure/table, /obj/item/lighter, /obj/structure/light_construct/small{ - icon_state = "bulb-construct-stage1"; dir = 8 }, /turf/open/floor/plating, @@ -49528,21 +47005,12 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "cBr" = ( -/obj/structure/chair/comfy, +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck, /turf/open/floor/carpet, /area/maintenance/department/crew_quarters/dorms) "cBs" = ( -/obj/structure/table/wood/poker, -/obj/item/toy/cards/deck, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/maintenance/department/crew_quarters/dorms) -"cBu" = ( -/obj/structure/chair/comfy{ - dir = 1 - }, +/obj/structure/chair/stool, /turf/open/floor/carpet, /area/maintenance/department/crew_quarters/dorms) "cBv" = ( @@ -49567,7 +47035,8 @@ /obj/machinery/button/door{ id = "supplybridge"; name = "Space Bridge Control"; - pixel_y = 27 + pixel_y = 27; + req_access_txt = "0" }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) @@ -49588,11 +47057,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"cBz" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/department/crew_quarters/dorms) "cBA" = ( /obj/structure/grille/broken, /turf/open/floor/plating{ @@ -49622,18 +47086,31 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "cBM" = ( -/obj/structure/sign/warning/securearea{ - desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; - icon_state = "monkey_painting"; - name = "Mr. Deempisi portrait"; - pixel_y = 28 - }, -/turf/open/floor/plasteel/dark, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/chapel/office) "cBQ" = ( /obj/machinery/power/rad_collector, /turf/open/floor/plating, /area/engine/engineering) +"cBR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"cBS" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "cBT" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating/airless, @@ -49653,20 +47130,10 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"cCD" = ( -/obj/machinery/rnd/production/techfab/department/service, -/turf/open/floor/plating, -/area/crew_quarters/kitchen) "cCF" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plasteel/white, /area/engine/gravity_generator) -"cCG" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/tcommsat/computer) "cCH" = ( /obj/effect/turf_decal/bot/left, /turf/open/floor/plasteel/white, @@ -49677,12 +47144,6 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) -"cCN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/main) "cCO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -49707,7 +47168,7 @@ /turf/open/floor/plasteel/dark, /area/security/main) "cCT" = ( -/obj/machinery/rnd/production/techfab/department/cargo, +/obj/machinery/rnd/production/protolathe/department/cargo, /turf/open/floor/plasteel, /area/quartermaster/storage) "cCU" = ( @@ -49753,52 +47214,541 @@ "cDa" = ( /turf/closed/wall, /area/quartermaster/warehouse) +"cDB" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"cFB" = ( +/obj/effect/landmark/carpspawn, +/turf/open/space/basic, +/area/space) +"cHS" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Firing Range" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/security/brig) +"cJo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) +"cKA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/explab) +"cOp" = ( +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"cPy" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2 + }, +/obj/structure/sign/warning/nosmoking{ + pixel_x = -32; + pixel_y = 32 + }, +/turf/open/floor/plasteel/darkgreen/corner{ + dir = 1 + }, +/area/science/xenobiology) +"cPO" = ( +/obj/item/chair/stool, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/department/crew_quarters/dorms) +"cPT" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced{ + dir = 4; + layer = 2.9 + }, +/obj/structure/window/reinforced, +/obj/item/storage/box/monkeycubes, +/obj/item/storage/box/monkeycubes, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/xenobiology) +"cSJ" = ( +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 5; + pixel_y = 9 + }, +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = 3; + pixel_y = -2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + areastring = "/area/medical/sleeper"; + dir = 4; + name = "Treatment Center APC"; + pixel_x = 24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/whiteblue/side, +/area/medical/sleeper) +"cSK" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 4; + icon_state = "left"; + name = "Research Division Delivery"; + req_access_txt = "47" + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + dir = 8; + freq = 1400; + location = "Research Division" + }, +/turf/open/floor/plasteel/dark, +/area/science/lab) +"cXW" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"cZt" = ( +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"daY" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/disposal) +"dbi" = ( +/obj/machinery/vr_sleeper{ + icon_state = "sleeper"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"dci" = ( +/obj/structure/rack, +/obj/item/gun/energy/laser/practice, +/obj/item/clothing/ears/earmuffs, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"dcL" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"dgg" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"dgz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"dgI" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"dhz" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"dir" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"dkR" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/explab) +"dmP" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"dmT" = ( +/obj/machinery/shieldwallgen/xenobiologyaccess, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"dnS" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"doo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) +"dpa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_y = 32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) +"dpb" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_y = 3 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"dqw" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "0"; + req_one_access_txt = "12; 55" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/department/science) +"dqG" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) +"dqY" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "dse" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /turf/open/floor/plasteel, /area/quartermaster/sorting) -"dAF" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/mixing) -"dMB" = ( -/turf/open/floor/plasteel, -/area/quartermaster/sorting) -"dMI" = ( -/obj/item/twohanded/required/kirbyplants/random, -/obj/machinery/camera{ - c_tag = "Circuitry Lab"; - dir = 1; - network = list("ss13","rd"); - pixel_x = 10 - }, -/turf/open/floor/plasteel/purple/side{ - dir = 1 - }, -/area/science/circuit) -"dNt" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, +"dsv" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"dtm" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/landmark/xeno_spawn, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) +"duF" = ( +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 2 + }, +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/beaker{ + pixel_x = -2 + }, +/obj/item/reagent_containers/glass/beaker{ + pixel_x = 2; + pixel_y = -6 + }, +/turf/open/floor/plasteel/dark, +/area/science/lab) +"duQ" = ( +/obj/machinery/camera{ + c_tag = "Departure Lounge Aft"; + dir = 1 + }, +/turf/open/floor/plasteel/escape, +/area/hallway/secondary/exit/departure_lounge) +"dxc" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plasteel/purple/side, -/area/science/circuit) -"dWy" = ( -/obj/machinery/libraryscanner, -/turf/open/floor/plasteel/purple/side{ +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"dye" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/obj/structure/sign/departments/science{ + pixel_y = 32 + }, +/obj/item/kitchen/knife, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"dym" = ( +/obj/item/stack/sheet/mineral/wood, +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"dAF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum/external, +/turf/open/floor/plating, +/area/science/mixing) +"dAG" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/engine) +"dJm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/research/glass{ + name = "Research Pit"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"dKs" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"dLY" = ( +/obj/structure/table, +/obj/item/assembly/igniter, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"dMB" = ( +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"dMG" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/science/circuit) +/turf/open/floor/plating/airless, +/area/engine/engineering) +"dMI" = ( +/obj/item/clothing/suit/apron/surgical, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"dMO" = ( +/obj/structure/urinal{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"dNr" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/sign/warning{ + pixel_y = -32 + }, +/obj/machinery/shieldwallgen/xenobiologyaccess, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"dSr" = ( +/obj/item/chair, +/turf/open/floor/wood, +/area/maintenance/department/engine) +"dTV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"dVI" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + layer = 2.4 + }, +/obj/item/wrench, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/security/execution/transfer) +"dVJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/science) +"dWk" = ( +/obj/item/reagent_containers/food/snacks/meat/slab/monkey, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"dWp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"dZj" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"eaw" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/department/crew_quarters/dorms) +"ebD" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "lawyer_shutters"; + name = "law office shutters" + }, +/turf/open/floor/plating, +/area/lawoffice) +"edl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 1 + }, +/area/science/explab) +"edJ" = ( +/obj/structure/chair/office/light, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"eeF" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4 + }, +/area/hallway/primary/central) "eeQ" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -49809,82 +47759,419 @@ }, /turf/open/floor/plasteel, /area/quartermaster/office) -"ejp" = ( -/obj/structure/table/reinforced, -/obj/item/integrated_circuit_printer, -/obj/item/integrated_electronics/wirer, -/turf/open/floor/plasteel/whitepurple/side{ +"efu" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/scientist, +/turf/open/floor/plasteel/dark, +/area/science/explab) +"efU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) +"egK" = ( +/obj/structure/girder, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/security/brig) +"ehM" = ( +/obj/effect/decal/remains/human, +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/area/science/circuit) -"eAP" = ( +/turf/open/floor/plating, +/area/maintenance/department/engine) +"ekU" = ( +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"elk" = ( +/obj/structure/chair/office/dark, +/turf/open/floor/wood, +/area/lawoffice) +"emV" = ( +/turf/open/space, +/area/space/nearstation) +"epJ" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/turf/open/floor/carpet, +/area/maintenance/department/crew_quarters/dorms) +"eqD" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/department/crew_quarters/dorms) +"eta" = ( +/obj/machinery/door/airlock/engineering{ + name = "Engineering Supplies"; + req_access_txt = "10" + }, +/obj/effect/turf_decal/delivery, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"euQ" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"ezF" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/red, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"ezJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"eAp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral, +/area/maintenance/department/security/brig) +"eCw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"eCK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"eDC" = ( /obj/structure/cable{ icon_state = "1-8" }, /turf/open/floor/plasteel, -/area/hallway/primary/central) -"eDm" = ( -/obj/structure/cable{ - icon_state = "1-2" +/area/construction/mining/aux_base) +"eEp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/stairs, -/area/crew_quarters/cryopod) -"eIh" = ( -/obj/machinery/chem_master/condimaster, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) +/turf/open/floor/wood, +/area/lawoffice) +"eFj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"eHI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"eIL" = ( +/turf/open/floor/plasteel/darkgreen/corner{ + dir = 1 + }, +/area/science/xenobiology) +"eLt" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"eMC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"eNq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/explab) +"eNF" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/closed/wall, +/area/space/nearstation) +"eOZ" = ( +/obj/structure/closet, +/obj/item/clothing/suit/judgerobe, +/obj/item/gavelblock, +/obj/item/gavelhammer, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"ePU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/department/security/brig) +"eQN" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "eQR" = ( /obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner, /turf/open/floor/engine, /area/science/xenobiology) -"fmr" = ( -/obj/docking_port/stationary{ - area_type = /area/construction/mining/aux_base; - dheight = 4; - dir = 2; - dwidth = 4; - height = 9; - id = "aux_base_zone"; - name = "aux base zone"; - roundstart_template = /datum/map_template/shuttle/aux_base/default; - width = 9 +"eQZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/security/brig) +"eSL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/beacon, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/explab) +"eVy" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"eVW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/plating, +/area/engine/engineering) +"eWi" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"eXo" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/engine, +/area/science/explab) +"eYr" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/explab) +"eYM" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"eZA" = ( +/obj/item/stack/cable_coil/cut/random, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"fdQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"fdS" = ( +/obj/machinery/door/window/southleft{ + base_state = "left"; + dir = 4; + icon_state = "left"; + name = "Engineering Delivery"; + req_access_txt = "10" + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + freq = 1400; + location = "Engineering" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/maintenance/department/engine) +"fef" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Menagerie"; + req_access_txt = "12" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"ffJ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/yellow/side, /area/construction/mining/aux_base) +"fhM" = ( +/obj/item/storage/secure/safe{ + pixel_x = -22 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"fjs" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 10 + }, +/area/science/explab) +"fkH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/light, +/obj/machinery/camera{ + c_tag = "Experimentation Lab Testing Zone"; + dir = 1; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel, +/area/science/explab) +"fmh" = ( +/turf/open/floor/wood, +/area/maintenance/department/engine) +"fmU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) "fon" = ( /obj/structure/lattice, /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"fow" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/checkpoint/customs) +"fpT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"ftp" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/engine) +"ftW" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/hallway/secondary/exit/departure_lounge) +"fuP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/wood, +/area/lawoffice) "fuR" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) -"fvG" = ( -/turf/open/floor/plasteel/whitepurple/side{ - dir = 6 +"fvb" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" }, -/area/science/circuit) -"fwj" = ( -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"fwe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) +/turf/open/floor/plasteel/neutral/corner, +/area/hallway/secondary/exit/departure_lounge) "fwl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -49892,48 +48179,237 @@ /turf/open/floor/plasteel, /area/quartermaster/sorting) "fwr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/closed/wall, /area/science/mixing) -"fBm" = ( +"fwI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/research{ - name = "Circuitry Lab"; - req_access_txt = "47" +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"fwR" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"fyF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"fyO" = ( +/turf/open/space/basic, +/area/engine/engineering) +"fzu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/clothing/gloves/color/black, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/department/engine) +"fAx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"fBt" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Departure Lounge" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/escape, +/area/hallway/secondary/exit/departure_lounge) +"fBz" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, /area/science/mixing) -"fIW" = ( -/obj/machinery/light_switch{ - dir = 9; - pixel_x = -22 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/department/crew_quarters/dorms) -"fKj" = ( -/turf/closed/wall, -/area/science/circuit) -"fKW" = ( +"fFv" = ( /obj/structure/lattice, -/turf/open/space, -/area/space) +/turf/open/space/basic, +/area/engine/engineering) +"fIu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/cryopod, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"fIN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"fIT" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/chapel/main/monastery) +"fKj" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Mineral Room" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"fLG" = ( +/obj/effect/decal/remains/xeno, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"fNv" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"fQf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"fRs" = ( +/turf/closed/wall, +/area/crew_quarters/heads/hor) +"fTY" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Cargo Escape Airlock" + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) +"fUA" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) "fWv" = ( /obj/structure/bookcase/random/religion, /turf/open/floor/plasteel/dark, /area/library/lounge) -"fYp" = ( -/obj/structure/cable{ - icon_state = "1-2" +"gam" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Service Door"; + req_access_txt = "0"; + req_one_access_txt = "35;28" }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenwindowshutters"; + name = "kitchen shutters" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/kitchen) +"gcj" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plasteel/arrival{ + dir = 1 + }, +/area/crew_quarters/fitness/recreation) +"gdJ" = ( +/obj/structure/table/glass, +/obj/item/folder/blue, +/obj/item/pen, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/xenobiology) +"gdL" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -28 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 9 + }, +/area/science/xenobiology) +"geU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"gfi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"giI" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/chapel/office) +"giO" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"gjp" = ( +/obj/structure/table/wood, +/obj/structure/bedsheetbin, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"gjq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"gjN" = ( +/obj/item/weldingtool, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/oil{ + icon_state = "floor6" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "gkR" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/structure/extinguisher_cabinet{ @@ -49943,61 +48419,673 @@ dir = 5 }, /area/storage/primary) -"gtb" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/whitepurple/side{ +"gkS" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"gkX" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Storage"; + req_access_txt = "12" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"glf" = ( +/obj/structure/closet/emcloset, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/vault{ dir = 5 }, -/area/science/circuit) -"gxK" = ( -/turf/closed/wall/r_wall, -/area/science/circuit) -"gAj" = ( -/turf/open/floor/plasteel/purple/side{ +/area/science/mixing) +"gmp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"gmO" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/neutral/side, +/area/hallway/secondary/exit/departure_lounge) +"gna" = ( +/turf/open/floor/plasteel/stairs/medium, +/area/maintenance/department/crew_quarters/dorms) +"gnq" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = -27 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"gpC" = ( +/obj/structure/chair, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 + }, +/area/hallway/secondary/exit/departure_lounge) +"gpI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"gue" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"gvf" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/hallway/secondary/exit/departure_lounge) +"gwn" = ( +/obj/structure/sign/warning{ + pixel_y = 32 + }, +/obj/structure/sign/warning{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"gxe" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/obj/structure/light_construct/small{ dir = 8 }, -/area/science/circuit) +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/maintenance/department/crew_quarters/dorms) +"gxq" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"gxK" = ( +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"gAG" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/carpet, +/area/lawoffice) +"gDZ" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/explab) +"gFo" = ( +/obj/structure/window/reinforced, +/obj/structure/table/glass, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = -28; + pixel_y = 3 + }, +/obj/machinery/button/door{ + dir = 2; + id = "research_shutters_2"; + name = "Shutters Control Button"; + pixel_x = -28; + pixel_y = -7; + req_access_txt = "47" + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/metal/fifty, +/obj/item/wrench, +/obj/item/crowbar, +/obj/item/clothing/glasses/welding, +/turf/open/floor/plasteel/dark, +/area/science/lab) +"gGy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"gGA" = ( +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + pixel_x = 32; + receive_ore_updates = 1 + }, +/obj/structure/table/glass, +/obj/machinery/reagentgrinder, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/whiteyellow/side{ + dir = 4 + }, +/area/medical/chemistry) +"gHZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"gIC" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/floorgrime, +/area/science/xenobiology) +"gIG" = ( +/turf/open/floor/plasteel/darkpurple/side{ + dir = 1 + }, +/area/science/xenobiology) +"gKz" = ( +/obj/structure/table/wood, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22"; + pixel_y = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"gKG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"gLF" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) "gMm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall, /area/science/mixing) +"gMO" = ( +/obj/structure/plasticflaps/opaque, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"gNv" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/stairs/right, +/area/maintenance/department/crew_quarters/dorms) +"gNG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "assistantshutters"; + name = "Tool Storage Shutters Control"; + pixel_y = 24; + req_access_txt = "10" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"gPV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/wood, +/area/lawoffice) +"gSH" = ( +/turf/closed/wall, +/area/lawoffice) +"gSI" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"gUb" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"gVc" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/maintenance/department/engine) +"gXg" = ( +/obj/item/extinguisher, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) "gYo" = ( /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) -"htU" = ( -/obj/machinery/rnd/production/protolathe/department/science, -/turf/open/floor/plasteel/purple/side{ +"heC" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 8; + name = "Science Maintenance APC"; + pixel_x = -25 + }, +/obj/structure/cable, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) +"hfZ" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_x = 32; + receive_ore_updates = 1 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"hgD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/department/science) +"hiw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"hiY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sci4"; + location = "Sci3" + }, +/turf/open/floor/plasteel/purple/side, +/area/hallway/primary/aft) +"hkQ" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/hallway/secondary/exit/departure_lounge) +"hnu" = ( +/obj/machinery/button/door{ + id = "lawyer_shutters"; + name = "law office shutters control"; + pixel_x = 34; + pixel_y = -1; + req_access_txt = "38" + }, +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/turf/open/floor/wood, +/area/lawoffice) +"hqo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "assistantshutters"; + name = "Tool Storage Shutters Control"; + pixel_y = 24; + req_access_txt = "10" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/hallway/primary/central) +"hvW" = ( +/obj/machinery/door/poddoor/preopen{ + id = "xenobio4"; + name = "containment blast door" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"hwd" = ( +/obj/machinery/camera{ + c_tag = "Departure Lounge Port"; + dir = 4 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"hwj" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/plating, +/area/security/execution/transfer) +"hxn" = ( +/obj/structure/chair, +/obj/item/clothing/glasses/regular, +/turf/open/floor/plating, +/area/maintenance/department/science) +"hzc" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/science/circuit) +/obj/item/wrench, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"hzd" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port) +"hDG" = ( +/obj/machinery/door/airlock/engineering{ + name = "Auxillary Base Construction"; + req_access_txt = "0"; + req_one_access_txt = "32;47;48" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"hEX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) "hFp" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/libraryconsole/bookmanagement, -/turf/open/floor/plasteel/purple/side{ - dir = 1 +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/chair, +/obj/item/reagent_containers/blood/random, +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, -/area/science/circuit) -"hKA" = ( -/obj/structure/sign/poster/official/random{ +/area/maintenance/department/science) +"hFy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, -/obj/structure/table/reinforced, -/obj/machinery/light{ +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"hHr" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"hOx" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"hOz" = ( +/obj/item/weldingtool, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"hPN" = ( +/obj/structure/table/glass, +/obj/item/clothing/glasses/science, +/obj/machinery/button/door{ + id = "xenobiomain"; + name = "Containment Blast Doors"; + pixel_x = 28; + req_access_txt = "55" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"hPU" = ( +/obj/structure/table/optable{ + name = "Robotics Operating Table" + }, +/obj/item/surgical_drapes, +/obj/item/clothing/mask/surgical, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"hQz" = ( +/obj/structure/closet/emcloset/anchored, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/tcommsat/computer) +"hQC" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"hSM" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"hTl" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/structure/mirror{ + icon_state = "mirror_broke"; + pixel_y = 28 + }, +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"hTr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/space/basic, +/area/maintenance/department/engine) +"hUt" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"hUJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"hVx" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"hXt" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/department/science) +"hYe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/darkred, +/area/chapel/office) +"hYm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/engine/engineering) +"hZB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/item/integrated_electronics/debugger, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 +/turf/open/floor/plating, +/area/maintenance/department/engine) +"iab" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel/vault{ + dir = 8 }, -/area/science/circuit) +/area/hallway/secondary/exit/departure_lounge) "ick" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel/dark, /area/library) +"igE" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio4"; + name = "Containment Blast Doors"; + pixel_y = 4; + req_access_txt = "55" + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"ihj" = ( +/obj/item/clothing/suit/toggle/labcoat/science, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"ihk" = ( +/obj/structure/chair/office/light, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/xenobiology) "ijF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -50005,10 +49093,78 @@ }, /turf/open/floor/carpet, /area/library) -"inD" = ( -/obj/machinery/cryopod, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) +"ijU" = ( +/obj/effect/spawner/lootdrop/organ_spawner, +/obj/structure/closet/crate, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"ikB" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/open/floor/plating, +/area/maintenance/department/science) +"ilD" = ( +/obj/machinery/processor/slime, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"ioj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light{ + light_color = "#e8eaff" + }, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -28 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"iqc" = ( +/turf/open/floor/plasteel/stairs/right, +/area/maintenance/department/crew_quarters/dorms) +"itl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/sign/departments/xenobio{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 1 + }, +/area/science/xenobiology) +"iuM" = ( +/obj/machinery/door/window/southleft{ + dir = 8; + name = "Test Chamber"; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 8 + }, +/area/science/xenobiology) +"iyg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/warning/electricshock{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"iyJ" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/r_wall, +/area/engine/engineering) "izB" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod" @@ -50019,37 +49175,191 @@ /turf/open/floor/plating, /area/crew_quarters/dorms) "izF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/turf/open/floor/plating{ + luminosity = 2; + initial_gas_mix = "o2=0.01;n2=0.01" + }, +/area/maintenance/department/science) +"iAx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/chair/office/light{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"iBJ" = ( +/obj/machinery/camera{ + c_tag = "Telecomms External Fore"; + dir = 1; + network = list("tcomms"); + start_active = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"iCe" = ( +/obj/machinery/atmospherics/components/trinary/mixer{ + dir = 4; + node1_concentration = 0.8; + node2_concentration = 0.2; + on = 1; + target_pressure = 4500 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"iCs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/effect/turf_decal/box/red, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"iEY" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) -"iIy" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/turf/open/floor/plating/airless, +/area/engine/engineering) +"iCV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plating, +/area/security/execution/transfer) +"iEQ" = ( +/obj/structure/table, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"iEU" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/plating, +/area/maintenance/department/crew_quarters/dorms) +"iFI" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/engine/engineering) +"iGJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, /turf/open/floor/plasteel/white, -/area/science/circuit) +/area/storage/emergency/port) +"iJi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "iKb" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/quartermaster/sorting) -"iXQ" = ( +"iLl" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"iPj" = ( +/obj/machinery/igniter{ + id = "xenoigniter"; + luminosity = 2 + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"iPz" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Xenobiology Test Lab"; + dir = 4; + network = list("xeno","rd") + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 10 + }, +/area/science/xenobiology) +"iPO" = ( +/obj/machinery/door/poddoor/shutters{ + id = "aux_base_shutters"; + name = "Auxillary Base Shutters" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"iPU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/security/execution/transfer) +"iSz" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"iVJ" = ( +/obj/effect/spawner/lootdrop/organ_spawner, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"iWV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"jcT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"jeq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/table/reinforced, -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) "jgr" = ( /obj/machinery/door/airlock/grunge{ name = "Library" @@ -50061,6 +49371,99 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/library) +"jhk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"jhD" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/crew_quarters/dorms) +"jjC" = ( +/obj/structure/rack, +/obj/item/storage/briefcase{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/storage/secure/briefcase{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/open/floor/wood, +/area/lawoffice) +"jlb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"jrG" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/requests_console{ + announcementConsole = 0; + department = "Engineering"; + departmentType = 4; + name = "Engineering RC"; + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/shower{ + dir = 4; + name = "emergency shower" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"jsf" = ( +/obj/item/toy/katana, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"jsj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"jsD" = ( +/obj/structure/sign/warning/securearea{ + desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; + icon_state = "monkey_painting"; + name = "Mr. Deempisi portrait"; + pixel_y = 28 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_y = 3 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"jtf" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 6 + }, +/area/science/xenobiology) "jvi" = ( /obj/structure/cable{ icon_state = "4-8" @@ -50073,6 +49476,37 @@ dir = 1 }, /area/crew_quarters/heads/hos) +"jwe" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobiomain"; + name = "containment blast door" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"jxl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/darkblue/side, +/area/science/xenobiology) +"jzz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum/external, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"jAy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) "jBh" = ( /obj/structure/rack, /obj/item/stack/sheet/glass/fifty{ @@ -50082,6 +49516,59 @@ /obj/item/stack/sheet/metal/fifty, /turf/open/floor/plating, /area/maintenance/department/cargo) +"jBn" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Engine Containment Starboard Fore"; + dir = 2; + network = list("engine") + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"jCv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-17" + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/yellow/corner{ + dir = 8 + }, +/area/hallway/primary/aft) +"jDA" = ( +/obj/item/chair, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"jEX" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"jFw" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) "jFO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -50089,16 +49576,88 @@ }, /turf/open/floor/carpet, /area/library/lounge) +"jHP" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/drinks/bottle/tequila{ + pixel_x = -6; + pixel_y = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/crew_quarters/dorms) "jLW" = ( /obj/machinery/atmospherics/pipe/simple/purple/visible, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"jOJ" = ( +"jOB" = ( +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"jPf" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/kitchen/knife, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/department/engine) +"jPo" = ( +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/engine/engineering) +"jQh" = ( +/obj/item/stack/sheet/animalhide/xeno, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/science) +"jRG" = ( +/obj/structure/disposalpipe/segment{ dir = 5 }, -/turf/closed/wall/r_wall, -/area/science/mixing) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"jSA" = ( +/obj/structure/sign/departments/science, +/turf/closed/wall, +/area/maintenance/department/engine) +"jTh" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"jTu" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/carpet, +/area/lawoffice) +"jUV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) "jXh" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -50106,19 +49665,16 @@ /turf/open/floor/plasteel/dark, /area/library/lounge) "jXA" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/table, +/obj/item/stack/ore/iron, +/turf/open/floor/plating, +/area/maintenance/department/science) +"jXV" = ( +/obj/machinery/light/small{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/corner{ - dir = 8 - }, -/area/science/circuit) +/turf/open/floor/plating, +/area/maintenance/department/engine) "jYe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -50128,6 +49684,37 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"jYh" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Supply to Virology" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/engine) +"kfh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) +"kfM" = ( +/obj/structure/closet, +/obj/machinery/light/small{ + dir = 2 + }, +/obj/item/storage/book/bible, +/obj/item/storage/book/bible, +/obj/item/storage/book/bible, +/turf/open/floor/carpet, +/area/chapel/office) +"kgR" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) "khk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -50147,28 +49734,146 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAP) -"kmh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +"kkk" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/shaker, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/crew_quarters/dorms) +"kkQ" = ( +/obj/machinery/vending/cola/pwr_game, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"klo" = ( +/obj/structure/dresser, +/obj/structure/mirror{ + pixel_y = 30 }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"kwI" = ( -/turf/open/floor/plasteel, -/area/science/mixing) -"kAy" = ( -/obj/effect/spawner/structure/window, -/obj/structure/sign/departments/evac, /turf/open/floor/plating, +/area/maintenance/department/engine) +"klB" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, /area/hallway/secondary/exit/departure_lounge) -"kAz" = ( +"klV" = ( +/obj/item/clothing/under/rank/clown/sexy, +/turf/open/floor/plasteel/dark, +/area/maintenance/department/crew_quarters/dorms) +"kmn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"knw" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"kpK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, /turf/open/floor/plating, -/area/maintenance/department/cargo) +/area/maintenance/department/engine) +"krU" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/department/engine) +"ksf" = ( +/obj/item/stack/tile/carpet, +/obj/structure/sign/warning{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"kvj" = ( +/turf/open/floor/plasteel/neutral, +/area/hallway/secondary/exit/departure_lounge) +"kwm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 9 + }, +/area/chapel/office) +"kxj" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/lawoffice) +"kxs" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"kyv" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 2; + pixel_y = 22 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) +"kAa" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"kCc" = ( +/obj/structure/plasticflaps/opaque, +/obj/machinery/conveyor{ + dir = 8; + id = "EngLoad" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"kDf" = ( +/obj/machinery/light/small{ + dir = 2 + }, +/turf/open/floor/carpet/black, +/area/chapel/office) +"kDJ" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/conveyor_switch/oneway{ + id = "EngLoad" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"kDY" = ( +/obj/item/shard{ + icon_state = "small" + }, +/turf/open/floor/wood, +/area/maintenance/department/engine) "kEM" = ( /obj/structure/sign/directions/evac{ dir = 1; @@ -50178,21 +49883,241 @@ dir = 1 }, /area/hallway/primary/central) -"lju" = ( -/obj/machinery/vending/snack/random, -/turf/open/floor/plasteel/purple/corner{ - dir = 8 +"kEW" = ( +/obj/machinery/smartfridge/disks{ + pixel_y = 2 }, -/area/science/circuit) -"lpS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/structure/table, +/turf/open/floor/plasteel, +/area/hydroponics) +"kFm" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/tcommsat/computer) +"kFu" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) +"kFx" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Law Office Maintenance"; + req_access_txt = "38" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"kFD" = ( +/obj/structure/closet/l3closet, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -27 + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 9 + }, +/area/science/xenobiology) +"kIo" = ( +/obj/structure/table, +/obj/item/paper_bin{ + layer = 2.9 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"kIO" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 }, /turf/open/floor/plasteel, -/area/science/circuit) +/area/hallway/primary/central) +"kJo" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"kJw" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Firing Range Target" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/security/brig) +"kKI" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"kNf" = ( +/obj/machinery/door/window/northleft{ + base_state = "right"; + dir = 1; + icon_state = "right"; + name = "Containment Pen #4"; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio4"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"kPi" = ( +/obj/structure/table, +/obj/machinery/microwave, +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"kQy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"kQZ" = ( +/obj/structure/closet, +/obj/item/stack/spacecash/c10, +/obj/item/stack/spacecash/c10, +/obj/item/stack/spacecash/c10, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"kRq" = ( +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/department/engine) +"kRK" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister/bz, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 9 + }, +/area/science/xenobiology) +"kSF" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"kSO" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Port Emergency Storage"; + req_access_txt = "0"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/storage/emergency/port) +"kWQ" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/emitter/anchored{ + dir = 8; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"lcU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"lcZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/gateway) +"ldQ" = ( +/obj/structure/floodlight_frame, +/turf/open/floor/plating, +/area/maintenance/department/science) +"lem" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/flasher{ + id = "executionflash"; + pixel_y = 25 + }, +/obj/machinery/igniter{ + id = "secigniter" + }, +/turf/open/floor/plating, +/area/security/execution/transfer) +"lhA" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"liR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"lje" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"lms" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/maintenance/department/engine) +"lnn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/neutral/side, +/area/storage/primary) +"lqc" = ( +/obj/item/toy/gun, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "lqy" = ( /obj/machinery/door/airlock/grunge{ name = "Library" @@ -50202,19 +50127,134 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/library/lounge) +"lzJ" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/carpet, +/area/chapel/office) +"lAf" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/darkyellow/corner, +/area/chapel/office) "lAs" = ( /turf/closed/wall, /area/quartermaster/sorting) -"lJr" = ( -/obj/effect/spawner/structure/window/reinforced, +"lAR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/explab) +"lBP" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, /turf/open/floor/plating, -/area/science/circuit) -"lKs" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) +/area/maintenance/department/engine) +"lEn" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/lattice, +/obj/structure/window/reinforced, +/turf/open/space/basic, +/area/space/nearstation) +"lFh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"lGp" = ( +/obj/structure/weightlifter, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"lGv" = ( +/obj/machinery/door/airlock/atmos/abandoned{ + name = "Atmospherics Maintenance"; + req_access_txt = "12;24" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"lGS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 8 + }, +/area/science/xenobiology) +"lHc" = ( +/obj/structure/girder, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"lHX" = ( +/obj/structure/bed, +/obj/item/bedsheet/orange, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"lIr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"lJr" = ( +/obj/item/wrench, +/turf/open/floor/plating, +/area/maintenance/department/science) +"lKL" = ( +/obj/machinery/door/airlock/abandoned{ + name = "Starboard Emergency Storage"; + req_access_txt = "0" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"lMU" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"lNW" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/department/science) "lQn" = ( -/turf/open/floor/plasteel/white, -/area/science/circuit) +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) "lQQ" = ( /obj/machinery/door/poddoor/preopen{ id = "bridgespace"; @@ -50225,28 +50265,228 @@ dir = 8 }, /area/bridge) -"lZH" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-2" +"lQX" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) +/turf/open/floor/plating, +/area/maintenance/department/engine) +"lRY" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"lTC" = ( +/obj/item/shard, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"lWy" = ( +/turf/open/floor/plating, +/area/maintenance/department/science) +"lWH" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/structure/rack, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"lWJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"lXc" = ( +/obj/structure/table, +/obj/item/clothing/head/beret, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"mal" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) "mau" = ( /obj/structure/lattice, /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) +"maW" = ( +/obj/structure/table/glass, +/obj/item/weldingtool/mini, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) +"mbe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/vending/wardrobe/engi_wardrobe, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) +"mcf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"mci" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "mdL" = ( /obj/structure/table, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/micro_laser, -/obj/item/stock_parts/micro_laser, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, +/obj/item/paper_bin, +/obj/item/pen{ + layer = 3.1 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/lab) +"meF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"mhl" = ( +/obj/machinery/power/emitter, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"mlr" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) +"mmv" = ( +/obj/machinery/door/airlock/engineering{ + name = "Engineering Supplies"; + req_access_txt = "10" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"mnG" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/wood, +/area/maintenance/department/crew_quarters/dorms) +"mpd" = ( +/obj/structure/lattice, +/turf/open/space, +/area/engine/engineering) +"mpy" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/blue, +/turf/open/floor/wood, +/area/lawoffice) +"mql" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/xenobiology) +"msX" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/security/execution/transfer) +"mtu" = ( +/obj/structure/table, +/obj/item/folder/yellow, +/obj/item/reagent_containers/food/snacks/donut, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/department/security/brig) +"mtI" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc/highcap/five_k{ + dir = 8; + name = "Xenobiology APC"; + pixel_x = -25 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/science/xenobiology) +"mwg" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/ammo_box/foambox, +/obj/item/ammo_box/foambox, +/obj/item/gun/ballistic/shotgun/toy, +/obj/item/gun/ballistic/shotgun/toy, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"mwG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"mxy" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow, +/turf/open/floor/plating, +/area/tcommsat/computer) "myu" = ( /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; @@ -50268,6 +50508,17 @@ }, /turf/open/floor/plasteel/vault, /area/bridge) +"mzl" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 2 + }, +/turf/open/floor/plating, +/area/security/execution/transfer) +"mzU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/department/engine) "mCe" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -50276,86 +50527,816 @@ }, /turf/open/floor/plating, /area/security/checkpoint/engineering) -"mES" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +"mDW" = ( +/obj/machinery/power/smes{ + charge = 5e+006 }, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/obj/structure/cable, +/turf/open/floor/plating, +/area/tcommsat/computer) +"mES" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Surgical Room" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"mHy" = ( +/obj/item/storage/fancy/cigarettes/cigpack_shadyjims, +/turf/open/floor/wood, +/area/maintenance/department/engine) +"mIa" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) "mKc" = ( /obj/structure/bookcase/random/nonfiction, /turf/open/floor/plasteel/dark, /area/library/lounge) -"mPt" = ( -/obj/machinery/camera{ - c_tag = "Circuitry Lab Storeroom"; - dir = 1; - network = list("ss13","rd"); - pixel_x = 10 +"mKk" = ( +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/structure/rack, -/obj/item/multitool, -/obj/item/multitool, -/obj/item/screwdriver, -/obj/item/screwdriver, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"niB" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, -/obj/structure/table, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"not" = ( -/obj/item/cigbutt, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"nwu" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = 29 +/turf/open/floor/plating/airless, +/area/space/nearstation) +"mLB" = ( +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, -/turf/open/floor/plasteel/whitepurple/side{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/area/science/circuit) -"oif" = ( -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"onw" = ( -/turf/open/floor/plasteel/purple/side{ +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/security/brig) +"mMc" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/space/basic, +/area/maintenance/department/engine) +"mMz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "misclab"; + name = "test chamber blast door" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"mQm" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"mSc" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/department/science) +"mTS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/area/science/circuit) +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"mVM" = ( +/turf/open/floor/plating/airless, +/area/space/nearstation) +"mXq" = ( +/obj/item/taperecorder, +/obj/item/cartridge/lawyer, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/lawoffice) +"mZE" = ( +/turf/open/space/basic, +/area/space/nearstation) +"naq" = ( +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"ndI" = ( +/obj/item/reagent_containers/food/drinks/bottle/vodka, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"nev" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"new" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"nfi" = ( +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_y = 32 + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) +"nfz" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"nge" = ( +/obj/structure/grille/broken, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"ngp" = ( +/obj/item/chair/stool, +/turf/open/floor/carpet, +/area/maintenance/department/crew_quarters/dorms) +"nih" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/costume, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"niy" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/cookie, +/obj/machinery/airalarm{ + pixel_y = 22 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"nku" = ( +/obj/machinery/door/airlock/centcom{ + name = "Crematorium"; + opacity = 1; + req_access_txt = "27" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"nnf" = ( +/turf/open/floor/plasteel/whiteyellow/side, +/area/medical/chemistry) +"nnh" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/item/stack/spacecash/c10, +/turf/open/floor/plasteel/dark, +/area/maintenance/department/crew_quarters/dorms) +"noC" = ( +/obj/machinery/vending/kink, +/turf/open/floor/wood, +/area/maintenance/department/crew_quarters/dorms) +"noM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"npE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"nqV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"nsy" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/rods/fifty, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Auxillary Base Construction APC"; + areastring = "/area/construction/mining/aux_base"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"nsD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) +"ntj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"nuv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/darkblue/side, +/area/science/xenobiology) +"nxT" = ( +/obj/machinery/smartfridge/extract/preloaded, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"nyB" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/escape, +/area/hallway/primary/central) +"nyO" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"nzD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating{ + luminosity = 2; + initial_gas_mix = "o2=0.01;n2=0.01" + }, +/area/maintenance/department/science) +"nAs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access_txt = "10;13" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"nBw" = ( +/obj/machinery/computer/crew{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"nBL" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/corner{ + dir = 4 + }, +/area/science/explab) +"nDo" = ( +/obj/structure/bed, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"nDx" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"nEb" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "misclab"; + name = "test chamber blast door" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"nGi" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/escape{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"nIm" = ( +/obj/machinery/computer/security/telescreen{ + dir = 8; + name = "Test Chamber Monitor"; + network = list("xeno"); + pixel_y = 2 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"nIU" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/lab) +"nJI" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/structure/sign/plaques/kiddie/perfect_drone{ + pixel_y = 32 + }, +/turf/open/floor/engine, +/area/science/explab) +"nLl" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"nMG" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 26 + }, +/obj/machinery/camera/motion{ + c_tag = "Telecomms Monitoring"; + dir = 2; + network = list("tcomms") + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/tcommsat/computer) +"nNJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"nNN" = ( +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plating, +/area/space/nearstation) +"nOY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 1 + }, +/area/science/xenobiology) +"nPA" = ( +/obj/item/chair, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"nQc" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"nSj" = ( +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"nSo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/lawoffice) +"nVU" = ( +/obj/item/twohanded/spear, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"nWP" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"nYb" = ( +/obj/structure/table_frame/wood, +/turf/open/floor/wood, +/area/maintenance/department/engine) +"nYn" = ( +/obj/structure/sign/warning/docking, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) +"nZw" = ( +/obj/machinery/door/airlock/abandoned{ + name = "Backup Laboratory" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"obj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"obP" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plating{ + luminosity = 2; + initial_gas_mix = "o2=0.01;n2=0.01" + }, +/area/maintenance/department/science) +"oep" = ( +/obj/structure/table/glass, +/obj/item/paper_bin, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 10 + }, +/area/science/xenobiology) +"ofN" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/darkblue/side, +/area/science/xenobiology) +"ofX" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"ogX" = ( +/obj/machinery/camera{ + c_tag = "Engineering Starboard Aft"; + dir = 1 + }, +/obj/machinery/light, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"ohR" = ( +/obj/item/chair, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"olc" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Bedroom"; + req_access_txt = "12" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) "onX" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ name = "Primary Tool Storage" }, /obj/structure/disposalpipe/segment, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "assistantshutters"; + name = "storage shutters" + }, /turf/open/floor/plasteel, /area/storage/primary) +"ooh" = ( +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/item/wrench/medical, +/turf/open/floor/engine, +/area/medical/chemistry) +"opz" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/engineering/glass{ + name = "Server Room"; + req_access_txt = "61" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/tcommsat/computer) +"ory" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty{ + layer = 4 + }, +/obj/item/stack/cable_coil, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"orZ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"ost" = ( +/obj/structure/table/glass, +/obj/item/paper_bin{ + layer = 2.9 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 2 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"ous" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/obj/machinery/button/door{ + desc = "A remote control-switch for secure storage."; + id = "Secure Storage"; + name = "Engineering Secure Storage"; + pixel_y = -24; + req_access_txt = "11" + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"ouv" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"ovM" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Arrivals Port Fore"; + dir = 2 + }, +/turf/open/floor/plasteel/arrival{ + dir = 1 + }, +/area/hallway/secondary/entry) +"owS" = ( +/turf/open/floor/plasteel/darkred/side{ + dir = 10 + }, +/area/chapel/office) "oyF" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/storage/primary) +"oAw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"oAW" = ( +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"oBb" = ( +/obj/structure/sign/warning/biohazard, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/science/xenobiology) +"oCn" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start/lawyer, +/turf/open/floor/carpet, +/area/lawoffice) +"oCX" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard) +"oDP" = ( +/turf/open/floor/plasteel/whitepurple/side{ + dir = 4 + }, +/area/science/explab) "oEA" = ( /turf/closed/wall, /area/construction/mining/aux_base) "oEG" = ( -/obj/machinery/bookbinder, -/turf/open/floor/plasteel/purple/side{ +/obj/structure/mirror{ + icon_state = "mirror_broke"; + pixel_y = 28 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/item/circuitboard/computer/operating, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"oEW" = ( +/obj/machinery/button/door{ + id = "misclab"; + name = "Test Chamber Blast Doors"; + pixel_y = -2; + req_access_txt = "55" + }, +/obj/structure/table/reinforced, +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/button/ignition{ + id = "xenoigniter"; + pixel_y = 7 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"oFf" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/science/circuit) -"oJT" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen/red, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"oFo" = ( +/obj/structure/closet/emcloset/anchored, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"oFI" = ( +/obj/structure/closet, +/obj/effect/decal/cleanable/blood/old, +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/department/engine) +"oGm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"oKa" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"oLR" = ( +/turf/open/floor/plasteel/escape{ + dir = 5 + }, +/area/hallway/secondary/exit/departure_lounge) +"oMN" = ( +/turf/open/floor/plasteel/stairs/left, +/area/maintenance/department/crew_quarters/dorms) +"oNE" = ( +/obj/structure/chair/office/light, +/obj/structure/sign/warning/deathsposal{ + pixel_x = -32; + pixel_y = -32 + }, +/turf/open/floor/plasteel/darkgreen/corner{ + dir = 8 + }, +/area/science/xenobiology) +"oPx" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/security/brig) "oPy" = ( /obj/machinery/door/airlock/external{ name = "Mining Dock Airlock"; @@ -50366,6 +51347,113 @@ }, /turf/open/floor/plating, /area/quartermaster/miningdock) +"oRX" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"oSc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio4"; + name = "containment blast door" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"oSL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"oTl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"oTp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"oTC" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/soda_cans/cola, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/security/brig) +"oUa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"oWw" = ( +/obj/item/flashlight, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"oXe" = ( +/obj/structure/table/glass, +/obj/item/mmi, +/obj/item/clothing/mask/balaclava, +/turf/open/floor/plasteel/whitered/side{ + dir = 10 + }, +/area/security/execution/transfer) +"oYj" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"oZW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) "pbm" = ( /obj/machinery/door/airlock/external{ name = "Pod Docking Bay" @@ -50375,40 +51463,277 @@ }, /turf/open/floor/plating, /area/chapel/dock) -"pps" = ( -/turf/closed/wall, -/area/engine/break_room) -"ptq" = ( -/obj/structure/table/reinforced, -/obj/item/integrated_electronics/analyzer, +"pbI" = ( +/obj/effect/landmark/start/scientist, /turf/open/floor/plasteel/white, -/area/science/circuit) -"pRP" = ( -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 1; - name = "Crew Cryogenics APC"; - pixel_y = 24 +/area/science/explab) +"pbR" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8 + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"pdq" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"pdW" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/science/explab) +"pfz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" }, /obj/structure/cable{ icon_state = "0-2" }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"pWF" = ( -/obj/structure/table/reinforced, -/obj/machinery/light{ +/turf/open/floor/plating, +/area/security/execution/transfer) +"pfP" = ( +/obj/structure/table, +/obj/item/storage/box/syringes, +/obj/machinery/camera{ + c_tag = "Xenobiology Computers"; + dir = 4; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"phg" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"phJ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"pjH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"pkM" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "22" + }, +/turf/open/floor/plating, +/area/chapel/office) +"plA" = ( +/obj/structure/piano, +/turf/open/floor/plasteel/dark, +/area/maintenance/department/crew_quarters/dorms) +"pnU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 4; + external_pressure_bound = 120; + name = "server vent" + }, +/turf/open/floor/circuit/killroom, +/area/science/xenobiology) +"pps" = ( +/turf/closed/wall, +/area/engine/break_room) +"ppQ" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/escape, +/area/hallway/secondary/exit/departure_lounge) +"prQ" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"pvK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"pwj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"pwS" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/space/basic, +/area/space/nearstation) +"pBD" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/sign/warning{ + pixel_y = -32 + }, +/obj/machinery/shieldwallgen/xenobiologyaccess, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"pDP" = ( +/obj/machinery/vending/assist, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/explab) +"pEL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6{ +/turf/open/floor/wood, +/area/lawoffice) +"pFe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/darkred/side{ + dir = 10 + }, +/area/chapel/office) +"pFy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"pGe" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral/side, +/area/hallway/secondary/exit/departure_lounge) +"pHo" = ( +/obj/machinery/computer/bounty{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/hop) +"pKd" = ( +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"pMG" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/darkgreen/corner{ + dir = 8 + }, +/area/science/xenobiology) +"pNy" = ( +/obj/structure/closet/firecloset, +/obj/machinery/camera{ + c_tag = "Toxins Launch Area"; + dir = 2; + network = list("ss13","rd") + }, +/obj/structure/sign/poster/official/random{ pixel_y = 32 }, -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, -/turf/open/floor/plasteel/whitepurple/side{ +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"pOr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/escape{ dir = 1 }, -/area/science/circuit) +/area/hallway/secondary/exit/departure_lounge) +"pQw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"pSc" = ( +/obj/machinery/chem_heater, +/turf/open/floor/plasteel/whiteyellow/side{ + dir = 5 + }, +/area/medical/chemistry) +"pVD" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/department/engine) +"pWm" = ( +/obj/machinery/door/window/southleft{ + dir = 4; + name = "Test Chamber"; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "misclab"; + name = "test chamber blast door" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"pWF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"pWT" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/botanist, +/turf/open/floor/plasteel/green/side, +/area/hydroponics) "pXc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -50416,33 +51741,196 @@ }, /turf/open/floor/carpet, /area/library) -"qnT" = ( -/obj/machinery/autolathe, -/turf/open/floor/plasteel/purple/side{ +"pXg" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced, +/obj/item/extinguisher{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/extinguisher, +/obj/machinery/light, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/xenobiology) +"pXT" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/power/apc{ + areastring = "/area/lawoffice"; + dir = 8; + name = "Law Office APC"; + pixel_x = -24 + }, +/obj/structure/cable, +/turf/open/floor/wood, +/area/lawoffice) +"pYw" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-03" + }, +/turf/open/floor/plasteel/dark, +/area/science/lab) +"pYC" = ( +/obj/structure/sign/warning{ + pixel_y = -32 + }, +/obj/structure/barricade/wooden, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/department/engine) +"qar" = ( +/obj/structure/chair/office/light{ + icon_state = "officechair_white"; + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/virology) +"qbp" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/emitter/anchored{ + dir = 4; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"qbZ" = ( +/obj/structure/rack, +/obj/item/clothing/mask/gas, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"qcD" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel/darkgreen/side{ dir = 1 }, -/area/science/circuit) +/area/science/xenobiology) +"qcH" = ( +/obj/structure/table/glass, +/obj/item/folder/blue, +/obj/item/pen, +/turf/open/floor/plasteel/darkgreen/side, +/area/science/xenobiology) +"qdi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Containment Pen Access"; + req_access_txt = "55" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobiomain"; + name = "containment blast door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/science/xenobiology) +"qdj" = ( +/obj/structure/disposalpipe/segment, +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"qjx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/yellow/side, +/area/construction/mining/aux_base) +"qnT" = ( +/obj/machinery/iv_drip, +/turf/open/floor/plating, +/area/maintenance/department/science) +"qtA" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"qtF" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobiomain"; + name = "containment blast door" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"qtO" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"qxq" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Air Out" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/tcommsat/computer) +"qyF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/department/engine) "qAM" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/item/cigbutt, /turf/open/floor/plating, /area/maintenance/department/cargo) -"qDU" = ( -/obj/machinery/light_switch{ - dir = 4; - pixel_x = 20; - pixel_y = -6 +"qBv" = ( +/obj/item/clothing/head/ushanka, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"qDJ" = ( +/obj/structure/table/reinforced, +/obj/item/integrated_circuit_printer, +/obj/item/integrated_electronics/debugger, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 }, -/obj/item/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 5 +/turf/open/floor/plasteel/vault{ + dir = 5 }, -/turf/open/floor/plasteel/purple/side{ +/area/science/explab) +"qEN" = ( +/obj/machinery/rnd/production/techfab/department/service, +/obj/structure/window/reinforced{ dir = 8 }, -/area/science/circuit) +/turf/closed/wall, +/area/crew_quarters/bar) +"qFu" = ( +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"qGu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "qGZ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -50454,17 +51942,127 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/chief) -"qKm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +"qHI" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"qIC" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 10 +/obj/machinery/door/airlock/external{ + name = "Cargo Escape Airlock" }, -/area/science/circuit) +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) +"qIO" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/obj/item/storage/bag/ore, +/obj/item/pickaxe, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/maintenance/department/science) +"qMi" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/turf/open/floor/plating, +/area/security/execution/transfer) "qOE" = ( /turf/open/floor/plasteel/dark, /area/library/lounge) +"qOH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"qPB" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/department/crew_quarters/dorms) +"qQr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"qUw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/neutral, +/area/hallway/secondary/exit/departure_lounge) +"qVP" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobiomain"; + name = "containment blast door" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"qWG" = ( +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plating, +/area/engine/engineering) +"qWM" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/storage/toolbox/electrical{ + pixel_x = -2 + }, +/turf/open/floor/plasteel/yellow/side, +/area/construction/mining/aux_base) +"qXq" = ( +/obj/machinery/door/airlock/maintenance/abandoned, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) "qXH" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -50476,15 +52074,192 @@ dir = 4 }, /area/hallway/primary/central) -"rtE" = ( -/turf/open/floor/plasteel/purple/corner{ +"qYi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"qYq" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/item/wrench, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 5 + }, +/area/science/xenobiology) +"qYS" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"rar" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"rax" = ( +/obj/machinery/conveyor{ + dir = 2; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"reH" = ( +/obj/item/reagent_containers/food/drinks/bottle/vodka, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/wood, +/area/maintenance/department/engine) +"reV" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"rgn" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"rgs" = ( +/obj/structure/table, +/obj/item/instrument/eguitar, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"rhr" = ( +/obj/machinery/light/small{ dir = 1 }, -/area/science/circuit) +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/maintenance/department/engine) +"riF" = ( +/obj/machinery/computer/arcade, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"riW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"rnr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"rnE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"roc" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"ros" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + luminosity = 2; + initial_gas_mix = "o2=0.01;n2=0.01" + }, +/area/maintenance/department/science) +"rrb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/security/brig) +"rrU" = ( +/turf/open/floor/plasteel/darkred/side{ + dir = 9 + }, +/area/chapel/office) +"rse" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"rsZ" = ( +/obj/machinery/camera/motion{ + c_tag = "Telecomms External Access"; + dir = 1; + network = list("tcomms") + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"rui" = ( +/obj/structure/closet/emcloset/anchored, +/obj/machinery/light/small{ + dir = 8; + light_color = "#d8b1b1" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"rvH" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + dir = 4; + freq = 1400; + location = "Medbay" + }, +/obj/machinery/door/window/southleft{ + base_state = "left"; + dir = 4; + icon_state = "left"; + name = "Medbay Delivery"; + req_access_txt = "28" + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/bar) +"rxa" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "rxQ" = ( -/obj/structure/target_stake, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/obj/machinery/door/airlock/abandoned{ + id_tag = "PottySci"; + name = "Science Bathroom" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) "rxV" = ( /obj/structure/table, /obj/machinery/microwave{ @@ -50497,23 +52272,312 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) -"rAU" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 24 +"rzp" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/rods/fifty, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) +/area/maintenance/department/engine) "rBh" = ( +/obj/structure/mopbucket, +/obj/item/mop, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"rEh" = ( +/obj/structure/table/glass, +/obj/item/restraints/handcuffs/cable/zipties, +/obj/item/reagent_containers/blood/random, +/turf/open/floor/plating, +/area/maintenance/department/science) +"rFq" = ( +/obj/structure/chair, +/obj/item/reagent_containers/food/snacks/donkpocket, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"rHA" = ( +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"rJg" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/engine) +"rJZ" = ( +/obj/docking_port/stationary{ + area_type = /area/construction/mining/aux_base; + dheight = 4; + dir = 1; + dwidth = 4; + height = 9; + id = "aux_base_zone"; + name = "aux base zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/small; + width = 9 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"rKr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/solars/port) +"rKL" = ( +/obj/item/trash/cheesie, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"rLi" = ( +/obj/machinery/button/door{ + id = "shootshut"; + name = "shutters control"; + pixel_x = 28; + req_access_txt = "0" + }, +/obj/item/ammo_casing/shotgun/improvised, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"rMV" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/maintenance/department/engine) +"rNB" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/department/science) +"rPg" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"rPW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/science/mixing) +"rSH" = ( +/obj/item/trash/can, +/turf/open/floor/wood, +/area/maintenance/department/engine) +"rWE" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/solars/starboard) +"rXT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"rYC" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "public external airlock"; + req_access_txt = "0" + }, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"rYY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access_txt = "10;13" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"sbk" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/department/crew_quarters/dorms) +"sbY" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/wood, +/area/lawoffice) +"sci" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/department/science) +"scp" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Auxillary Base Maintenance"; + req_access_txt = "12"; + req_one_access_txt = "32;47;48" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"scz" = ( +/obj/machinery/power/apc/highcap/fifteen_k{ + dir = 8; + name = "Engineering APC"; + pixel_x = -28 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"sdk" = ( +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "Armory External"; + dir = 1 + }, +/turf/open/space, +/area/space/nearstation) +"sgc" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"sij" = ( +/obj/structure/closet, +/obj/item/reagent_containers/food/snacks/meat/slab/monkey, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"skw" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/closed/wall, +/area/maintenance/department/security/brig) +"spz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/department/science) +"sqh" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/oil{ + icon_state = "floor6" + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/department/crew_quarters/dorms) +"sqQ" = ( +/turf/open/floor/plating, +/area/maintenance/disposal) +"srZ" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"ssx" = ( +/obj/item/shard, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"stQ" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/sign/departments/science{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"sut" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/maintenance/solars/starboard) +"svN" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/sign/departments/restroom{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"sww" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/reagent_containers/food/snacks/meat/slab/monkey, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"syn" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/security/brig) +"syQ" = ( +/obj/machinery/vending/games, +/obj/structure/sign/warning/securearea{ + desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; + icon_state = "monkey_painting"; + name = "Mr. Deempisi portrait"; + pixel_y = 28 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"szG" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/plasteel, -/area/science/circuit) -"stl" = ( -/obj/machinery/air_sensor/atmos/toxins_mixing_tank, -/turf/open/floor/engine/vacuum, -/area/science/mixing) +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/security/execution/transfer) +"sAK" = ( +/obj/item/clothing/mask/gas/plaguedoctor, +/turf/open/floor/plating, +/area/maintenance/department/science) "sBA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -50526,21 +52590,53 @@ dir = 1 }, /area/security/brig) -"sCz" = ( -/obj/structure/chair/office/light{ - dir = 1 +"sEB" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/science) +"sEN" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 }, -/obj/effect/turf_decal/box/red, /turf/open/floor/plasteel/white, -/area/science/circuit) -"sQr" = ( -/obj/machinery/airalarm{ - pixel_y = 22 +/area/medical/virology) +"sGr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/plasteel/whitepurple/side{ +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"sJp" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/security/execution/transfer) +"sJr" = ( +/turf/open/floor/wood, +/area/lawoffice) +"sKa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/plasteel/yellow/side{ dir = 1 }, -/area/science/circuit) +/area/engine/engineering) +"sNz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"sOC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/security/execution/transfer) "sQt" = ( /obj/machinery/door/airlock/external{ name = "Supply Dock Airlock"; @@ -50551,68 +52647,433 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) -"sTR" = ( -/obj/machinery/cryopod, -/obj/machinery/light/small/built{ - dir = 4 +"sUP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 }, -/turf/open/floor/plasteel/darkpurple, -/area/crew_quarters/cryopod) -"sUS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/meter, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, +/area/maintenance/department/engine) +"sWj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"sXi" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/sign/warning/deathsposal{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"sXR" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/r_wall, +/area/science/xenobiology) +"sYp" = ( +/obj/structure/lattice, +/obj/machinery/light{ + dir = 2 + }, +/turf/open/space, +/area/engine/engineering) +"sZh" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/maintenance/disposal) +"sZu" = ( +/obj/item/storage/backpack/satchel/explorer, +/turf/open/floor/plating, +/area/maintenance/department/science) +"tan" = ( /obj/structure/cable{ - icon_state = "1-8" + icon_state = "4-8" + }, +/obj/machinery/door/airlock/centcom{ + name = "Chapel Office"; + opacity = 1; + req_access_txt = "22" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"tap" = ( +/obj/structure/reagent_dispensers/keg/aphro, +/turf/open/floor/wood, +/area/maintenance/department/crew_quarters/dorms) +"taA" = ( +/obj/structure/chair/office/light, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"taT" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 4; + name = "euthanization chamber freezer" }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/science/xenobiology) +"tcY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"tdp" = ( +/obj/structure/rack, +/obj/item/stack/packageWrap, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/hand_labeler, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 28 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 5 + }, +/area/science/explab) +"tdB" = ( +/obj/structure/table, +/obj/item/reagent_containers/glass/beaker, +/obj/item/reagent_containers/dropper, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/xenobiology) +"tfw" = ( +/obj/structure/cable{ + icon_state = "0-2"; + pixel_y = 1 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"tfP" = ( +/obj/item/beacon, +/turf/open/floor/engine, +/area/science/xenobiology) +"tfZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/department/security/brig) "thA" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"thW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/xenobiology) +"tim" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Testing Lab Maintenance"; + req_access_txt = "47" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/science/explab) +"tix" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) +"tlc" = ( +/obj/machinery/recharger, +/obj/structure/table, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"tlw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"tlN" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"tnY" = ( +/obj/machinery/button/door{ + id = "aux_base_shutters"; + name = "Public Shutters Control"; + pixel_x = -26; + req_access_txt = "0"; + req_one_access_txt = "32;47;48" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/yellow/side, +/area/construction/mining/aux_base) +"tpb" = ( +/obj/item/reagent_containers/food/snacks/donut, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/security/brig) +"tqX" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "misclab"; + name = "test chamber blast door" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"tue" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"tuy" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology Test Chamber"; + dir = 8; + network = list("xeno","rd") + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"tuL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/the_singularitygen, +/turf/open/floor/plating, +/area/engine/engineering) +"tvj" = ( +/obj/structure/festivus{ + anchored = 1; + name = "pole" + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/department/crew_quarters/dorms) +"tvP" = ( +/obj/item/storage/toolbox/mechanical, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"twv" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"typ" = ( +/obj/structure/table/glass, +/obj/item/hemostat, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) +"tyL" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"tAK" = ( +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel/dark, +/area/science/explab) +"tCP" = ( +/obj/docking_port/stationary/public_mining_dock, +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"tDn" = ( +/obj/item/wrench, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "tHk" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/sign/directions/evac{ - pixel_x = 32 + pixel_x = 32; + pixel_y = 3 }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"tSS" = ( -/obj/machinery/conveyor/inverted{ - dir = 10; - id = "garbage" +"tIS" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"tWt" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/departments/evac, -/turf/open/floor/plating, -/area/hallway/secondary/exit/departure_lounge) -"tYg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/turf/open/floor/plating/airless, +/area/engine/engineering) +"tPm" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/turf/closed/wall, +/area/engine/engineering) +"tRc" = ( +/obj/structure/ore_box, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/engine) +"tSL" = ( +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) +"tTl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"tXn" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 5 + }, +/area/science/xenobiology) +"uaC" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/maintenance/department/crew_quarters/dorms) +"uaE" = ( +/obj/effect/decal/cleanable/oil{ + icon_state = "floor6" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"uaP" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"ubW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/science/mixing) -"tYI" = ( -/obj/effect/landmark/start/scientist, -/turf/open/floor/plasteel/white, -/area/science/circuit) "uek" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"ueP" = ( +/obj/structure/table/glass, +/obj/item/folder/blue, +/obj/item/pen, +/obj/machinery/button/door{ + id = "xenobiomain"; + name = "Containment Blast Doors"; + pixel_x = 28; + req_access_txt = "55" + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"ueV" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) +"ufa" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/table/reinforced, -/obj/item/integrated_electronics/analyzer, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"ugC" = ( +/obj/structure/chair/office/light{ + icon_state = "officechair_white"; + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/xenobiology) +"uiP" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/wood, +/area/maintenance/department/engine) +"ujI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "ukn" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating/airless, -/area/construction/mining/aux_base) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/department/engine) "ulu" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -50622,63 +53083,408 @@ dir = 6 }, /area/storage/primary) -"uoj" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the other eggheads from the comfort of the circuitry lab."; - dir = 2; - name = "RnD Monitor"; - network = list("rd"); - pixel_y = 32 - }, -/turf/open/floor/plasteel/whitepurple/side{ +"ulY" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/science/circuit) -"upI" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "rdprivacy"; - name = "Privacy shutters" +/obj/machinery/power/grounding_rod{ + anchored = 1 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/crew_quarters/heads/hor) -"uyY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"uYl" = ( +/turf/open/floor/plating/airless, +/area/engine/engineering) +"ume" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Lab"; + req_access_txt = "55" + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"uoj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating{ + luminosity = 2; + initial_gas_mix = "o2=0.01;n2=0.01" + }, +/area/maintenance/department/science) +"uoq" = ( +/turf/open/space, +/area/engine/engineering) +"uos" = ( +/obj/machinery/computer/camera_advanced/base_construction, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"uoS" = ( +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"uqJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/execution/transfer) +"urP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/science/explab) +"uug" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/science) +"uun" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"uuS" = ( +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/carpet, +/area/lawoffice) +"uvo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "misclab"; + name = "test chamber blast door" + }, +/turf/open/floor/plating, +/area/science/xenobiology) +"uvq" = ( +/obj/structure/table, +/obj/item/dice/d20, +/turf/open/floor/plating, +/area/maintenance/department/science) +"uwb" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 + }, +/turf/open/floor/circuit/killroom, +/area/science/xenobiology) +"uwX" = ( +/obj/machinery/field/generator, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"uzn" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/tcommsat/computer) +"uAU" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/folder/blue, +/obj/item/clothing/glasses/sunglasses, +/turf/open/floor/carpet, +/area/lawoffice) +"uAZ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Experimentation Lab Mixing Area"; + dir = 2; + network = list("ss13","rd") + }, +/turf/open/floor/engine, +/area/science/explab) +"uCS" = ( +/obj/machinery/door/poddoor/shutters{ + id = "aux_base_shutters"; + name = "Auxillary Base Shutters" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"uHG" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"uIn" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"uLF" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) +"uMe" = ( +/obj/structure/cable{ + icon_state = "0-2"; + pixel_y = 1 + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"uMo" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"uMt" = ( +/obj/effect/turf_decal/plaque, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"uQR" = ( +/obj/item/ammo_casing/shotgun/beanbag, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"uRk" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"uUQ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Engineering Maintenance"; + req_access_txt = "10" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"uVf" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/pen/fountain, +/obj/item/stamp/law, +/turf/open/floor/carpet, +/area/lawoffice) +"uVW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"uXG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/science/xenobiology) +"uXH" = ( /obj/structure/cable{ icon_state = "2-4" }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"vpz" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the other eggheads from the comfort of the circuitry lab."; - dir = 2; - name = "RnD Monitor"; - network = list("rd"); - pixel_y = 32 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/integrated_circuit_printer, -/obj/item/integrated_electronics/debugger, -/turf/open/floor/plasteel/whitepurple/side{ +/turf/open/floor/plating, +/area/maintenance/solars/starboard) +"vay" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"veM" = ( +/obj/machinery/suit_storage_unit/rd, +/obj/machinery/light{ dir = 1 }, -/area/science/circuit) +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"vgp" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/research{ + name = "Containment Pen"; + req_access_txt = "55" + }, +/turf/open/floor/plasteel/floorgrime, +/area/science/xenobiology) +"vhk" = ( +/obj/structure/chair, +/turf/open/floor/carpet, +/area/lawoffice) +"vjd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"vlF" = ( +/obj/item/coin/silver, +/obj/effect/decal/cleanable/oil{ + icon_state = "floor5" + }, +/obj/structure/light_construct/small{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/department/crew_quarters/dorms) +"vmG" = ( +/obj/structure/table/reinforced, +/obj/item/integrated_electronics/analyzer, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/explab) +"vmY" = ( +/obj/structure/sign/warning/deathsposal{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"vpz" = ( +/obj/structure/girder, +/turf/open/floor/plating{ + luminosity = 2; + initial_gas_mix = "o2=0.01;n2=0.01" + }, +/area/maintenance/department/science) +"vsk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"vsJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"vtl" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"vtT" = ( +/turf/open/floor/plating, +/area/maintenance/solars/port) +"vuP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/emergency/starboard) +"vuQ" = ( +/obj/structure/rack, +/obj/item/clothing/mask/gas, +/turf/open/floor/plating, +/area/maintenance/department/science) +"vxp" = ( +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Research Division Delivery"; + req_access_txt = "47" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced, +/obj/item/assembly/mousetrap, +/turf/open/floor/engine, +/area/science/explab) "vzz" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -50689,24 +53495,70 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) -"vJd" = ( -/obj/structure/table/reinforced, -/obj/item/integrated_electronics/wirer, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"vMX" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 +"vzP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"vzT" = ( +/obj/structure/table, +/obj/item/stack/rods{ + amount = 5; + layer = 3.3 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/assembly/prox_sensor{ + pixel_y = 2 }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = -22 +/obj/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/science/circuit) +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"vAq" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"vCC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"vGg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"vIc" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"vMx" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) "vOw" = ( /obj/machinery/door/airlock/grunge{ name = "Library" @@ -50721,12 +53573,229 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/library) +"vRi" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) +"vRm" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Engineering Port Storage"; + dir = 2 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1 + }, +/area/engine/engineering) "vTL" = ( /obj/machinery/vending/tool, /turf/open/floor/plasteel/neutral/side{ dir = 1 }, /area/storage/primary) +"vTN" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/research{ + name = "Toxins Lab"; + req_access_txt = "8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/science/mixing) +"vXt" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/rods/fifty, +/obj/item/clothing/glasses/welding, +/turf/open/floor/plasteel/yellow/side, +/area/engine/engineering) +"vYN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8; + external_pressure_bound = 140; + name = "server vent"; + pressure_checks = 0 + }, +/turf/open/floor/circuit/killroom, +/area/science/xenobiology) +"wcs" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"wdx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"weL" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"wfc" = ( +/obj/structure/ore_box, +/turf/open/floor/plating, +/area/maintenance/department/science) +"wfs" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/latex, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 4 + }, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"wfO" = ( +/mob/living/simple_animal/hostile/retaliate/poison/snake, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"wig" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/security/brig) +"wiB" = ( +/obj/item/shard{ + icon_state = "small" + }, +/obj/item/stack/cable_coil/red, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"wkZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/shower{ + dir = 4; + name = "emergency shower" + }, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/xenobiology) +"wlK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/explab) +"wnJ" = ( +/obj/structure/sign/warning, +/turf/closed/wall, +/area/science/mixing) +"woh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"woq" = ( +/obj/structure/chair, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"wpI" = ( +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"wqu" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) +"wrU" = ( +/obj/machinery/photocopier, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -28 + }, +/turf/open/floor/wood, +/area/lawoffice) +"wun" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"wwr" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"wwG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"wxb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/security/brig) "wxJ" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/poddoor/preopen{ @@ -50735,12 +53804,34 @@ }, /turf/open/floor/plasteel/dark, /area/security/brig) -"wBr" = ( +"wzb" = ( +/obj/structure/chair, +/turf/open/floor/wood, +/area/maintenance/department/engine) +"wAI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"wBb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/explab) +"wBg" = ( +/obj/machinery/door/airlock/maintenance{ + id_tag = "Potty1"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/department/crew_quarters/bar) +"wDm" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "wDZ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -50750,6 +53841,33 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"wEn" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Departure Lounge" + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) +"wFT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) +"wIv" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 8; + name = "Engineering Maintenance APC"; + pixel_x = -25; + pixel_y = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) "wJP" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/purple/visible{ @@ -50757,6 +53875,14 @@ }, /turf/open/space, /area/space/nearstation) +"wKa" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) +"wKK" = ( +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating, +/area/engine/engineering) "wLo" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -50768,30 +53894,214 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/cmo) -"wMV" = ( -/obj/machinery/conveyor/inverted{ - dir = 6; - id = "garbage" +"wMF" = ( +/obj/effect/spawner/lootdrop/three_course_meal, +/obj/effect/spawner/lootdrop/three_course_meal, +/obj/structure/closet/crate, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/crew_quarters/dorms) +"wMM" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"wNq" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 }, /turf/open/floor/plating, -/area/maintenance/disposal) -"wTO" = ( -/obj/machinery/vending/assist, -/turf/open/floor/plasteel/purple/corner{ +/area/maintenance/department/engine) +"wOa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/neutral/corner, +/area/hallway/secondary/exit/departure_lounge) +"wOf" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"wOS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/science/mixing) +"wQU" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 4 }, -/area/science/circuit) -"xfc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/cargo) +"wRk" = ( +/obj/structure/rack, +/obj/item/wrench, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"wRz" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/security/brig) +"wRI" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Brig Maintenance APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"wTD" = ( +/obj/structure/table/wood, +/obj/item/folder/red, +/obj/item/folder/red, +/obj/item/clothing/glasses/sunglasses, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = 27 + }, +/obj/machinery/camera{ + c_tag = "Law Office"; + dir = 8 + }, +/turf/open/floor/carpet, +/area/lawoffice) +"wTO" = ( +/obj/structure/frame/computer, +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) +"wUf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/storage/emergency/port) +"wUz" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/security/brig) +"wVC" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sci"; + location = "Bar1" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"wXu" = ( +/obj/machinery/disposal/bin, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 2 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"wYu" = ( +/obj/machinery/door/poddoor/shutters{ + id = "shootshut" + }, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"xah" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/cargo) +"xaO" = ( +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"xaQ" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = 29 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/hallway/secondary/exit/departure_lounge) +"xbJ" = ( +/turf/open/floor/plasteel/dark, +/area/maintenance/department/crew_quarters/dorms) +"xee" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum/external, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) +"xeB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/lawoffice) +"xgG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/science/circuit) +/area/science/explab) "xhj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/carpet, /area/library/lounge) +"xhE" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) "xja" = ( /obj/machinery/light/small{ dir = 4 @@ -50810,24 +54120,336 @@ }, /turf/open/floor/plasteel/dark, /area/library) -"xGQ" = ( +"xje" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"xjK" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = -27 + }, +/obj/structure/rack, +/obj/item/taperecorder, +/obj/item/restraints/handcuffs, +/obj/item/assembly/flash/handheld, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"xjT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 1 + }, +/area/science/xenobiology) +"xlA" = ( +/obj/machinery/door/airlock/maintenance/abandoned, +/turf/open/floor/plating, +/area/maintenance/department/science) +"xmp" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/escape, +/area/hallway/secondary/exit/departure_lounge) +"xmE" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"xnm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/plating, +/area/tcommsat/computer) +"xnP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) +"xpr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/darkblue/side, +/area/science/xenobiology) +"xpD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/science) +"xsO" = ( +/obj/item/ectoplasm, +/turf/open/floor/plating{ + luminosity = 2; + initial_gas_mix = "o2=0.01;n2=0.01" + }, +/area/maintenance/department/science) +"xuv" = ( +/obj/item/broken_bottle, +/turf/open/floor/plating, +/area/maintenance/solars/port) +"xvO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"xxw" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2 + }, +/turf/open/floor/plasteel/dark, +/area/science/xenobiology) +"xxO" = ( +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "containment blast door" + }, +/obj/machinery/door/window/northleft{ + base_state = "right"; + dir = 2; + icon_state = "right"; + name = "Containment Pen #2"; + req_access_txt = "55" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/science/xenobiology) +"xxS" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"xyl" = ( +/obj/structure/table, +/obj/item/assembly/timer, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"xyB" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/security/brig) +"xzp" = ( +/turf/open/floor/plasteel/darkblue/side, +/area/science/xenobiology) +"xCV" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"xDj" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"xFl" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 1; + layer = 4; + name = "Telecomms Server APC"; + areastring = "/area/tcommsat/server"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/dark/telecomms, +/area/tcommsat/server) +"xIx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) +"xJy" = ( +/obj/structure/chair/comfy/black, +/obj/structure/sign/plaques/atmos{ + desc = "An embossed piece of paper from the Third University of Harvard."; + icon_state = "kiddieplaque"; + name = "\improper 'Diploma' frame"; + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/turf/open/floor/wood, +/area/lawoffice) +"xKc" = ( +/obj/structure/sign/warning/biohazard, +/turf/closed/wall/r_wall, +/area/science/xenobiology) +"xLi" = ( +/turf/open/floor/plasteel/escape{ + dir = 6 + }, +/area/hallway/secondary/exit/departure_lounge) +"xLC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Law Office"; + req_access_txt = "38" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/dark, +/area/lawoffice) +"xNx" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/junction/flip, +/turf/open/space/basic, +/area/space/nearstation) +"xOC" = ( +/obj/machinery/door/airlock/external{ + name = "Construction Zone"; + req_access_txt = "0"; + req_one_access_txt = "0" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/construction/mining/aux_base) +"xPa" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/airalarm{ + pixel_y = 22 + }, +/turf/open/floor/engine, +/area/science/explab) +"xQc" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock{ + name = "Port Emergency Storage"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/freezer, +/area/storage/emergency/port) +"xSX" = ( +/obj/machinery/airalarm/unlocked{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"xSZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/hallway/secondary/exit/departure_lounge) +"xTi" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "EngLoad" + }, +/obj/structure/sign/warning/deathsposal{ + desc = "A warning sign which reads 'DISPOSAL: LEADS TO ENGINE'."; + name = "\improper DISPOSAL: LEADS TO ENGINE"; + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"xWl" = ( +/obj/item/pen, +/obj/item/paper_bin{ + layer = 2.9 + }, +/obj/structure/table/glass, +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/science/xenobiology) +"ybX" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"ycr" = ( +/obj/structure/target_stake, +/obj/item/target/syndicate, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) +"ycx" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/department/engine) +"ydf" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"yfO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/yellow/side, +/area/construction/mining/aux_base) +"ygZ" = ( /obj/structure/closet/crate, -/obj/item/gun/energy/laser/practice, -/obj/item/gun/energy/laser/practice, -/obj/item/target/syndicate, -/obj/item/target/syndicate, -/obj/item/target/clown, -/obj/item/target/clown, -/obj/item/target/alien, -/obj/item/target/alien, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"yeS" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen/blue, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"ymb" = ( +/obj/machinery/camera{ + c_tag = "Engineering Telecomms Access"; + dir = 8; + network = list("tcomms") + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) (1,1,1) = {" aaa @@ -57084,12 +60706,12 @@ aaa aaa aaa aaa +aoH +aoH +aoH +aoH +aoH aaa -aoH -aoH -aoH -aoH -aoH aaa aaa aaa @@ -57341,7 +60963,6 @@ aaa aaa aaa aaa -aaa aoH aaa aoI @@ -57510,6 +61131,7 @@ aaa aaa aaa aaa +aaa "} (27,1,1) = {" aaa @@ -57598,7 +61220,6 @@ aaa aaa aaa aaa -aaa aoI aoI azG @@ -57767,6 +61388,7 @@ aaa aaa aaa aaa +aaa "} (28,1,1) = {" aaa @@ -57846,7 +61468,6 @@ aaa aaa aaa aaa -aaa aoH aoH aoH @@ -58024,6 +61645,7 @@ aaa aaa aaa aaa +aaa "} (29,1,1) = {" aaa @@ -58103,7 +61725,6 @@ aaa aaa aaa aaa -aaa aoI aaa aaa @@ -58281,6 +61902,7 @@ aaa aaa aaa aaa +aaa "} (30,1,1) = {" aaa @@ -58360,7 +61982,6 @@ aaa aaa aaa aaa -aaa aoH aaa aqa @@ -58538,6 +62159,7 @@ aaa aaa aaa aaa +aaa "} (31,1,1) = {" aaa @@ -58617,7 +62239,6 @@ aaa aaa aaa aaa -aaa aoH aoI aqb @@ -58795,6 +62416,7 @@ aaa aaa aaa aaa +aaa "} (32,1,1) = {" aaa @@ -58874,7 +62496,6 @@ aaa aaa aaa aaa -aaa aoH aaa aqc @@ -59052,6 +62673,7 @@ aaa aaa aaa aaa +aaa "} (33,1,1) = {" aaa @@ -59131,7 +62753,6 @@ aaa aaa aaa aaa -aaa aoJ aaa aaa @@ -59309,6 +62930,7 @@ aaa aaa aaa aaa +aaa "} (34,1,1) = {" aaa @@ -59388,7 +63010,6 @@ aaa aaa aaa aaa -aaa aoH aaa aqa @@ -59566,6 +63187,7 @@ aaa aaa aaa aaa +aaa "} (35,1,1) = {" aaa @@ -59645,7 +63267,6 @@ aaa aaa aaa aaa -aaa aoH aoI aqb @@ -59823,6 +63444,7 @@ aaa aaa aaa aaa +aaa "} (36,1,1) = {" aaa @@ -59902,7 +63524,6 @@ aaa aaa aaa aaa -aaa aoH aaa aqc @@ -60080,6 +63701,7 @@ aaa aaa aaa aaa +aaa "} (37,1,1) = {" aaa @@ -60159,7 +63781,6 @@ aaa aaa aaa aaa -aaa aoH aaa aaa @@ -60337,6 +63958,7 @@ aaa aaa aaa aaa +aaa "} (38,1,1) = {" aaa @@ -60416,7 +64038,6 @@ aaa aaa aaa aaa -aaa aoH aaa aqa @@ -60594,6 +64215,7 @@ aaa aaa aaa aaa +aaa "} (39,1,1) = {" aaa @@ -60673,7 +64295,6 @@ aaa aaa aaa aaa -aaa aoH aoI aqb @@ -60851,6 +64472,7 @@ aaa aaa aaa aaa +aaa "} (40,1,1) = {" aaa @@ -60930,7 +64552,6 @@ aaa aaa aaa aaa -aaa aoH aaa aqd @@ -61108,6 +64729,7 @@ aaa aaa aaa aaa +aaa "} (41,1,1) = {" aaa @@ -61187,7 +64809,6 @@ aaa aaa aaa aaa -aaa aoH aaa aaa @@ -61365,6 +64986,7 @@ aaa aaa aaa aaa +aaa "} (42,1,1) = {" aaa @@ -61444,7 +65066,6 @@ aaa aaa aaa aaa -aaa aoH aaa aqa @@ -61503,6 +65124,7 @@ aaa aaa aaa aaa +aaa abN aaa aaa @@ -61535,11 +65157,11 @@ aaa aaa aaa aaa -bZY -bZY -crb -bZY -bZY +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -61701,7 +65323,6 @@ aaa aaa aaa aaa -aaa aoH aoI aqb @@ -61789,28 +65410,29 @@ aaa aaa aaa aaa -cfN +aaa +aaa +aaa +aaa bZY -crb bZY -csn -ceF -csY +cBM bZY -crb bZY -cfN -cfN -cfN -cfN +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa cfN cfN -csU +fIT cfH -csU +fIT cfN aaa aaa @@ -61958,7 +65580,6 @@ aaa aaa aaa aaa -aaa aoH aaa aqd @@ -62044,30 +65665,31 @@ aaa aaa aaa aaa -cfN -cfN -cfN +aaa +aaa +aaa +aaa +aaa bZY -crv -ccv -cdo -cdo -cdo -ccv -crv bZY +csn +ceF +csY +bZY +bZY +aaa +aaa +aaa +aaa cfN cfN cfN cfN cfN cfN -cfN -cfN -cfN -csU +fIT cfI -csU +fIT cfN cfN aaa @@ -62215,7 +65837,6 @@ aaa aaa aaa aaa -aaa aoH aaa aaa @@ -62300,20 +65921,21 @@ aaa aaa aaa aaa -cfN -bZY -bZY -bZY -bZY +aaa +aaa +aaa +aaa +aaa +aaa cBM csd -cdo -csB -cdo csd -crv -bZY -bZY +csB +csd +csd +cBM +aaa +aaa cfN cfN cfN @@ -62322,9 +65944,9 @@ cfN cfN cfN cfN -csU +fIT cjC -csU +fIT cfN cfN aaa @@ -62472,7 +66094,6 @@ aaa aaa aaa aaa -aaa aoH aoI aoH @@ -62557,19 +66178,19 @@ aaa aaa aaa aaa +aaa +aaa +cfN +cfN +cfN bZY bZY -crt -crD -bZY -crS cse cso csC cdp -csd -crv -ctV +kDf +bZY bZY cfN cfN @@ -62577,11 +66198,12 @@ cfN cfN cfN cfN +cfN bWV bWV -csU +fIT cfJ -csU +fIT bWV cfN cfN @@ -62740,7 +66362,6 @@ aaa aaa aaa aaa -aaa azH aaa aaa @@ -62814,19 +66435,20 @@ aaa aaa aaa aaa -crb -crg -cru -crE -ceh -crT -csf +aaa +cfN +bZY +bZY +bZY +bZY +jsD +csd csp -csD -csZ -ctr -crv -ctW +csp +csp +csd +dpb +bZY bZY cfN cfN @@ -62997,7 +66619,6 @@ aaa aaa aaa aaa -aaa azH aaa aaa @@ -63071,18 +66692,19 @@ aaa aaa aaa aaa +aaa bZY -ceC -crv -crF -crJ -ceE -csg -csq +bZY +crt +crD +bZY +xSX +csi +owS csE -cta +rrU ctr -crv +cdo ctX bWV bWV @@ -63254,7 +66876,6 @@ aaa aaa aaa aaa -aaa azH aaa aaa @@ -63328,19 +66949,20 @@ aaa aaa aaa aaa -bZY -crh -crv -crG -bZY -crU -csh -csr -csF -ctb -ctt -ctJ -bZY +aaa +crb +crg +cru +crE +ceh +crT +csf +pFe +hYe +kwm +ctr +cdo +kfM bWV cuk cus @@ -63511,7 +67133,6 @@ aaa aaa aaa aaa -aaa azH aaa aaa @@ -63584,20 +67205,21 @@ aaa aaa aaa aaa +aaa cfN bZY -bZY -bZY -bZY -bZY -bZY -csi -css -csG +ceC +crv +crF +nku +ceE +csg +csq +csE cta -ctu -bZY -bZY +ctr +cdo +lzJ bWV cgb cut @@ -63613,8 +67235,8 @@ bWV cwj cww bWV -csU -csU +fIT +fIT cxg aaa aaa @@ -63768,7 +67390,6 @@ aaa aaa aaa aaa -aaa azH aaa aaa @@ -63784,6 +67405,7 @@ aaa aaa aaa aaa +aaa abN aaa aaa @@ -63842,19 +67464,19 @@ aaa aaa cfN cfN -cqW -cfN -cfN -cfN -cfN bZY -csj -css -csG -cta -csj +crh +crv +crG +bZY +crU +csh +csr +csF +ctb +ctt +ctJ bZY -cfN bWV cul chB @@ -63871,7 +67493,7 @@ bXJ bXJ crj cwO -csU +fIT cxh aaa aaa @@ -64025,7 +67647,6 @@ aaa aaa aaa aaa -aaa azH aaa aaa @@ -64096,22 +67717,23 @@ aaa aaa aaa aaa +aaa bVp cfN cfN -cfN -cfN -cfN -cfN -cfN bZY bZY -cfk -csI -cte bZY bZY -cfN +bZY +bZY +lAf +css +csG +cta +ctu +bZY +bZY bWV cum cgd @@ -64128,8 +67750,8 @@ cdw cjj bXJ bXJ -csU -csU +fIT +fIT cxg aaa aaa @@ -64282,7 +67904,6 @@ aaa aaa aaa aaa -aaa azH aaa aaa @@ -64352,22 +67973,23 @@ aaa aaa aaa aaa +aaa bGI bNs cfN cqW cqW -cqW -bSm -bOw -cfN -crV -cfN -cbG -cef -ceB cfN cfN +bZY +giI +pkM +crv +css +csG +cta +gKz +bZY cfN bWV cfC @@ -64539,7 +68161,6 @@ aaa aaa aaa aaa -aaa azH aaa aaa @@ -64609,22 +68230,23 @@ aaa aaa aaa aaa +aaa bGI bNs cfN cfN -bOw -bOw -bOw -bUC -bOw -chT -cfN -cbG -cee -ceB cfN cfN +bOw +bZY +pkM +bZY +bZY +cfk +tan +cte +bZY +bZY cfN bWV bWV @@ -64783,18 +68405,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aby +aed +aby +aht +aby +aby +aby +aht +aby +aby +aby aaa aaa azH @@ -64866,11 +68487,12 @@ aaa aaa aaa aaa +aaa bGI bNs cqW bOw -bOw +cfN bOw bOw bOw @@ -64899,8 +68521,8 @@ ceQ ciA bXJ bXJ -csU -csU +fIT +fIT cxg aaa aaa @@ -65040,18 +68662,17 @@ aaa aaa aaa aaa +aht aaa aaa aaa aaa +aht aaa aaa aaa aaa -aaa -aaa -aaa -aaa +aht aaa aaa azH @@ -65119,6 +68740,7 @@ aaa aaa aaa aaa +aaa aby aby aby @@ -65156,7 +68778,7 @@ bXJ bXJ cwG cwO -csU +fIT cxk aaa aaa @@ -65297,19 +68919,18 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aiu +ait +ait +ait +aiu +aiu +ait +ait +ait +aiu +aiu +aht aaa azH aaa @@ -65376,6 +68997,7 @@ aaa aaa aaa aaa +aaa aby aaa aaa @@ -65412,8 +69034,8 @@ bWV cwl cwz bWV -csU -csU +fIT +fIT cxg aaa aaa @@ -65554,19 +69176,18 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aiu +fIN +wwG +gGy +wYu +uQR +uaE +pdq +ajD +dci +aiu +aht aaa azH aaa @@ -65633,6 +69254,7 @@ aaa aaa aaa aaa +aaa abI bGD bQQ @@ -65811,19 +69433,18 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aiu +oFf +ycr +wDm +wYu +ajD +ajD +ajD +ajD +mwg +aiu +aht aaa azH aaa @@ -65883,6 +69504,7 @@ aaa aaa aaa aaa +aaa aby abI aby @@ -66068,19 +69690,18 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aiu +lcU +sGr +hiw +wYu +ajD +jsf +ajD +rLi +tlc +aiu +aht aaa azH aaa @@ -66140,6 +69761,7 @@ aaa aaa aaa aaa +aaa aby aaa aaa @@ -66325,22 +69947,22 @@ aaa aaa aaa aaa -aaa -aaa -aaa aiu -ait -ait -ait aiu -abI -abI -aaa -aaa -aaa -aaa -azH -aaa +kJw +aiu +aiu +aiu +aiu +cHS +aiu +aiu +aiu +axC +axB +rKr +axB +axC aaa aaa aaa @@ -66582,22 +70204,22 @@ aaa aaa aaa aaa -aaa -aht aht aiu +gwn +aiu apz aqe -arb +aoK +dcL +apB aiu -abI -abI -abI -aaa -aaa -axB -azM +tpb +axC +ayz +azN axB +axC aaa aaa aaa @@ -66838,23 +70460,23 @@ ait ait aiu aiu -aaa -aaa +aht +aht aiu -aiu -aiu -aoK -aqf +wRI ajD +ajD +ajD +aoK +aBa +xyB aiu -ait -ait -aiu -aaa -aaa -ayz -azN +aAa +axC axB +hzd +axB +axC aaa aaa aaa @@ -67098,21 +70720,21 @@ aiu ait ait aiu -aod -aoK -aoK -aoK -ajD -aoK -ajD -ajD +lMU +apB +woq +lXc +nPA +egK +aBa aiu +azZ +axC +ayA +azP +aAW +axC aaa -axB -axB -azO -axB -axB aaa aaa aaa @@ -67355,20 +70977,19 @@ ali ajD ajD anq -ajD -ajD +aoe +aiu apB aiu aiu aiu +aoK aiu -ajD -aiu -aiu +azY axC -ayA -azP -aAW +ayB +azQ +aAX axC aaa aaa @@ -67420,6 +71041,7 @@ aaa aaa aaa aaa +aaa bFE bGF bHJ @@ -67612,20 +71234,19 @@ aiu ait ait aiu -anr -aoL -aoL -aoL +hOx +aDm +aDm +aDm aoL aso -aoL -aoL -aoL -awE +aso +rrb +oPx axC -ayB -azQ -aAX +ayC +azR +aAY axC aaa aaa @@ -67645,6 +71266,7 @@ aaa aaa aaa aaa +aTH aaa aaa aaa @@ -67857,10 +71479,10 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa +adR +adR +adR +aht ait aiY ajE @@ -67869,42 +71491,42 @@ aiu aaa aaa aiu -cBi -ajD +aCg +aiu +aiu +aiu +wRz +aiu +aiu +aiu +syn +axC +axC +azS +axC +axC +aiu aiu aiu ait -asp -aiu ait aiu -aoe -axC -ayC -azR -aAY -axC -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa +aHA +aKy +xee +aKy +aHA aaa aaa aaa +aHA +aKy +xee +qIC +aHA aaa aaa aaa @@ -68114,10 +71736,10 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa +aht +aht +aht +aht aiu aiu aiu @@ -68126,42 +71748,42 @@ aiu aiu aiu aiu -aoe -ajD +aCg aiu aqg +gjN arc -asq atp aus aiu -aoe -axC -axC -azS -axC +wxb axC +xuv +azN +vtT +vtT aiu +apB +aiu +aBa +oTC +ait aaa +abN aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aHA +aKz +aHA +aKz +aHA +abI +aht +abI +aHA +aKz +aHA +aKz +aHA aaa aaa aaa @@ -68371,54 +71993,54 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aiu +afU +afU +pfz +uqJ +afU +afU ajF aku alj alT -aiu +skw anr aof -aoK -ait +aiu aqh -ajD +lqc aoe atq aut aiu -asr -aoL -aoL -azT -aoK -aCb -aiu -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aTH -aaa -aaa -aaa +giO +aDm +kJo +fAx +aDm +aDm +aDm +aDm +aDm +mLB +wUz +ait +aht +aht +aht +aHA +dqG +aHA +aKz +aHA +abI aaa +abI +aHA +aKz +aHA +wKa +aHA aaa aaa aaa @@ -68622,17 +72244,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +adR +aht afU +agi +agi +agi +afU +hwj ahu ahS -afU +oXe afU ajG akv @@ -68640,8 +72262,7 @@ alk alU amH ans -aiu -aoM +ePU aiu aqi ard @@ -68649,33 +72270,34 @@ asr atp auu aiu -awF -apB -apB -aoe +ekU +aiu +asr +tyL ajD +nPA +mtu aCc aiu -aaa -aaa -aaa +wxb +wig +ait aaa aaa aaa aHA -aKy +wqu aHA -aaa -aaa -aaa +wqu aHA -aKy +abI +aht +abI aHA -aKy +wqu +aHA +wqu aHA -aaa -aaa -aaa aaa aaa aaa @@ -68879,14 +72501,14 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +adR +aht afU +szG +sOC +iCV +msX +dVI ahv ahT aiv @@ -68895,41 +72517,48 @@ ajG akw all alV +tfZ +vCC +lHc aiu -ant -aiu -aoN aiu aiu ait ait aiu +aiu +aiu +aiu +ait ait aiu aiu aiu -ayD -azU -aoK -ajD -ait -aaa -aaa -aaa -aaa -aaa -aaa +aiu +aiu +aCg +aiu +aiu +aiu +aiu +aHz +xee +aKB +nYn +aKB +xee aHA -aKz aHA -aaa -aaa -aaa -aHA -aKz -aHA -aKz aHA +xee +aKB +nYn +fTY +xee +aYG +aZx +aZx +aZx aaa aaa aaa @@ -68940,17 +72569,10 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aZx +aZx +aZx +aZx aaa aaa aaa @@ -69136,14 +72758,14 @@ aaa aaa aaa aaa -aaa -aaa -afU -agi -agi -agi -afU +adR +aht afU +lem +mzl +sJp +qMi +iPU ahw ahU aiw @@ -69156,7 +72778,10 @@ ajH ant aiu aiu -aiu +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69165,34 +72790,31 @@ aaa aaa aaa aiu -aiu -azV -aBa aCd -ait -aaa -aaa -aaa -aaa -aaa -aaa -aHA +hHr +hHr +aCg +ezF +aod +aqg +aiu +iab aKA -aHA -aaa -abI -abI -aHA -aKA -aHA -aTI -aHA -abI -abI -abI +aOk +aJE +aWE +aWE +wwr +hwd +wwr +aOk +aOk +aJE +aWE +aWK aYG -aZx -aZx +aZy +baJ aZx aaa aaa @@ -69205,8 +72827,8 @@ aaa aaa aaa aZx -aZx -aZx +baJ +bon aZx aaa aaa @@ -69393,9 +73015,9 @@ aaa aaa aaa aaa -aaa -aaa -afV +adR +aht +afU agj agv agF @@ -69422,47 +73044,47 @@ aaa aaa aaa aaa +aaa +aaa aiu -azW -aBa -ajD -ait -aaa -aaa -aaa -aaa -aaa -aaa -aHA -aKz -aHA -aHA -aHA -aHA -aHA -aKB -tWt -aKB -aHA -aHA -aHA -aHA +nyO +ezJ +ujI +dgI +ujI +ujI +iJi +aiu +xaQ +fmU +wOa +qUw +xSZ +wOa +aQv +eAp +aJE +ftW +coN +kvj +ftW +ppQ aYG aZy -baJ +baK +jzz aZx -bcW +jzz +aaa +aaa +aaa +aaa +aaa +aaa +jzz aZx -aaa -aaa -aaa -aaa -aaa -aaa -aZx -aZx -aZx -baJ +jzz +baK bon aZx aaa @@ -69650,13 +73272,13 @@ aaa aaa aaa aaa -aaa -aaa -afW -agk +adR +aht +afU +afU agw -agG -agU +afU +afU ahk ahy ahW @@ -69679,31 +73301,31 @@ aaa aaa aaa aaa +aaa +aaa aiu -azX -aBb awE +qGu +eOZ +kQZ +nih +kxs +qGu aiu -aaa -aaa -aaa -aaa -aHz -aHz -aHz -aKB -aHz -aMK -aOf +rgs +jeq +pGe +aQt aOf +xLi aQr -aOf -aSq -aOf aQr +aQr +oLR +pGe +aQt aOf -aOf -aXD +aWK aYG aZy baK @@ -69936,31 +73558,31 @@ aaa aaa aaa aaa +aaa +aaa aiu -azY aiu -aoe +kFx +aiu +aiu +aiu +aiu +gKG aiu -aaa -aaa -aaa -aaa -aHA -aIB aJD -aKC -aHA -aML +jeq +pGe +aQu aOg -aPm -aQs -aPm -aSr -aPm -aQs -aVL -aWE aWK +aRD +aSv +aTK +aML +pGe +aQu +aOf +duQ aYG aZz baK @@ -70166,12 +73788,12 @@ aem aem aem aem -afY -agm -agm -agm -agm -agm +aiA +aiA +aiA +aiA +aiA +aiA ahA ahY aiA @@ -70193,31 +73815,31 @@ aaa aaa aaa aaa +aaa +aaa +ebD +sbY +fuP +pXT +wrU +mpy aiu -azZ -aiu -aoe -aiu -aaa -aaa -aaa -aaa -aHz +gue aIC -aJE +pvK aKD -aHA -aML +gmO +aQt aOh -aPn -aQt -aRB -aSs -aPn -aQt -aVM -aWE aWK +aRE +aSw +aTL +aML +gmO +aQt +gpC +ppQ aYG aZA baK @@ -70422,7 +74044,7 @@ aem aem aeT afn -fwj +agy afZ agn agy @@ -70450,33 +74072,33 @@ aaa avp aaa aaa -aiu -aAa -aiu +aaa +aaa +ebD aCe +gPV +pEL +elk +mXq aiu -aaa -aaa -aaa -aaa -aHA -aID -aJE +jhk +aiu +gxq aKE -aLs -aMM -aOi -aPn +pGe aQu -aRB -aJE -aPn +aOg +aWK +aRF +aSx +aTM +aML +pGe aQu -aVM -aWE +aOf aWK aYG -aZA +ovM baL baK bcZ @@ -70677,7 +74299,7 @@ abI aem aeo aeC -niB +aeU aeU afC aeU @@ -70709,28 +74331,28 @@ apE ajM aiu aiu +gSH +xJy +sJr +sJr +sJr +sJr aiu -aoe +jhk aiu -aaa -aaa -aaa -aaa -aHz -aIE -aJE -aKF -aLt -aMN -aOj +niy +aKE +pGe +aQt +aOf aPo -aQt -aRB -aJE +nGi +nGi +nGi aPn +pGe aQt -aVM -aWE +aOf aWK aYG aZA @@ -70748,7 +74370,7 @@ aZx bkS bbS baK -bon +boo aZx aaa aaa @@ -70966,31 +74588,31 @@ awH axE ayE aAb +ebD +jjC +eEp +vhk +gAG +kxj aiu -aoe +oTp aiu -aaa -aaa -aaa -aaa -aHA -aIF aJF aKG -aHA -aML +gvf +kvj aOk -aPp -aQu -aRC -coT -aTJ -aQu -aVN aWE -aXE +aJE +aRC +aQs +aTJ +vsJ +aVN +cJo +ppQ aYG -aZB +aZA baM aZx aZx @@ -71005,7 +74627,7 @@ aZx aZx aZx bno -boo +bon aZx aaa aaa @@ -71200,7 +74822,7 @@ agy agK agY agy -ahE +ahB aic aiE agy @@ -71223,28 +74845,28 @@ akA ajM ayF aAc +xLC +xeB +nSo +uuS +uAU +oCn aiu -aoe +jhk aiu -aiu -aiu -aiu -aiu -aiu -aiu -aiu -aHz -aHz -aML -aOk -aPq -aQt -aRB +riF +xhE +ftW aJE -aPn -aQt -aVM -aWE +coN +aPq +klB +klB +klB +hkQ +ftW +aJE +fwe aWK aYG aZA @@ -71478,46 +75100,46 @@ aux avs awI axF -axG +ayL aAd -aiu +ebD aCf -aDm -aDm -aDm -aDm -aDm -aHB -aIG -ait -aaa -aHA -aML -aOk -aPq -aQu +hnu +jTu +wTD +uVf +aiu +jhk +aiu +aiu +aiu +sgc +nDx +gLF +aHz +eLt aRB -aJE -aPn -aQu +aRB +aOs +fUA aVM -aWE -aWK +xmp +aOs aYG aZA baN +jzz aZx -bcW -aZx -aaa -aaa -aaa -aaa -aaa -aaa -aZx -aZx +jzz +aaa +aaa +aaa +aaa +aaa +aaa +jzz aZx +jzz bnp bon aZx @@ -71535,12 +75157,12 @@ aaa abI aaa bva -cqy -cqy +bIZ +bIZ bva bva -cqy -cqy +bIZ +bIZ bva abI aaa @@ -71736,30 +75358,30 @@ avt awJ axG ayG -aAc +pFy +aiu +aiu +aiu +aiu +aiu +aiu aiu -aCg -aDn -aBd -aBd -aBd -aBd aHC aIH +ofX aiu -aaa +aiu +aiu +aiu +aiu +aiu +aiu +aiu +aiu +wEn +aPv +fBt aHz -aMO -aOl -aPr -aQt -aRB -aSt -aPn -aQt -aVM -aWE -aWK aYG aZA baN @@ -71816,9 +75438,9 @@ abI aaa bva bva -cqy -cqy -cqy +bIZ +bIZ +bIZ aaa aaa aaa @@ -71996,25 +75618,25 @@ ayH aAe aBc aCh -aoK -aBd +eQZ +eQZ aFk aFU -aBd -aCg -aII -ait -aaa -aHA -aMP +eQZ +gjq +aiu +iSz +aIH +aIH +aIH aOm -aPs -aQv -aQv +aIH +aIH +jTh aSu +aiu +nfi aJE -aJE -aVO aWF aXF aYG @@ -72071,11 +75693,11 @@ aht cdm abI aaa -cqy +bIZ caZ cbS ccN -cqy +bIZ aaa aaa aaa @@ -72219,7 +75841,7 @@ abI aem aeu aeI -aeU +lGp aeU afI aeU @@ -72255,24 +75877,24 @@ aBd aBd aBd aBd -aFl -aFV aBd -aCg -aiu -aiu -aht -aHz -aHz -aOn -aPt -coN -coN -coN -coN -aJE +aFV +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +ayD +vIc +xxS +vAq +uLF aVO -aWG +aWF aXG aYG aZD @@ -72313,7 +75935,7 @@ bLu bNG bOz bHQ -cqy +bIZ aaa aaa aaa @@ -72328,11 +75950,11 @@ crm cry abI aaa -cqy +bIZ cba cbT bDi -cqy +bIZ aaa aaa aaa @@ -72478,7 +76100,7 @@ aem aem aeW afr -aem +agy agc ago agy @@ -72506,31 +76128,31 @@ aux avv awK axG -axG -axG +ayL +aAi aBd aCi aDo -aBd -aBd +xjK +fhM aFW -aBd -aCg -aiu -aaa -aaa -aaa -aHA -aOn -aPt -coN -aRD -aSv -aTK -aOk -aVO -aWH -aXG +oEA +uoS +uoS +uoS +uoS +uoS +uoS +uoS +oEA +oEA +scp +oEA +oEA +dpa +dTV +aWF +kAa aYG aZE baP @@ -72570,7 +76192,7 @@ bMA bNH bOz bHQ -cqy +bIZ bBW bBW bBW @@ -72585,11 +76207,11 @@ bva crz bva aaa -cqy +bIZ cbb bDi ccO -cqy +bIZ aaa aaa aaa @@ -72735,7 +76357,7 @@ aaa aem aeX afs -aem +agy agd agp agC @@ -72763,31 +76385,31 @@ auA avw awJ axG -axG -axG +ayL +aAi aBd aCj aDp aEm aFm aFn -aBd -aCg -ait -aaa -aaa -aaa -aHz -aOo +oEA +uoS +uoS +uoS +uoS +uoS +uoS +uoS aPt -coN -aRE -aSw -aTL -aOk -aVO +nsy +eDC +tnY +uCS +mal +dTV aWI -aXH +aXK aXH aXH aXH @@ -72827,9 +76449,9 @@ bMB bNI bOz bHQ -cqy -abI +bIZ abI +ouv bBW bTb abI @@ -72848,7 +76470,7 @@ bNK bva bva aaa -aaa +cFB aaa aaa aaa @@ -73026,25 +76648,25 @@ aBe aCk aDq aEn -aFn +aFm aFX -aBd -aCg -ait -aaa -aaa -aaa -aHz -aOn +oEA +uoS +uoS +uoS +uoS +uoS +uoS +uoS aPt -coN -aRF -aSx -aTM -aOk -aVO +uos +xnP +qjx +iPO +pOr +geU aWJ -aXH +aXK aYH aZF baQ @@ -73084,9 +76706,9 @@ bLx bNJ bOz bHQ -cqy +bIZ abI -cqy +rMV cqy bTc cqy @@ -73100,11 +76722,11 @@ crB bva aaa aaa -cqy +bIZ csy -csX -cqX +bQl cqX +xNx ctS aaa aaa @@ -73277,7 +76899,7 @@ ajM ajM atB axI -ayK +ayL aAh aBf aCl @@ -73285,22 +76907,22 @@ aDr aEo aFo aFY -aBd -aCg -aiu -aaa -aaa -aaa -aHA -aOn -aPt -aJE -aOk -aOk -aOk -aOk -aVO -aWG +oEA +uoS +uoS +uoS +rJZ +uoS +uoS +tCP +xOC +jAy +rHA +ffJ +oEA +dpa +dTV +aWF aXI aYI aZG @@ -73343,7 +76965,7 @@ bJb bPq bva bva -cqy +rMV bSo bSq bTX @@ -73361,8 +76983,8 @@ bva bSq bva bva +rnE aaa -aht aaa aaa aaa @@ -73538,28 +77160,28 @@ ayL aAi aBe aCm -aDs +aCk aEp -aFn -aFn -aBd -aHC -aiu -aiu -aiu -aiu -aHz -aOp +aFm +nBw +oEA +uoS +uoS +uoS +uoS +uoS +uoS +uoS aPt aQw -aJE -aJE -aJE +eHI +yfO +hDG aUG aVP -aWK +aWJ aXJ -aYI +fow aZH baS bbV @@ -73600,7 +77222,7 @@ bOA bPr bva bQS -bDi +vmY bSp bTd bPC @@ -73617,15 +77239,15 @@ bXa bRD bWl cdE -cqy -aaa -aht -aaa -aaa -aaa +bIZ +rnE aaa aaa aaa +nge +adR +adR +adR aaa aaa aaa @@ -73769,7 +77391,7 @@ aaa aaa aby abI -abI +sdk ahL aik aiM @@ -73798,23 +77420,23 @@ aCn aDt aEq aFp -aFZ -aGT -aHD -aIJ -aIJ -aIJ -aIJ -aMQ -aOq -aPu +aFn +oEA +uoS +uoS +uoS +uoS +uoS +uoS +uoS +aPt aQx aRG -aRG -aRG +qWM +oEA aUH -aVO -aWK +dTV +aWF aXI aYJ aZI @@ -73857,7 +77479,7 @@ bva bva bva bQT -bDi +vay bSq bDi bSw @@ -73866,23 +77488,23 @@ bva bva bDi bva -oEA -oEA -oEA -oEA -oEA -oEA -oEA -oEA -oEA +bva +bva +bva +bva +bva +bva +bva +bva +bva ukn -ukn -oEA -oEA -aaa -aaa -aaa -aaa +bIZ +bva +bva +aht +aht +aht +aht aaa aaa aaa @@ -74054,24 +77676,24 @@ aBd aCo aCk aEr -aFq aGa -aBd -aCc -aIK -aiu -aiu -aiu -aHz -aOr -aOk -aQy -aRB -aSy -aTN +aCk +oEA +uoS +uoS +uoS +uoS +uoS +uoS +uoS +oEA +oEA +oEA +oEA +oEA aUI -aVO -aWL +aQz +fBt aXK aYK aZJ @@ -74114,34 +77736,34 @@ bJi bHT bQj bPA -bDi +vay bSq bva -bTl +bNK bva bva bWj bWZ bXS -oEA -bZs +bva +bNX +bva cab -cab -cab -cab -cab -cab -cab -cab -cab -bZs -oEA -aaa -aaa -aaa -aaa -aaa -aaa +jPf +oFI +bva +rse +uIn +mIa +qdj +sXi +bva +bBX +bBX +bBX +bBX +aht +adR aaa aaa aaa @@ -74313,23 +77935,23 @@ aBd aBd aBd aBd -aBd -aiu -aiu -aiu +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA +oEA aKH aLu -aHz -aOs -aPv -aQz -aRH -kAy +aLu aRH aUJ aVQ -aOs -aXK +nyB +aXB aXI aZK aXI @@ -74370,35 +77992,35 @@ bGN bGN bPs bva -bva -bDi -bSq -bsn -bva -bva -bVt bWk -bXa -bXT -ukn -bZt -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs +nLl +nfz +npE +oZW +bDi +bDi +bSw +bSw +bSw +bva +bOB +bva +kRq +kRq +kRq +bva +stQ +boq +boq +boq cgp -ukn -aaa -aaa -aaa -aaa -aaa -aaa +dNr +bBX +bDi +bDi +bBX +aht +nge aaa aaa aaa @@ -74540,7 +78162,7 @@ abI agP agQ agQ -cnS +agP ahL ahL ahL @@ -74584,8 +78206,8 @@ aAL aAL aTO aUK +xvO aCZ -aAL aGU aAL aZL @@ -74620,42 +78242,42 @@ bEn bDi bDi bJj -bDi -bDi -bDi -bNK -bOB +npE +npE +npE +nSj +cXW bPt -boq +qyF bQU -bRD -bSr -bTe -bRD -bRD -bRD -bWl -bDi +bva +bva +bva +lGv +bva +bva +bva +bva bSw bYF -bZt -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -cgp -ukn -aaa -aaa -aaa -aaa -aaa -aaa +bSw +bva +bva +gkX +bva +bva +pVD +kDY +fmh +rSH +bSo +gHZ +bBX +wfO +bDi +bBX +aht +nge aaa aaa aaa @@ -74841,7 +78463,7 @@ aPR aPR aPR aUL -aEa +wun aEa aHm aEa @@ -74856,7 +78478,7 @@ bgZ bhK aIe biP -bjM +bjL bkX bmh bjL @@ -74876,7 +78498,7 @@ bEr bFH bEr bEr -bEr +pQw bEr bEr bEr @@ -74884,35 +78506,35 @@ bEr bEr bPu bva -bOG -bva -bva +rXT +bFZ +sUP bTf -bva -bva +vGg +wdx bVu -bNX +mzU +rzp +kpK bDi -bDi -ukn bZt -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -cgp -ukn -aaa -aaa -aaa -aaa -aaa -aaa +bva +oAW +bDi +pYC +bva +mHy +wzb +nYb +gVc +uiP +xCV +ehM +bDi +dWk +bBX +aht +adR aaa aaa aaa @@ -75066,7 +78688,7 @@ amn alC alE aou -cCN +apb agP aqx arq @@ -75113,7 +78735,7 @@ bha bhL aHN bjj -bjN +xQc bkY bmi bjN @@ -75146,30 +78768,30 @@ bva bSs bTg bUa -bva +jYh bVv -bSw -bPC +bva +nQc bXU -oEA +bDi bZt bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -cgp -oEA -aaa -aaa -aaa -aaa -aaa -aaa +kRq +uMt +bME +fef +fmh +bNU +nYb +dSr +fmh +dJm +bDi +wfO +weL +bBX +aht +adR aaa aaa aaa @@ -75342,7 +78964,7 @@ aBi aBi aBi aBi -aHH +hqo aDZ aJH aKJ @@ -75390,7 +79012,7 @@ bvc bFJ bGP bHV -bJl +sEN bKo bLA bMG @@ -75402,31 +79024,31 @@ bQV bRE bSt bTh -bFF -bva +rJg +dAG bVw -bDi -bDi +bva +iEQ bXV -ukn -bZt -bZs -bZs -bZs -bZs -fmr -bZs -bZs -bZs -bZs -cgp -oEA -aaa -aaa -aaa -aaa -aaa -aaa +bDi +bNK +bva +bME +bDi +ksf +bva +bDi +ohR +nYb +ohR +reH +xCV +xaO +sww +bDi +bBX +aht +eNF aaa aaa aaa @@ -75627,7 +79249,7 @@ bhc aAL big biS -bjN +bjL bla bmk bjN @@ -75655,35 +79277,35 @@ bKn bEr bPx bva -bOG +bOI +bFZ +bFZ +bFZ +lms bva bva bva bva -bva -bVx -bPC -bXb +tvP bDi -oEA -bZt -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -cgp -oEA -aaa -aaa -aaa -aaa -aaa -aaa +wRk +bva +bva +olc +bva +bva +rhr +dym +bDi +ycx +lBP +fvb +bBX +bDi +wfO +bBX +aht +eNF aaa aaa aaa @@ -75885,8 +79507,8 @@ aDZ aHN biT bjL -bjN -bjN +kSO +bjL bjL boz bpB @@ -75912,35 +79534,35 @@ bNN bOD bPx bIZ -bOG +bCz bva bSu bTi bUb bva bVy +ohR +hVx +oWw bDi -bXc +bNS +bva +klo +bSv +new +bva +dye +nVU bDi -ukn -bZt -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -cgp -ukn -aaa -aaa -aaa -aaa -aaa -aaa +qBv +bDi +pBD +bBX +bDi +fLG +bBX +aht +nge aaa aaa aaa @@ -76140,11 +79762,11 @@ bgi aJI aDZ aHN -biU -bjO +bjL +bjL blb bml -bnv +bjL bnv bpC bra @@ -76169,7 +79791,7 @@ bNO bOC bPv bIZ -bOG +bCz bRF bDi bPC @@ -76178,26 +79800,26 @@ bva bPA bSw bSw +nNJ bDi -bVq -bZt -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -cgp -ukn -aaa -aaa -aaa -aaa -aaa -aaa +nWP +bva +gjp +lHX +nDo +bva +sij +bDi +ydf +ihj +ssx +bva +bBX +bBX +bBX +bBX +aht +eNF aaa aaa aaa @@ -76396,11 +80018,11 @@ aVS aRL aJI aDZ -bih -biV +aHN +bjL bjP -bjP -bmm +blb +bjL bnx boA bpD @@ -76426,33 +80048,33 @@ bKn bEr bPx bva -bOG +bCz bNK bSv bTj bDi bva +tRc bVz -bWm -bSw -bNX -ukn -bZt -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -bZs -cgp -ukn -aaa -aaa -aaa -aaa +ftp +lQX +bDi +bva +bva +bva +bva +bva +bva +bva +bva +bva +bIZ +bva +bva +aht +aht +aht +aht aaa aaa aaa @@ -76605,7 +80227,7 @@ agP cCS alH ams -akS +alH anP agP apg @@ -76653,12 +80275,12 @@ bfj bdm aJI aDZ -aHN +bih biW -bjQ -bjQ +wUf +wUf bmn -bjQ +iGJ bjQ bpE brc @@ -76691,21 +80313,21 @@ bUc bva bva bva +bva +nNJ +bDi +bOB +bSw +bDi bDi -cBj -oEA -bZs cad -cad -cad -cad -cad -cad -cad -cad -cad -bZs -oEA +eYM +bQl +mMc +mZE +aaa +aaa +eNF aaa aaa aaa @@ -76914,7 +80536,7 @@ bii biX bjR blc -bmo +biX bny boB bpF @@ -76934,13 +80556,13 @@ bGU bIb bJn bKs -bLD +bKs bMI bNQ bOC bPz bIZ -bmf +pwj bva bSx bTk @@ -76948,21 +80570,21 @@ bUd bva bDi bDi -bNK +wIv +qOH +fpT +fpT +fpT +wNq bva -oEA -oEA -oEA -oEA -oEA -oEA -oEA -oEA -oEA -ukn -ukn -oEA -oEA +gMO +kCc +bva +hTr +mZE +aaa +aaa +eNF aaa aaa aaa @@ -77139,7 +80761,7 @@ vTL aDA aEv aFu -aFu +lnn aGZ aHM aIQ @@ -77169,7 +80791,7 @@ aJI aDZ bij biY -biY +rvH biY biY biY @@ -77191,39 +80813,39 @@ bFO bFO bFO bKt -bGW +qar bGW bNR bAW bva bva -bmf +pwj bva bva bva bva bva -bDi +jXV bva bva -bva -bYG -bZw -bDi -bDi -cbU -bva -aaa -aht -aaa -aht -aaa -aht -aaa -aaa -aaa -aaa -aaa +qYi +bBX +bBX +bBX +uUQ +bBX +fdS +xTi +bXk +jlb +bXk +bXk +bXk +bXk +bXk +bXk +bXk +bXk aaa aaa aaa @@ -77410,7 +81032,7 @@ aQJ aRL aSD aTT -eIh +aTV aRL aWR aXT @@ -77439,7 +81061,7 @@ bvj bwF byo bzP -bAZ +bCj bCi bDr bEv @@ -77461,26 +81083,26 @@ bKH bKH bKH bKH -bKH -bKH -bXW -bmf -bRF -bNK +iyg +lIr +bQY bXk +mbe +scz +kSF +kDJ +oYj +uMo bXk +mci +cbX +ceq +ceq +ceq +mhl +ceq +ceq bXk -bXk -bXk -bXk -bXk -aaa -aby -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -77692,12 +81314,12 @@ bpI biY bsC buc -bvj +jsj bwG byp bzQ -bBa -bCj +bzQ +ioj bsA bEw bkh @@ -77709,34 +81331,35 @@ bEr bEr bEr bOF -bKH -bKH -bQY +bDz +bDz +bCD bDi -bDi -bTl bUe -bNX -bVA -bRF -bHT -bXX -bYH +bTl +bBX +bBX +bBX +bBX +qXq +bBX +bXk bZx -bDi -bXk -cbV -ccQ +eQN +tcY +cam +cam cdI -ccQ -ccQ +cri +eVW +cbX +wKK +wKK +wKK +wKK +wKK +wKK bXk -aht -aby -aaa -aaa -aaa -aaa aaa aaa aaa @@ -77812,7 +81435,6 @@ aaa aaa aaa aaa -aaa "} (106,1,1) = {" aaa @@ -77912,7 +81534,7 @@ awR awR awR aAN -jYe +gNG aIO aJM aKQ @@ -77951,10 +81573,10 @@ bsC bud bvk bwH -byo +bua +bzR bzR bBb -bCk bDr bEx bkh @@ -77965,7 +81587,7 @@ bKv bLF bjc bNS -bOG +bCz bPB bPB bPB @@ -77973,28 +81595,29 @@ bPB bPB bPB bPB -bOB -bva -bva +uwX +uMe +lTC bXd -bDi -bOG -bQj -bDi +cif bXk +vRm +bpL +fQf cbW -ccR -cdJ -ceq -ceq +cbd +cdI +cri +eVW +cbX +cBQ +cBQ +cBQ +cBQ +cBQ +cBQ bXk aaa -aby -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -78069,7 +81692,6 @@ aaa aaa aaa aaa -aaa "} (107,1,1) = {" aaa @@ -78175,7 +81797,7 @@ aJL aKR aLF aNd -aKQ +wBg aLL aQM aRL @@ -78183,7 +81805,7 @@ aSG aTW aUW aRL -aRL +kEW aXW aXS aZX @@ -78206,11 +81828,11 @@ bpK biY bsD buc -bvj +kQy bwI -byq +byo bzS -bBb +eFj bCl bsA bEy @@ -78222,7 +81844,7 @@ bKw bLG bjc bNT -bOG +bCz bPB bQm bQZ @@ -78231,26 +81853,27 @@ bQZ bTm bPB bUG -bVB -bQj +uMe +hzc bXe -bSw -bOG -bNK -bDi +krU bXk -cbX -cbX -cbX -ceq -ceq +kyv +lWJ +iAx +bZA +cam +ous +bXk +tuL +ccR +cbV +cbV +ccQ +ccQ +ccQ +ccQ bXk -aaa -aht -aaa -aaa -aaa -aaa aaa aaa aaa @@ -78326,7 +81949,6 @@ aaa aaa aaa aaa -aaa "} (108,1,1) = {" aaa @@ -78444,7 +82066,7 @@ aRN aXX aXS aXS -bbe +pWT bcb bdn bel @@ -78463,9 +82085,9 @@ bpH biY bsE bue -bvj -bwI -byo +tix +cSJ +bsA bzT bBc bCm @@ -78479,7 +82101,7 @@ bKx bLH bjc bNU -bOG +bCz bPB bQn cCP @@ -78487,28 +82109,29 @@ cCF cCH bTn bPB -bDi -bVC -bQj -bPA -bDi -bOG -bva -bDi +uwX +wMM +fzu +wiB +reV bXk -cBQ -cbX +sKa +iFI +oUa +vjd +oAw cdK bXk +jlb bXk bXk bXk bXk -abI -abI -abI -abI -abI +bXk +bXk +bXk +bXk +aht abI abI abI @@ -78583,7 +82206,6 @@ aaa aaa aaa aaa -aaa "} (109,1,1) = {" aaa @@ -78700,8 +82322,8 @@ aVW aRN aXY aXS -aZY -bbe +aXS +pWT bcc aDZ bem @@ -78720,8 +82342,8 @@ bpM biY bsA bua -bvi -bwJ +rar +bwE bsA bzU bBd @@ -78736,7 +82358,7 @@ bKy bLI bjc bjc -bOG +bCz bPB bQo cCF @@ -78749,13 +82371,13 @@ bUH bUH bUH bUH -bOG +bXk bTE cae -bXk -cBQ -cbX -cdK +eta +mmv +cae +tPm bXk ceT cfr @@ -78764,10 +82386,11 @@ cgr cgP cgP cgP +cgP +cgP cig cgP -cgP -cgP +cig cgP cig cgP @@ -78791,14 +82414,14 @@ cgP clC clH clP -clW +kFm clw cmf cmm cmu clG -cmC -cmI +cmB +xFl cmL cmR cmV @@ -78840,7 +82463,6 @@ aaa aaa aaa aaa -aaa "} (110,1,1) = {" aaa @@ -78977,7 +82599,7 @@ bpN bre bsF bkh -bvl +jUV bwK byr bzV @@ -78993,7 +82615,7 @@ bGZ bLJ bMK bjc -bOG +bCz bPB bQp cCH @@ -79007,55 +82629,56 @@ bWn bXf bUH bYI -bXk +jrG caf -bXk +uun cbY -cbY -bXk +cdc +gnq bXk ceU -cam +eVy cfP bXk bXk bXk -bXk -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI -abI +tue +pjH +pjH +pjH +roc +mVM +mVM +mVM +mVM +mVM +mVM +mVM +mVM +mVM +mVM +mVM +mVM +mVM +mVM +mVM +tfw +pjH +pjH +uHG clw clw clw -clw -clI clQ clX +rsZ clw cmg cmn cmv clG -cmD -cmJ +cmG +gpI cmM cmK cmW @@ -79097,7 +82720,6 @@ aaa aaa aaa aaa -aaa "} (111,1,1) = {" aaa @@ -79213,10 +82835,10 @@ aSK aSK aRN aRN -aRN +bgk +gam aZZ -bbf -cCD +aRN aRN beo aRN @@ -79250,7 +82872,7 @@ bKz bnH boN cBL -bOG +bCz bPB bQq bRb @@ -79265,27 +82887,28 @@ bXg bXY bYJ bZy -cag +bZy cbc cbZ -cbZ +bZy cdL cer ceV cfs -bZA +dWp cgs cgQ chv -ahi -abI -abI -abI +mKk +aht +aaa +aht +aht aaa aaa -aaa -aaa -abI +aht +aht +aaa aaa aaa aaa @@ -79299,7 +82922,6 @@ aaa aaa aaa aaa -ahi clz clA clD @@ -79308,11 +82930,12 @@ clR clY cmd cmh +uzn cmo clG clG -cmE -cmK +clG +gpI cmN cmK cmK @@ -79354,7 +82977,6 @@ aaa aaa aaa aaa -aaa "} (112,1,1) = {" aaa @@ -79507,7 +83129,7 @@ bKA bLK bMM bjc -bOG +bCz bPB bPB bRc @@ -79524,25 +83146,25 @@ bYK bZz cah cbd -cam +bZA cam cdM -bXk -bXk -bXk +bXq +xmE +ymb cfQ bXk +qWG bXk -bXk -bXk -bXk -cbj -bXk -bXk -bXk -bXk -bXk -bXk +mVM +aht +aaa +aht +aht +aaa +aaa +aht +aht aaa aaa aaa @@ -79555,21 +83177,22 @@ aaa aaa aaa aaa -clu -clw -clw +aaa +emV +iBJ +clB +hQz clB -clw -clK clS clZ +tlw cme -cmi +nMG cmp cmw -cmA cmF -cmK +opz +qYS cmK cmK cmX @@ -79611,7 +83234,6 @@ aaa aaa aaa aaa -aaa "} (113,1,1) = {" aaa @@ -79764,7 +83386,7 @@ bIj bFU bFU bjc -bOG +bCz bPC bPB bRd @@ -79783,23 +83405,23 @@ cai cbe cca cam -cdN +qtO bXk -ceW -bXk -cfR -cgt -cgR -cgt -chO +jlb bXk bXk bXk -chR -cgt -cjT -ckq bXk +bXk +bXk +cbj +bXk +cbj +bXk +bXk +bXk +bXk +ckJ aaa aaa aaa @@ -79813,13 +83435,14 @@ aaa aaa aaa aaa -cCG +aaa +ouv clw clw clw -clL clT cma +clL clw cmj cmq @@ -79868,7 +83491,6 @@ aaa aaa aaa aaa -aaa "} (114,1,1) = {" aaa @@ -80021,7 +83643,7 @@ bKB bKB bFU bNV -bOG +bCz bPD bPB bRe @@ -80041,22 +83663,22 @@ cbf ccb ccS cdO -ces -ceX -cft -cfS -cfV -cgS -cfV -chP -cih -cir -cih -chS -cfV -cgS -cfV bXk +ceX +iyJ +cfS +fFv +fFv +fFv +fFv +fFv +cir +fFv +fFv +fFv +fFv +fFv +bTE aaa aaa aaa @@ -80070,19 +83692,20 @@ aaa aaa aaa aaa -cly -acN -acN +aaa +rnr clE +xnm clM clU cmb +mxy clw cmk cmr cmx clG -cmG +cmH cmK cmP cmK @@ -80125,7 +83748,6 @@ aaa aaa aaa aaa -aaa "} (115,1,1) = {" aaa @@ -80295,25 +83917,26 @@ bYN bZA cak cbg -cca +bYC cam cdP -bXk -bTE -bXk +rYY +mwG +nAs cfT -cfV -cgT -cfV -cfV -cfV -cfV -cfV -cfV -cfV -cgT -ckr -bXk +fFv +fFv +qbp +fFv +fFv +dMG +fFv +fFv +qbp +fFv +fFv +bTE +aaa aaa aaa aaa @@ -80327,19 +83950,19 @@ aaa aaa aaa aaa -abI -abI abI clw clN +qxq clV cmc +mDW clw cml cms cmy clG -cmH +cmB cmK cmQ cmU @@ -80382,7 +84005,6 @@ aaa aaa aaa aaa -aaa "} (116,1,1) = {" aaa @@ -80535,7 +84157,7 @@ bKD bKD bFU bNX -bOG +bCz bPE bQs bRg @@ -80555,21 +84177,21 @@ cbh cam cam cdQ -cet -cCI -cfV +bXk +bTE +bXk cfU -cgu -cgU -chw -cgU -chw -cgU -chw -cgU -cjs -cfV -cfV +tIS +iCs +rPg +cBR +cBR +knw +cBR +cBR +uVW +lRY +ckr bTE aaa aaa @@ -80584,9 +84206,10 @@ aaa aaa aaa aaa +aaa abI -abI -abI +clw +clw clw clw clw @@ -80639,7 +84262,6 @@ aaa aaa aaa aaa -aaa "} (117,1,1) = {" aaa @@ -80751,8 +84373,8 @@ aPE aPE aPE aPE -aPE -aWc +qEN +bdv aWY aRN aYU @@ -80792,9 +84414,9 @@ bFU bFU bFU bFU -bOI +hZB bPF -bQt +bTu bRh bRM bSF @@ -80811,20 +84433,20 @@ cam cam cam cam -cdQ +orZ +qFu cet -cCI +ulY cfV +cgu +cgU +cgU +chw +chw +chw +chw +cjs cfV -cgv -cfV -chx -cfV -chx -cfV -chx -cfV -chx cfV cfV bTE @@ -80846,6 +84468,7 @@ aaa aaa aaa aaa +aaa abI aaa aaa @@ -80896,7 +84519,6 @@ aaa aaa aaa aaa -aaa "} (118,1,1) = {" aaa @@ -81069,20 +84691,20 @@ cbi ccc ccV cdR +qFu cet -cCI +ulY cfV -cfU cgv +cfV +sWj +uaP cgV -bBW -bBW -cgV -iEY -aaa -bBW -bBW +uaP cgV +uaP +ciG +cfV cfV bTE abI @@ -81101,6 +84723,7 @@ aaa aaa aaa aaa +aaa adR adR adR @@ -81153,7 +84776,6 @@ aaa aaa aaa aaa -aaa "} (119,1,1) = {" aaa @@ -81267,7 +84889,7 @@ aSO aUd aVd aWe -aXa +aXb aRN aYX bad @@ -81325,21 +84947,21 @@ cao cbj bXk ccW -bXk -bXk -cfa +wcs +iyJ cfa cfa +twv cgv -bBW -bBW -bBW -iEY -fKW -aaa -bBW -bBW -bBW +sWj +dnS +uoq +fyO +mpd +fyO +uoq +uRk +ciG cfV bTE abI @@ -81360,6 +84982,7 @@ aaa aaa aaa aaa +aaa abI aaa aaa @@ -81410,7 +85033,6 @@ aaa aaa aaa aaa -aaa "} (120,1,1) = {" aaa @@ -81586,18 +85208,18 @@ cdS ceu cfb cfu -cfa +tlN cgv -bBW -bBW -aaa -aaa -fKW -aaa -aaa -bBW -bBW -cfV +cCI +uoq +fyO +fyO +mpd +fyO +fyO +uoq +hQC +mpd bTE abI aaa @@ -81843,18 +85465,18 @@ cdT cev cfc cfv -cfa +tlN cgv -aaa -aaa -aaa -cii -cis +cCI +fyO +fyO +sWj +cgT ciG -aaa -iEY -cgV -cfV +fyO +fyO +hQC +mpd bTE abI aaa @@ -82102,16 +85724,16 @@ cfd cfw cfW cgw -iEY -fKW -fKW -cij +cCI +mpd +mpd +cCI cit ciH -fKW -fKW -iEY -cfV +mpd +mpd +hQC +sYp bTE abI aaa @@ -82353,22 +85975,22 @@ cdN ccW ceY cda -cdV +cbX cex cfe cfx -cfa +tlN cgv -cgV -iEY -aaa -cik -ciu +cCI +fyO +fyO +fyF +cgY ciI -aaa -aaa -aaa -cfV +fyO +fyO +hQC +mpd bTE aaa aaa @@ -82575,10 +86197,10 @@ bpV brm bsN bun -bpY -bpV +mcf +nnf byz -bpV +ooh bpY bCB bDz @@ -82614,18 +86236,18 @@ cdW cey cey cfy -cfa +tlN cgv -bBW -bBW -aaa -aaa -fKW -aaa -aaa -bBW -bBW -cfV +cCI +uoq +fyO +fyO +mpd +fyO +fyO +uoq +hQC +mpd bTE aaa aaa @@ -82830,14 +86452,14 @@ bmA bjd bpY bpY -bpY -bpY -bpY +cwP +pSc +gGA bwW byA bAi -bva -bva +bpY +pwj bva bva bva @@ -82869,19 +86491,19 @@ bXk ccW bXk bXk -cfa -cfa -cfa +cet +cet +tlN cgv -bBW -bBW -aaa -aaa -fKW -iEY -aaa -bBW -bBW +fyF +prQ +fyO +fyO +mpd +fyO +fyO +dZj +ciI cfV bTE aaa @@ -83080,29 +86702,29 @@ bhd cpJ cpP aBI -bkj +aEY bls +aBI +aBI bmB -bmB -bmB -bpZ -brn -bsO -brn +bva +bsn +bva +bva bvu -bwX -byB -bAj -bBm -bBm -bBm -bEN -bBm -bHf -bBm +bva +bva +bva +bva +pwj +hVx +xDj +bva +jCv +bOK bEN bKI -bBm +bEN bHf bOa bOK @@ -83125,20 +86747,20 @@ cbl cch cdc cdX +fwR cet -cCI -cfV -cfU +ulY +oGm cgv -cgV -bBW -aaa -aaa -iEY -cgV -bBW -bBW -cgV +cfV +fyF +cZt +wpI +cZt +wpI +cZt +ciI +cfV cfV bTE abI @@ -83337,24 +86959,24 @@ aJZ bhO bio aDZ -bkk -blt -bmC -bmC -bmC -bmC -bmC -bsP -bmC -bmC -bwY -byC -bAk -byC -byC -byC -bEO -byC +aGV +aDZ +aDZ +aDZ +jcT +xje +tTl +tTl +tTl +gkS +tTl +tTl +tTl +tTl +dgg +phJ +phJ +xje bAk bIt bJB @@ -83381,21 +87003,21 @@ cam cam cam cam -cdQ +cdI +eWi cet -cCI +ulY +oGm +cgx +cgU +cgU +cBS +cBS +cBS +cBS +cjt cfV cfV -cgv -cfV -chz -cfV -chz -cfV -chz -cfV -chz -cfV cfV bTE abI @@ -83593,24 +87215,24 @@ bgt aJI cpK cpQ -aAL -bkl +aDZ +aGV blu -bmD -bmD -bmD -bqa +aDZ +aDZ +eeF +bBX +bBX +bBX bro -bro -bro -bro -bwZ -bmD -bAl -bBn -bCC -bCC -bEP +bBX +bBX +bBX +bBX +bva +fdQ +npE +npE bFZ bAl bIu @@ -83634,26 +87256,26 @@ mCe bYl bYO bZC -cal +hYm cbm cci cam -cdQ -cet -cCI -cfV -cfU -cgx -cgU +ogX +bXk +bXk +bXk +jBn +tIS +meF chA -cgU -chA -cgU -chA -cgU -cjt -cfV -cfV +woh +woh +qQr +woh +woh +liR +phg +cks bTE abI aaa @@ -83819,7 +87441,7 @@ aAG aBA aCQ aDS -aCS +pHo aAH aGu aHh @@ -83851,28 +87473,28 @@ bhg cpL cpR bjl -bjs -bjo -bjq +bGa +bKM +blt cqh -bjo -cCl -cCl -cCl -cCl +bKM cCl +pYw +gFo +cSK +duF bxa byD bAm -bBo +dhz bCD bDA bEQ -bGa +jSA bHg bIv bJD -bGa +bBo bBo bMU bmC @@ -83896,22 +87518,22 @@ cbn ccj cam cdY -bXk -bXk -bXk +rYY +cff +nAs cfX -cfV -cgY -cfV -cfV -cfV -cfV -cfV -cfV -cfV -cgY -cks -bXk +fFv +fFv +kWQ +fFv +fFv +dMG +fFv +fFv +kWQ +fFv +fFv +bTE abI aaa aaa @@ -84108,26 +87730,26 @@ aJI cpM cpS cpU -bjo +bKM blv -bkn +bmC cqi boP -cCl +bqb brp -bsQ -buo -cCl -bxb +byF +cCt +byF +cCt byE -bAn +bBp bBp bBp bBp bBp bBp bvD -bIw +bIv cqz bKM bLR @@ -84153,22 +87775,22 @@ cbo cck cdf cdZ -cez -cff -cfz -cfY -cfV -cgZ -cfV -chR -cih -civ -cih -chO -cfV -cgZ -cfV bXk +cfg +bXk +cfY +fFv +fFv +fFv +fFv +fFv +civ +fFv +fFv +fFv +fFv +fFv +bTE abI abI abI @@ -84365,18 +87987,18 @@ aJI aDZ aHN bjn -bjo +bKM blw -bkn +bmC cqi boQ cCl brq cCt cCt -bvv +cCt bxc -byF +nIU bAo bBq bCE @@ -84384,7 +88006,7 @@ bDB bER bBp bHh -bIw +bIv cqz bBo bLS @@ -84409,23 +88031,23 @@ cam cbp cci cam -cdN -bXk -cfg -bXk -cfZ -cgt -cha -cgt -chS +cdI bXk bXk bXk -chP -cgt -cjU -ckq bXk +bXk +bXk +bXk +bXk +cbj +bXk +cbj +bXk +bXk +bXk +bXk +ckJ abI aaa aaa @@ -84621,10 +88243,10 @@ bgx aJI aDZ aHN -bjo -bjt +bKM +bBo blx -bkn +bmC bnI boR cCl @@ -84641,7 +88263,7 @@ bDC bES bBp bHi -bIw +bIv cqz bBo bLT @@ -84660,29 +88282,29 @@ bVU bWG bXq bYo -bZb +cah bZI cah cbq cam cam -cav +vXt bXk -bXk -bXk -bXk -bXk -bXk -bXk -bXk -bXk -cbj -bXk -bXk -bXk -bXk -bXk -ckJ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa abI aaa aaa @@ -84881,7 +88503,7 @@ bih bjp bkm bly -bmG +bmD bJI boS bqb @@ -84919,11 +88541,11 @@ bXk bTE bZc bZJ -ccl -cbr cCU cCV ceb +jPo +ory bXk aaa aaa @@ -84931,15 +88553,15 @@ aaa aaa aaa aaa -abI aaa aaa aaa -abI aaa -abI -abI -abI +aaa +aaa +aaa +aaa +aaa abI aaa aaa @@ -85086,7 +88708,7 @@ aaa aaa aaa aaa -aht +aaa aaa aaa abI @@ -85133,11 +88755,11 @@ aZe bdy bdo aJI -aDZ +wVC aHN -bjq -bkn -bkn +blt +bmC +bmC bmH byK boS @@ -85155,7 +88777,7 @@ bDE bEU bBp bHk -bIw +bIv bJE bJN bLV @@ -85188,11 +88810,11 @@ aaa aaa aaa aaa -abI aaa aaa aaa -abI +aaa +aaa aaa aaa aaa @@ -85343,7 +88965,7 @@ aaa aaa aaa aaa -aht +aaa aaa aaa abI @@ -85412,7 +89034,7 @@ bDF bEV bBp bHl -bIw +bIv bJF bKO bLW @@ -85600,7 +89222,7 @@ aaa aaa aaa aaa -aht +aaa aaa aaa abI @@ -85649,7 +89271,7 @@ bgz aJI aDZ bip -bjo +bKM bkp blA bmJ @@ -85662,11 +89284,11 @@ cCl bqb bxh bqb -cCl -bBp -bCJ -upI -bBp +fRs +fRs +bAo +bAo +fRs bBp bHm bIy @@ -85857,7 +89479,7 @@ aaa aaa aaa aaa -aht +aaa aaa aaa abI @@ -85906,7 +89528,7 @@ aDZ aJI aDZ biq -bjs +bGa bkq blB bkn @@ -85925,7 +89547,7 @@ bCK bDG bEW bAt -bvD +bHg cqw cqD bKO @@ -86114,10 +89736,10 @@ aaa aaa aaa aaa -aht -cBU -cBU +aaa cBU +lcZ +lcZ apT apT apT @@ -86163,19 +89785,19 @@ bgA bhe aDZ bip -bjo +bKM bkr blC cqe bnN -boW +byC bqe -boW +byC cql -boW +byC bvA bxj -byK +hiY bAt bBx bCL @@ -86371,8 +89993,8 @@ aaa aaa aaa aaa -aht -cBU +aaa +lcZ aoA apq apU @@ -86420,7 +90042,7 @@ aDZ bhh bhM bir -bjt +bBo bks blD bko @@ -86440,7 +90062,7 @@ bDI bEY bGc bHo -bIz +bRX cqE bJN bLY @@ -86628,7 +90250,7 @@ aaa aaa aaa aaa -aht +aaa cBU aoB apr @@ -86874,19 +90496,19 @@ aaa aaa aaa aaa +aiS +aiT +aiS +aiT +aiS +aiT +aiS +aiT +aiS +aiT +aiS aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aht -cBU +lcZ aoC aps apW @@ -87131,21 +90753,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aiS aiT -aiS +plA +oMN +akf +gxe +akf +eqD +oMN +vlF +tvj aiT -aiS aaa -aaa -aaa -aht -cBU -cBU cBU +lcZ +lcZ cBU cBU asa @@ -87388,17 +91010,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aiT +aiS +qPB +iqc +ngp cBr cBs -cBu -aiT -aaa -aaa -aaa +alb +gna +klV +xbJ +aiS aaa aaa aaa @@ -87417,12 +91039,12 @@ aaa aaa aaa aaa -lKs -pRP -fYp -eDm -uYl -eAP +aaa +aaa +aaa +awd +aHN +aIU aJI aLe aMe @@ -87644,18 +91266,18 @@ aaa aaa aaa aaa -aaa aiS aiS aiS aiS -akf -akf +epJ +uaC cBv -aiS -aaa -aaa -aaa +cBw +gNv +nnh +sqh +aiT aaa aaa aaa @@ -87674,11 +91296,11 @@ aaa aaa aaa aaa -lKs -rAU -oif -lZH -sUS +aaa +aaa +aaa +awd +aHN aIU aJH aLe @@ -87698,7 +91320,7 @@ aPY bau aLf aFi -bdA +aFi beI beI bgD @@ -87901,14 +91523,17 @@ aaa aaa aaa aaa -aaa aiT cBk -fIW +jhD cBo alQ alb cBw +noC +aiS +aiS +aiS aiS aiS aiT @@ -87918,9 +91543,6 @@ aiS aiS aiS aiS -aiS -aiS -aiS apX avd avd @@ -87931,16 +91553,16 @@ apX aBL aBL apX -lKs -sTR -inD -lKs +aET +rYC +aET +aET aHN aIU aJI lAs lAs -aNG +iKb aOR iKb lAs @@ -87976,13 +91598,13 @@ bvH bxq byP bAy -bjt +bBo bCO -bjt +bBo bCO -bjt +bBo bCO -bjt +bBo bJN bKS bMe @@ -88158,19 +91780,19 @@ aaa aaa aaa aaa -aaa aiU -ajv +jHP aju ajt alQ +mnG alb -alb +tap aiS anY apt +sbk aiS -cBz alP cBB apu @@ -88188,9 +91810,9 @@ apX aBM aDb apX -aET -aET -aET +oFo +jOB +qbZ aET aHN aIU @@ -88232,7 +91854,7 @@ bkt bvI bxr byQ -bAz +bBo aaa aht aht @@ -88415,21 +92037,21 @@ aaa aaa aaa aaa -aaa aiT -aju +kkk akh alc alR amF alb +alb anm ajv ajv aju +ajv cBA aiS -aiS akn apX apX @@ -88445,11 +92067,11 @@ apX aBN aDc apX -coq -cor -cow aET -aHN +cor +aET +aET +hFy aJh bhe lAs @@ -88672,14 +92294,14 @@ aaa aaa aaa aaa -aaa aiT cBl cBm cBp alS amG -alb +mnG +cPO aiS aiS aiS @@ -88721,9 +92343,9 @@ aUo aVs aWv aLf -aYt +aPW aZl -bay +aPW aLf aLf bdC @@ -88929,7 +92551,6 @@ aaa aaa aaa aaa -aaa aiS aiS akg @@ -88938,9 +92559,10 @@ aiS akg aiS aiS +aiS aob +eaw ajv -aoD ajv cnX aiS @@ -88959,8 +92581,8 @@ apX atf aDe apX -aEV aFF +vuP aGB aET aHN @@ -89186,13 +92808,13 @@ aaa aaa aaa aaa -aaa -aht aiS +wMF cBn cBq ajv ajv +iEU aiS akj ale @@ -89217,7 +92839,7 @@ aBP com apX aET -aET +lKL aET aET aHN @@ -89443,14 +93065,14 @@ aaa aaa aaa aaa -aaa -aaa +aiS aiS aiS aiT aiT aiS aiS +aiS cBx aiS aiS @@ -89474,7 +93096,7 @@ aBQ con cop aEW -cos +kIO aGC cos coy @@ -89761,7 +93383,7 @@ bcz bhq aNR bix -aFi +ygZ bkx blM bmU @@ -90284,7 +93906,7 @@ bpd bqo brG btg -buz +fjs bvQ bxz byY @@ -90294,7 +93916,7 @@ bCT bDR bCT bGj -bHx +buz abI bJP bLb @@ -90503,7 +94125,7 @@ aDi aEd aEZ aEZ -aGE +aEZ aEd aEd aJn @@ -90549,9 +94171,9 @@ bAD bBI bCU bDS -bFe +bwb bGk -bHx +buz abI bJP bLc @@ -90794,13 +94416,13 @@ bkA blR bmX bnX -bpf +eSL bqq -brI +bpf bth -buz +wBb bvS -bxB +bwa bza bAE bBJ @@ -90808,7 +94430,7 @@ bBJ bDT bFf bGl -bHx +buz abI bJP bLd @@ -91007,12 +94629,12 @@ apX apX apX avl -awv -avk +fIu +dbi aIh azA -avk -avk +dbi +dbi aDk aEd aFb @@ -91053,9 +94675,9 @@ bmY bnY bpg bqr -brJ +bqs bti -bod +wBb bvT bxC bzb @@ -91309,10 +94931,10 @@ bjw bjw bjw bph +eYr bqs brJ -btj -bod +wlK bvU bxD bzc @@ -91320,7 +94942,7 @@ bAF bBK bCW bDV -bFg +bFh bGm bHy aaa @@ -91521,7 +95143,7 @@ aiS atm aun atn -awx +awz axw ayu azC @@ -91559,33 +95181,33 @@ bfF bgL bht bbI -aTx -bjw +biC +pdW bjw blT bmZ bnZ bpi +edl bqs -brJ btk buB -brR -bxE -bnj +eNq +eNq +urP bAF bBL bCW bDW -bFh +kmn bGn bHy aaa +aht aaa +aht aaa -aaa -aaa -aaa +aht aaa aaa aaa @@ -91816,33 +95438,33 @@ bfG bgM bhu bbI -biB -bcz -bkC +aFi +aTx +bjw blU bna -boa -bpj +bqs +bqs bqt brK btl -bod +dkR bvV -bxF +cxt bzd -bAF +wnJ bBM bCX bDX bFi bGo bHy -abI -aaa -aaa aaa +aby aaa +aby aaa +aby aaa aaa bzy @@ -92035,7 +95657,7 @@ asl aiS aup atn -awz +awA axx ayv azD @@ -92047,7 +95669,7 @@ aFe aFI aGF aHq -aIm +aIl aEd aKk aLh @@ -92073,33 +95695,33 @@ bfH bfH bhv bbI -aTx +aEj bjx bjw blV bnb -bob -bpk bqs +bqs +bqt brL -btm +btl buC bvW bxG bze -bAF +vTN +bBN bBN -bCY bDY bFj bGp bHy abI -aaa -aaa -aaa -aaa -aaa +aby +aht +aby +aht +aby aaa aaa aaa @@ -92292,7 +95914,7 @@ apu ale auq atn -awA +awB axw axw axw @@ -92330,33 +95952,33 @@ bfI bdI bbI bbI -biC -bjy -bkD +aGP +bjx +bjw blW -bnc -boc -bpl -bqu +bna +pbI +bqs +bqt brM -btn -bod -bvX +btl +gDZ +bvV bxH -bzf -bAF +bzd +wnJ bBO bCZ -bDZ +bDX bFk bGq bHy aaa +aby aaa +aby aaa -aaa -aaa -aaa +aby aaa aaa aaa @@ -92549,7 +96171,7 @@ akn ajv aqZ atn -awB +gcj axw axw axw @@ -92587,33 +96209,33 @@ bfJ bdI aaa aEj -aFi -aTx +pKd +bjx bjw -bjw -bjw -bod -bod -bod -bod -bod -bod +qDJ +vmG +bnZ +pDP +nBL +bqs +xgG +cKA bvY -bxI -bnj +bvY +fkH bAF bBP bCW -bDZ +bDX bFl bGr bHy aaa +aht aaa +aht aaa -aaa -aaa -aaa +aht aaa aaa aaa @@ -92845,33 +96467,33 @@ bdI aaa aEj aEj -bjz -bkE -aht -bnd +bjx +bjw +bjw +uAZ +boe boe -bpm bqv -brN -bto +bqs +brJ buD bvZ bxJ -bzg -bAG +tAK +bAF bBQ bDa bEa bFm bGs -gMm -gMm -jOJ +ubW +ubW +xIx bHy bHy bHy bOs -clx +mZE aaa aaa aaa @@ -93102,18 +96724,18 @@ aaa aaa aaa aEj -aTx -bkE -aht -bnd +obj +aLi +tim +eXo bof -bpn +boa bqw -brO +brH btp buE bwa -bxH +efu bzh bAF bBR @@ -93128,7 +96750,7 @@ bIK bMl bNp bOt -bPj +mZE aaa aaa aaa @@ -93359,15 +96981,15 @@ aaa aaa aaa aEj -aTx -bkE -aht -bnd +bjx +aFi +bjw +nJI bog bpo -bpn -brP -btq +lAR +bqs +bti buF bwb bxK @@ -93376,16 +96998,16 @@ bAF bBS bDc bEc -bFo +bGu bGu bGu bIL bJR bLf bMm -stl +bNp bOt -bPj +mZE aaa aaa aaa @@ -93616,15 +97238,15 @@ aaa aaa aaa aEj -bjz -bkE -aht -bnd +bjx +aEj +bjw +xPa boh bpp bqx -brQ -btr +bqs +brJ buG bwc bxL @@ -93642,7 +97264,7 @@ bIM bMn bNp bOt -bPj +mZE aaa aaa aaa @@ -93846,7 +97468,7 @@ atn aFP aGM aFi -aIo +bfu aJs aKo aLl @@ -93873,33 +97495,33 @@ aaa aaa aaa aEj -aTx -bkF -bkF -bkF -bkF -bkF -bnj -brR +bjx +aFi +bkD +vxp +boc +bnc +tdp +oDP bts buH -bwd -brR -bnj -bAF -bAF -bAF -bAF -bFq -bGw -bAF +bjw +bjw +bjw bHy -tYg +bHy +bHy +bHy +bHy +bGw +nsD +rPW +kfh bHy bHy bHy bOs -bPk +aht aaa aaa aaa @@ -94130,33 +97752,33 @@ aaa aaa aaa aEj -aTx +bjx +aEj +bjw +bjw +bjw +bjw bkF -eQR -bne -blX -bkF -bqy -brS +brR btt -buI -bwe -bxM -bzk -bAH -blX -blX -bAF +brR +bkF +ldQ +lNW +mSc +sci +bwm +glf bFr -bGx -bHB +qtA +khk bIN dAF -bLg -bMo +bCV +bCV bNq bOu -bPl +aht aaa aaa aaa @@ -94361,7 +97983,7 @@ aEj aEj aEj aEj -aJu +aJs aKp aFi aMA @@ -94379,41 +98001,41 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aEj -aTx -bkF -blX -blX -blX +aEj +aEj +aEj +aEj +aEj +aEj +aEj +oTl +vzP +vzP +iWV +aFi bpq -bqz +bnj brT -btt -buJ -bwe -bxN -bzl -blX -bBU -bDe -bAF +bxF +wkZ +bnj +bwm +bwm +lWy +gXg +bwm +pNy bFs -bGy +bGx bHC -kwI +cxb bJT -bAF +wOS bMp -bHy -bHy -ahi +bPl +mZE +aht aaa aaa aaa @@ -94614,7 +98236,7 @@ aBY atn aEj aFf -aFi +hUt aFi aFi aFi @@ -94636,41 +98258,41 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aEl +bdQ +beR +aUC +aUC +eCw +aUC +aUC +qHI +aKq aEj -aTx -bkF -blX -blX -bni -blX +wAI +vzP +vzP bqA brU -btt +bxF buK -bwf -bxO -bzm -blX -blX -blX -bAF +dqw +spz +spz +spz +wFT +bwm +veM bFt -khk +bGy bHD -kwI -bJU -bAF -bHy -bHy -abI -abI +fBz +bCV +bCV +bCV +ahi +aht +aht abI abI abI @@ -94894,40 +98516,40 @@ aaa aaa aaa aEj -aEj -aEj -aEl -aEl -aEj -aEl -aEj aTx -bkG -blY -bnf -blX -blX -bqB +aEj +aKq +aEj +gfi +aEj +bkF +bkF +bkF +bkF +bkF +bkF +bkF +bkF brV -btt -buL -bwg -bxP -bxP -bxP -bxP +ume +bkF +bkF +bkF +bkF bxP +nev +hgD bEf bFu -bGz +noM bHE -bIO bJV bLh bMq aht +aht aaa -aaa +aht aaa abI aaa @@ -95151,38 +98773,38 @@ aaa aaa aaa aEl -bdQ -beR -aUC -aUC +aTx +aFi +aFi +aEj bhz -aUC -aUC -bjA -bkH -blX -blX -blX -bpr +lEn +pnU +pnU +bnd +taT +lWH +wfs +pfP bqC brW -btt -buM -bwh -bxM -bzn -bAH -blX -blX +vMx +ofN +gdL +iLl +bkF +bwm +xlA +bwm +bAF bAF -bFv bGA -fBm +bAG fwr gMm -bLi -bHy -bHy +bAF +bAF +aht aht abI abI @@ -95409,41 +99031,41 @@ aEl aEj aEj aTx -beS aFi -aGO -bcI +aFi aEj -aLk +bjD +lEn +uwb bjB bkH -blX -blX -blX -bpq -bqD +mql +bpn +hEX +brO +bzg brX -btt -buN -bwe -bxQ -bzo -blX -bBU -bDe -bnj -bFw -onw -bHF +csu +xzp +ugC +gdJ +bkF +lWy +cDB +lWy +tSL +lWy +cDB +bwm rBh -vMX -bLj -bIS -lJr +bwm aht aht aht -fon +aaa +aht +aaa +aaa aaa aaa aaa @@ -95663,46 +99285,46 @@ aaa aEl aZv aUC -aUC bcH +aUC aZw +beS aFi -bfM -aFi -bcI aEj +gfi +lEn biD -bjC -bkH -blX -bng -blX -bkF +biD +bnd +tdB +bpn +thW +bpn bqE -brY +brW btu -buO -bwf -bxR -bzp -blX -blX -blX -bnj +xpr +ihk +pXg +bkF +kPi +cDB +hxn +uvq bFx -lQn -bHG +tSL +bwm bIP -bJW -bLk -xfc -lJr +bwm aht aaa +aht aaa -fon -aaa -aaa +aht +aht +aht +aht +aht aaa aaa aaa @@ -95907,10 +99529,10 @@ aJw aKr aEj aMD -aNS aPf aQj aRs +aLi aSl aTv aGO @@ -95920,46 +99542,46 @@ aEj aEj aTx aGO -aFi bcI aFi -beT -bfN -bgN -bcI +aFi +aFi +bfM aEj -aKq -cpV -bkI -blZ -blZ -blZ +bhz +lEn +vYN +vYN +bnd blZ +mQm +ilD +edJ bqF -brZ +brW btv -buN -bwe -bnj -bnj -bnj -bnj -bnj -bnj +nuv +ihk +cPT +bkF +syQ +cDB +rFq +obP bFy bGB -iIy +bwm bIQ -bJX -bLl -xfc -lJr +bwm aht -aht -aht -fon -aaa +bwm +bwm +rNB +bwm +rNB +bwm aaa +aby aaa aaa aaa @@ -96157,7 +99779,7 @@ aaa aEj aFj aEj -aaa +aEj aEj aEl aEj @@ -96165,10 +99787,10 @@ aEj aLm aLm aLm -aLm aQk aRt aLm +aLm aTw aUC aVE @@ -96176,49 +99798,49 @@ aUC aUC aUC aZw -baG -baG -bcJ -baG -baG +aFi +bcI +aFi +aFi +kIo +bfN aEj +gfi aEj -bhA -aKq -biE -cpV -bkJ bkF -blX -blX -bpr -bqG -bsa -btw -buN -bwe -bxM -bzq -bAH -blX -blX -bnj +bkF +bkF +xWl +hPN +nxT +ueP +ost +nOY +dgz +jxl +tXn +hfZ +bkF +kkQ +rKL +lWy +lWy bFz -bGC -lQn +lWy +xlA bIR -bJY -bLm -lpS -gxK -gxK +bwm aht -aaa -gYo -aaa -aaa -aaa -aaa +bwm +ikB +iVJ +izF +typ +bwm +aht +aby +aht +aby aaa aaa aaa @@ -96418,13 +100040,13 @@ aaa aaa aaa aaa -aaa aLn aNT +rax aQo aPg -aQl aRu +srZ aLm aTx aEj @@ -96432,50 +100054,50 @@ aEj aEj aEj aYC +baG +baG +bcJ +baG +baG +aEj +aEj aEj -baG -bbL -bcK -bdR -baG -bfO -aFi bhB -aNR -aNR +fwI +fwI bjE -bkK bkF -bnh -blX -blX -bqH -bsb -btw -buN -bwe -bxS -bzr -blX -blX -bDe bnj -bFA -fKj -nwu +bnj +bnj +bnj +brR +qVP +qtF +jwe +brR +bnj +bkF +bkF +bkF +bkF +bwm +bwm +bwm +bwm lQn -wBr -lQn -qKm +bwm +rNB +bwm wTO -gxK -aaa -aaa -aaa -aaa -aaa +hPU +xsO +rEh +rNB aaa +aby aaa +aed aaa aaa aaa @@ -96662,8 +100284,7 @@ aaa aaa aaa aaa -aaa -aaa +abN aaa aaa aaa @@ -96679,9 +100300,10 @@ aaa aLm aLm aNU +dqY aPh -aQm aRv +sZh aLm aTx aEj @@ -96689,50 +100311,50 @@ aVF aFi aFi aFi -aEj baG -bbM -bcL -bdS +bbL +bcK +bdR baG bfP -bdz -aFi +bfP +aEj +aEj +aEj aKq -biD -aGO -bjD +gfi bkF -bni blX blX -bqI -bsc -btx -buP -bwf -bxT -bzs +bpr +oSc +bsa +btw +buI +bwe +bxM +bzk +bAH blX blX -blX -bnj +bkF +kgR bFB -fKj -fKj -ejp +bwm +svN +bIQ uek -yeS -mES +izF +bwm qnT lJr +lWy +maW +bwm aht +aed aht -aht -fon -aaa -aaa -aaa +aby aaa aaa aaa @@ -96932,13 +100554,13 @@ aaa aaa aaa aaa -aaa aLm aME aNV +dqY aPh -aQm aRw +sqQ aLm aTy aEj @@ -96946,48 +100568,48 @@ aEj aHu aEj aEj -aEj baG -bbN -bcM -bdT +bbM +bcL +bdS baG +kKI +aFi +hOz aEj -aEl -aEl -aEj +oRX biF bjF -bjD bkF -bnj -bnj -bnj -bnj -bnj -bty -buQ -bwi -bnj -bnj -bnj -bnj -bnj -bnj -bFB +bnh +blX +blX +kNf +bsb +btw +buJ +bwe +bxN +bzl +blX +bBU +bDe +bkF +dMO +lWy rxQ -fKj -hKA +lWy +ros +izF izF -lQn mES -htU -lJr -aht -aaa -aaa -fon +lWy +lWy +lWy +lWy +bwm aaa +aby aaa aaa aaa @@ -97189,13 +100811,13 @@ aaa aaa aaa aaa -aaa aLo aMF aNW -aPh +dqY +cvf aQn -aRx +sqQ aSm aTz aEj @@ -97203,50 +100825,50 @@ aVG aFi aFi aYD -aEj -baH +baG baH +uXH bcN -baH -baH -abI -abI -abI -aEj -biG -aKo -bjD +baG +eZA +tDn +aFi +nZw +aFi +gfi +aFi bkF +bni blX blX -bpr -bqJ -bsa -btw -buN -bwe -bxM -bzt -bAH +hvW +igE +btx +dxc +bwf +bxO +bzm blX blX -bnj +blX +bkF +hTl bFC -xGQ -fKj +bwm +nzD uoj -iXQ -lQn -mES +bwm +izF +bwm dMI -lJr +lWy +lWy +jDA +bwm aht -aaa -aaa -fon -aaa -aaa -aaa +aby +aht +aby aaa aaa aaa @@ -97446,64 +101068,64 @@ aaa aaa aaa aaa -aaa aLo aMG aNX -wMV -tSS +dqY +rax aRy aSn +aSn aTA aEj aVH aFi aXC aYE -aEj -abI +baG +rWE bbO -bcO -baH -aaa -aaa -aaa -aaa +rWE +baG +vzT +gUb +aFi aEj -biH -bjH -bjD +gSI +gfi +bfM bkF -bnh -blX -blX -bqK -bsd -btw -buN -bwe -bxU -bzu -blX -blX -bDe bnj -dNt -mPt -fKj -sQr -uyY -tYI -kmh +bnj +bnj +bnj +bnj +itl +buL +cuc +bnj +bnj +bnj +bnj +bnj +bkF +bwm +bwm +bwm +ros +bwm +bwm +bwm +bwm oEG -gxK -aht -aht -aht -mau -aaa +ndI +lWy +cDB +rNB aaa +aby aaa +aby aaa aaa aaa @@ -97692,7 +101314,6 @@ aaa aaa aaa aaa -abN aaa aaa aaa @@ -97710,6 +101331,7 @@ aNY aPi aQp aRz +daY aSo aTB aEj @@ -97717,50 +101339,50 @@ aVI aFi aXC aYF +baG +sut +bcO +rWE +baG +dsv +dLY +xyl aEj -abI -baH -bcP -baH -aaa -aaa -aaa -aaa -aEj -aEl -aEj -bjD +aKq +gfi +ybX bkF blX blX -blX -bqL -bse -btz -buR -bwf -bxV -bzv +bpr +bqG +bsa +btw +buM +bwh +bxM +bzn +bAH blX blX -blX -bnj +bkF +qIO jXA -not -fKj +bwm +ros vpz -ptq -lQn -lQn +bwm +aht +bwm hFp -gxK -aaa -aaa -aaa -gYo -aaa -aaa -aaa +abf +abf +ijU +bwm +aht +aed +aht +aed aaa aaa aaa @@ -97960,7 +101582,6 @@ aaa aaa aaa aaa -aaa aLm aLm aLo @@ -97969,55 +101590,56 @@ aLo aLm aLm aLm +aLm aEj aEj aEl aEl aEl +baG +rWE +oCX +rWE +baG aEj -aaa -aaa -bcQ -aaa -aaa -aaa -aaa -aaa -aaa -aaa aEj -bjD -bkF -bkF -bkF -bkF -bkF -bkF -bkF -buS -bwj -bkF -bkF -bkF -bkF +aEj +aEj +aEj +ntj +bfM bkF +bnh +blX +blX +bqH +bsb +btw +buN +bwe +bxQ +xxO +blX +bBU +bDe bkF +dmP bFD -gxK +bwm gxK pWF -sCz -lQn -lQn -dWy -gxK -aht -fon +bwm aht +bwm +bwm +rNB +bwm +rNB +bwm aaa +aby aaa -aaa -aaa +aby aaa aaa aaa @@ -98233,47 +101855,47 @@ aaa aaa aaa aaa -aaa bcQ aaa aaa aaa aaa aaa -aaa -aaa -aEj -bjD -aEj -bnk -boj -bps -aMA -aEj -btA -buT -bwk -aEj -bzw -kAz -kAz -kAz -bEh -bzx +aht +aEl +gfi +ybX +bkF +bni +blX +blX +bqI +bsc +btx +buO +bwf +bxR +bzp +blX +blX +blX +bkF +lWy +lWy fKj -gxK -gtb -vJd -oJT -fvG -rtE -lJr -aaa -fon -aaa +lWy +bIQ +bwm +aed aaa +aht +aaa +aht +aaa +aed aaa aaa +cFB aaa aaa aaa @@ -98482,8 +102104,7 @@ aaa aaa aaa aaa -abI -aaa +mZE aaa aaa aaa @@ -98497,37 +102118,38 @@ aaa aaa aaa aaa -aaa -aaa -aEj -bkL -bma -bma -bma -bma -bqM -bsf -btB -buU -bwl -bxW -bzx -aEj -aEj -aEl -aEl -aEj -fKj -gxK -lju -qDU -gAj -rtE -lJr -lJr aht -fon -aaa +aEl +gfi +fNv +bkF +bnj +bnj +bnj +bnj +bnj +bsf +buQ +buU +bnj +bnj +bnj +bnj +bnj +bkF +sZu +lWy +bwm +bwm +bIQ +bwm +aby +aht +aby +aby +aby +aby +aby aaa aaa aaa @@ -98747,43 +102369,43 @@ aaa aaa aaa aaa -aaa bcQ aaa aaa aaa aaa aaa +aht +aEl +gfi +bfM +bkF +blX +blX +bpr +bqJ +bsa +gIG +buN +bwe +bxM +bzq +bAH +blX +blX +bkF +wfc +sAK +bwm +hXt +bIQ +rNB +aby aaa +aed aaa -aEj -aEj -aHu -aEj -aEj -aEj -aKl -aEj -btC -buV -btC -aEj -aEj abI aaa -aht -aaa -aaa -aht -gxK -gxK -gxK -lJr -lJr -lJr -aht -aaa -fon aaa aaa aaa @@ -99004,43 +102626,43 @@ aaa aaa aaa aaa -aaa bcQ aaa aaa aaa aaa aaa -aaa -aaa -aEj -bkM -aFi -bnl -bok -aEj -aKl -aEj -btD -btD -btD -bxX -bzy -abI +aht +aEl +gfi +ybX +bkF +bnh +blX +blX +bqK +bsd +gIG +buN +bwe +bxS +bzr +blX +blX +bDe +bkF +bwm +bwm +bwm +bwm +bIQ +bwm +aed aaa aaa aaa aaa aaa -aht -aht -aht -aht -aht -aht -aht -aaa -aaa aaa aaa aaa @@ -99261,29 +102883,38 @@ aaa aaa aaa aaa -aaa bcQ aaa aaa aaa -aaa -aaa -aaa +abN aaa aEj -bkN -bmb -bnm -bol -aEj -bqN aEj +ntj +fNv +bkF +blX +blX +blX +bqL +bse +xjT btE buW -btD -bxX -bzy -abI +bxT +bzs +blX +blX +blX +bkF +ueV +heC +uug +cDB +bIQ +bwm +bwm aaa aaa aaa @@ -99291,15 +102922,6 @@ aaa aaa aaa aaa -aht -aaa -aht -aaa -aht -aaa -aaa -aaa -aaa aaa aaa aaa @@ -99518,29 +103140,38 @@ aaa aaa aaa aaa -aaa bcQ aaa aaa aaa aaa aaa -aaa -aaa -aEj -bkO -bdz -bnn -bom -aEj -aKl -aEj -aEj -aEj -aEj -aEj -aEj -abI +aEl +bnl +gfi +aFi +bkF +bkF +bkF +bkF +bkF +bkF +bkF +qdi +bkF +bkF +bkF +bkF +bkF +bkF +bkF +doo +efU +eMC +cDB +dVJ +jDA +rNB aaa aaa aaa @@ -99548,15 +103179,6 @@ aaa aaa aaa aaa -fon -gYo -fon -mau -gYo -fon -aaa -aaa -aaa aaa aaa aaa @@ -99775,38 +103397,38 @@ aaa aaa aaa aaa -aaa bcQ aaa aaa aaa aaa aaa -aaa -aaa +aEl +iCe +vsk +lje +rxa +bnl +bok +aFi +aFi aEj -aEl -aEl -aEl -aEl -aEj -aKm -aLi -aLi -aLi +btA +uXG +mtI +bwm +kFu +tSL +cDB +cDB +aad +dtm +bwm +jFw +xpD +jQh +bwm bwm -aEj -abI -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -100032,38 +103654,38 @@ aaa aaa aaa aaa -aaa bcQ aaa aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -abI -aEj +aEl +wOf +bhB +fwI +eCK +wQU +xah +fwI +fwI bqO -aJp +btB btF -aEj +gIC bwn -aEj -abI -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +vRi +dKs +oKa +rgn +jRG +gmp +bwm +rNB +bwm +bwm +bwm +aht aaa aaa aaa @@ -100279,48 +103901,48 @@ aaa aaa aaa aaa -aby -aed -aby -aby -aby -aaa -abN -aaa -aaa -aaa -aaa -bcR aaa aaa aaa aaa aaa aaa -aby -aby -aby -aed -aby -abI +aaa +aaa +aaa +aaa +bcQ +aaa +aaa +aaa +aaa +aaa +aEj +aEj aEj aEl -aEl -aEl aEj -bwo +bnn +bom aEj -abI -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bkF +bkF +xKc +vgp +oBb +bkF +bkF +bwm +bwm +bwm +euQ +vuQ +bwm +aaa +aht aaa aaa +aht aaa aaa aaa @@ -100536,48 +104158,48 @@ aaa aaa aaa aaa -aby -aaa -aaa -aaa -abI aaa aaa aaa aaa aaa aaa -bcS +aaa +aaa +aaa +aaa +bcQ aaa aaa aaa aaa aaa aaa -abI aaa aaa +aht +aEj +aEj +aEl +bkF +bkF +kFD +eIL +mTS +pMG +iPz +sXR +sXR +pwS +bwm +vtl +bwm +bwm aaa aby -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aht +aed +aby aaa aaa aaa @@ -100792,29 +104414,10 @@ aaa aaa aaa aaa -aaa aby -aaa -aTC -aTC -aTC -aTC -aTC -aTC -aTC -aTC -aaa -bcS -aaa -aTC -aTC -aTC -aTC -aTC -aTC -aTC -aTC -aaa +aed +aby +aby aby aaa aaa @@ -100822,6 +104425,7 @@ aaa aaa aaa aaa +bcQ aaa aaa aaa @@ -100834,7 +104438,25 @@ aaa aaa aaa aaa -aaa +bnd +kRK +cPy +dir +mTS +ufa +oNE +oep +bnd +mlr +sEB +jEX +rui +bwm +aht +aby +aht +aby +aht aaa aaa aaa @@ -101049,48 +104671,48 @@ aaa aaa aaa aaa -aaa aby +aaa +aaa +aaa abI -aTD -aUD -aUD -aUD -aUD -aUD -aUD -aUD -bbP -bcS -bdU -beU -beU -beU -beU -beU -beU -beU -bkP +aaa +aaa +aaa +aaa +aaa +aaa +bcQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bnd +qcD +xxw +lhA +lFh +ufa +taA +qcH +bnd +nNN +bwm +hSM +bwm +bwm aaa aby aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aby aaa aaa aaa @@ -101306,48 +104928,48 @@ aaa aaa aaa aaa +aby +aaa +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aaa +bcR +aaa +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aTC aaa aby aaa -aTE -aTE -aTE -aTE -aTE -aTE -aTE -baI -aaa -bcS -aaa -aTE -aTE -aTE -aTE -aTE -aTE -aTE -baI -abI +bnd +qYq +sNz +nqV +oSL +hUJ +riW +jtf +bnd +aht +ahi +ahi +ahi +aht +aht aby -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aht +aed aaa aaa aaa @@ -101563,29 +105185,47 @@ aaa aaa aaa aaa +aby +abI +aTD +aUD +aUD +aUD +aUD +aUD +aUD +aUD +bbP +bcS +bdU +beU +beU +beU +beU +beU +beU +beU +beU +abI +aby +aaa +bnd +lGS +nIm +oEW +iuM +wXu +cOp +lGS +bnd +aaa +aaa +aaa +aaa +aht aaa aed aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bcS -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aby aaa aaa @@ -101696,24 +105336,6 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa "} (199,1,1) = {" aaa @@ -101820,49 +105442,49 @@ aaa aaa aaa aaa -aaa aby aaa -aTC -aTC -aTC -aTC -aTC -aTC -aTC -aTC +aTE +aTE +aTE +aTE +aTE +aTE +aTE +baI aaa bcS aaa -aTC -aTC -aTC -aTC -aTC -aTC -aTC -aTC -aaa -aed -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aTE +aTE +aTE +aTE +aTE +aTE +aTE +aTE aaa +aby +aaa +bkF +dmT +tqX +nEb +pWm +uvo +mMz +dmT +bkF aaa aaa aaa aaa +aby +aht +aby +aht +aby +aht aaa aaa aaa @@ -102077,48 +105699,48 @@ aaa aaa aaa aaa +aed +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa -aby -abI -aTD -aUD -aUD -aUD -aUD -aUD -aUD -aUD -bbP bcS -bdU -beU -beU -beU -beU -beU -beU -beU -bkP -abI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aed +aaa +bkF +bkF +bkF +pbR +blX +naq +bkF +bkF +bkF +aaa +aaa +aaa +aaa +aaa +aaa aby aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aed aaa aaa aaa @@ -102334,28 +105956,46 @@ aaa aaa aaa aaa -aaa aby aaa -aTE -aTE -aTE -aTE -aTE -aTE -aTE -baI +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aTC aaa bcS aaa -aTE -aTE -aTE -aTE -aTE -aTE -aTE -baI +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aaa +aed +aht +bkF +blX +blX +blX +blX +blX +blX +blX +bkF +aht +aed +aht +aed +aaa +aaa +aed aaa aby aaa @@ -102467,24 +106107,6 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa "} (202,1,1) = {" aaa @@ -102591,48 +106213,48 @@ aaa aaa aaa aaa -aaa aby -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +abI +aTD +aUD +aUD +aUD +aUD +aUD +aUD +aUD +bbP bcS +bdU +beU +beU +beU +beU +beU +beU +beU +bkP +abI +aby aaa +xKc +blX +blX +iPj +tfP +iPj +blX +blX +xKc aaa +aby aaa -aaa -aaa -aaa -aaa -aaa +aht aaa aaa aby aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aht aaa aaa aaa @@ -102848,46 +106470,46 @@ aaa aaa aaa aaa -aaa aby aaa -aTC -aTC -aTC -aTC -aTC -aTC -aTC -aTC +aTE +aTE +aTE +aTE +aTE +aTE +aTE +baI aaa bcS aaa -aTC -aTC -aTC -aTC -aTC -aTC -aTC -aTC +aTE +aTE +aTE +aTE +aTE +aTE +aTE +baI aaa aby aaa +bkF +blX +blX +blX +tuy +blX +blX +eQR +bkF +aaa +aby +aaa +aht aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aht aaa aaa aaa @@ -103105,46 +106727,46 @@ aaa aaa aaa aaa -aaa aby -abI -aTD -aUD -aUD -aUD -aUD -aUD -aUD -aUD -bbP +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa bcS -bdU -beU -beU -beU -beU -beU -beU -beU -bkP -abI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aby aaa +bkF +bkF +bkF +xKc +bkF +xKc +bkF +bkF +bkF aaa +aed aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aby +aht +aht +aht aaa aaa aaa @@ -103362,43 +106984,43 @@ aaa aaa aaa aaa -aaa aby aaa -aTE -aTE -aTE -aTE -aTE -aTE -aTE -baI +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aTC aaa bcS aaa -aTE -aTE -aTE -aTE -aTE -aTE -aTE -baI -aaa -aed -aaa -aaa -aaa +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aTC aaa +aby aaa aaa +aht aaa aaa +aht aaa aaa +aht aaa aaa +aby aaa +aby aaa aaa aaa @@ -103619,43 +107241,43 @@ aaa aaa aaa aaa -aaa -aed -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bcS -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aby -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +abI +aTD +aUD +aUD +aUD +aUD +aUD +aUD +aUD +bbP +bcS +bdU +beU +beU +beU +beU +beU +beU +beU +bkP +abI +aby +aed +aby +aby +aby +aby +aby +aby +aed +aby +aby +aht +aby +aht +aed aaa aaa aaa @@ -103876,6 +107498,519 @@ aaa aaa aaa aaa +aby +aaa +aTE +aTE +aTE +aTE +aTE +aTE +aTE +baI +aaa +bcS +aaa +aTE +aTE +aTE +aTE +aTE +aTE +aTE +baI +aaa +aed +aaa +aaa +aht +aaa +aaa +aht +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aht +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(208,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aby +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aby +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(209,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aby aaa @@ -104027,9 +108162,1037 @@ aaa aaa aaa aaa -"} -(208,1,1) = {" aaa +"} +(210,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aby +abI +aTD +aUD +aUD +aUD +aUD +aUD +aUD +aUD +bbP +bcS +bdU +beU +beU +beU +beU +beU +beU +beU +bkP +abI +aby +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(211,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aby +aaa +aTE +aTE +aTE +aTE +aTE +aTE +aTE +baI +aaa +bcS +aaa +aTE +aTE +aTE +aTE +aTE +aTE +aTE +baI +aaa +aed +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(212,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aed +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aby +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(213,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aby +aaa +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aaa +bcS +aaa +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aTC +aaa +aby +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(214,1,1) = {" aaa aaa aaa @@ -104284,9 +109447,9 @@ aaa aaa aaa aaa -"} -(209,1,1) = {" aaa +"} +(215,1,1) = {" aaa aaa aaa @@ -104541,9 +109704,9 @@ aaa aaa aaa aaa -"} -(210,1,1) = {" aaa +"} +(216,1,1) = {" aaa aaa aaa @@ -104798,9 +109961,9 @@ aaa aaa aaa aaa -"} -(211,1,1) = {" aaa +"} +(217,1,1) = {" aaa aaa aaa @@ -104915,19 +110078,20 @@ aby aby aby aby -aaa +cFB bcQ +cFB +aby +aby +aby +aby +aby +aby +aby +aby +aby +aby aaa -aby -aby -aby -aby -aby -aby -aby -aby -aby -aby aaa aaa aaa @@ -105056,8 +110220,7 @@ aaa aaa aaa "} -(212,1,1) = {" -aaa +(218,1,1) = {" aaa aaa aaa @@ -105312,1547 +110475,6 @@ aaa aaa aaa aaa -"} -(213,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aby -aaa -abI -aaa -aby -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(214,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aby -aby -aby -aby -aby -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(215,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(216,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(217,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(218,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa "} (219,1,1) = {" @@ -106969,11 +110591,11 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +aby +cFB +abI +cFB +aby aaa aaa aaa @@ -107226,11 +110848,11 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +aby +aby +aby +aby +aby aaa aaa aaa diff --git a/_maps/map_files/PubbyStation/job_changes.dm b/_maps/map_files/PubbyStation/job_changes.dm index b9789fd896..726601725b 100644 --- a/_maps/map_files/PubbyStation/job_changes.dm +++ b/_maps/map_files/PubbyStation/job_changes.dm @@ -18,4 +18,3 @@ access += ACCESS_CREMATORIUM minimal_access += ACCESS_CREMATORIUM -MAP_REMOVE_JOB(lawyer) diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 3629dd5f05..89a836f2df 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -20,6 +20,9 @@ "af" = ( /turf/open/floor/plating, /area/maintenance/department/bridge) +"ag" = ( +/turf/closed/wall/r_wall, +/area/security/brig) "ah" = ( /turf/closed/wall/r_wall, /area/engine/atmos) @@ -123,6 +126,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/structure/cable, /turf/open/floor/plasteel, /area/engine/gravity_generator) "au" = ( @@ -185,6 +189,9 @@ /obj/machinery/door/airlock/external/glass, /turf/open/floor/plating, /area/engine/engineering) +"aD" = ( +/turf/open/floor/plasteel, +/area/security/brig) "aE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -304,13 +311,14 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aU" = ( /obj/machinery/door/airlock/engineering/glass{ - name = "Gravity Generator"; - req_access_txt = "11" + name = "Gravity Generator" }, /obj/structure/cable{ icon_state = "4-8" @@ -318,6 +326,9 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "aV" = ( @@ -327,6 +338,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "aW" = ( @@ -340,8 +354,7 @@ /area/engine/gravity_generator) "aX" = ( /obj/machinery/door/airlock/engineering/glass{ - name = "Gravity Generator"; - req_access_txt = "11" + name = "Gravity Generator" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -386,6 +399,7 @@ /obj/structure/table, /obj/item/weldingtool/experimental, /obj/item/inducer, +/obj/item/storage/belt/utility/chief/full, /turf/open/floor/plasteel, /area/engine/engineering) "be" = ( @@ -403,6 +417,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/announcement_system, /turf/open/floor/plasteel, /area/engine/gravity_generator) "bh" = ( @@ -429,7 +444,7 @@ /obj/structure/table, /obj/item/analyzer, /obj/item/wrench, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/atmos) "bk" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -445,7 +460,7 @@ /turf/open/floor/plating, /area/engine/atmos) "bm" = ( -/obj/machinery/atmospherics/components/binary/valve/open{ +/obj/machinery/atmospherics/components/binary/valve/on{ dir = 4 }, /turf/open/floor/plating, @@ -473,6 +488,9 @@ dir = 10 }, /obj/machinery/light, +/obj/machinery/telecomms/allinone{ + network = "tcommsat" + }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "br" = ( @@ -500,6 +518,10 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/bridge) +"bw" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) "bx" = ( /obj/machinery/door/airlock, /obj/structure/cable{ @@ -511,12 +533,6 @@ "by" = ( /turf/closed/wall/r_wall, /area/medical/medbay) -"bz" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/department/bridge) "bA" = ( /turf/closed/wall/r_wall, /area/science) @@ -535,10 +551,13 @@ /obj/machinery/autolathe/hacked, /turf/open/floor/plasteel, /area/science) -"bD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 +"bC" = ( +/obj/machinery/computer/gulag_teleporter_computer{ + dir = 4 }, +/turf/open/floor/plasteel, +/area/security/brig) +"bD" = ( /obj/machinery/light{ dir = 1 }, @@ -568,13 +587,27 @@ dir = 8 }, /area/bridge) +"bH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/security/brig) "bI" = ( /obj/structure/table, +/obj/item/card/emag, +/obj/item/flashlight/emp/debug, /turf/open/floor/plasteel, /area/bridge) "bJ" = ( /obj/structure/table, -/obj/item/card/id/captains_spare, +/obj/item/card/id/ert{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/card/id/syndicate/nuke_leader, +/obj/item/card/id/captains_spare{ + pixel_x = -4; + pixel_y = 4 + }, /turf/open/floor/plasteel, /area/bridge) "bK" = ( @@ -587,7 +620,7 @@ /obj/item/rcd_ammo/large, /obj/item/rcd_ammo/large, /obj/item/rcd_ammo/large, -/obj/item/construction/rcd, +/obj/item/construction/rcd/combat, /turf/open/floor/plasteel, /area/bridge) "bM" = ( @@ -632,6 +665,13 @@ /obj/machinery/chem_dispenser/fullupgrade, /turf/open/floor/plasteel/dark, /area/medical/chemistry) +"bT" = ( +/obj/machinery/gulag_item_reclaimer{ + dir = 8; + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/security/brig) "bU" = ( /obj/machinery/airalarm/unlocked{ pixel_y = 23 @@ -665,7 +705,7 @@ }, /area/medical/medbay) "bX" = ( -/obj/machinery/sleeper, +/obj/machinery/sleeper/syndie, /turf/open/floor/plasteel/arrival{ dir = 1 }, @@ -733,15 +773,21 @@ }, /area/bridge) "ch" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/medical/chemistry) +"ci" = ( /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/door/airlock, -/turf/open/floor/plating, -/area/bridge) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) "cj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -801,11 +847,12 @@ }, /area/bridge) "cs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ icon_state = "1-2" }, -/turf/closed/wall/r_wall, -/area/bridge) +/turf/open/floor/plasteel, +/area/medical/chemistry) "ct" = ( /obj/machinery/light{ dir = 8 @@ -836,6 +883,7 @@ /turf/open/floor/plasteel, /area/medical/medbay) "cz" = ( +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/medical/medbay) "cA" = ( @@ -856,8 +904,8 @@ }, /area/hallway/primary/central) "cC" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/machinery/camera/autoname, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /turf/open/floor/plasteel/blue/side{ dir = 1 }, @@ -871,9 +919,6 @@ }, /area/hallway/primary/central) "cE" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -900,9 +945,19 @@ dir = 8 }, /area/medical/medbay) +"cI" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) "cJ" = ( /obj/item/gun/magic/staff/healing, -/obj/item/gun/magic/wand/resurrection, +/obj/item/gun/magic/wand/resurrection/debug, /turf/open/floor/plasteel/arrival{ dir = 10 }, @@ -944,15 +999,20 @@ /turf/closed/wall/r_wall, /area/storage/primary) "cT" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/structure/cable{ icon_state = "1-2" }, -/turf/closed/wall/r_wall, -/area/storage/primary) +/turf/open/floor/plasteel, +/area/medical/chemistry) "cU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/storage/primary) +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "cV" = ( /obj/machinery/door/airlock/public/glass, /turf/open/floor/plasteel, @@ -987,6 +1047,25 @@ /turf/open/floor/plasteel, /area/construction) "da" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/storage/primary) +"db" = ( +/turf/closed/wall/mineral/plastitanium, +/area/hallway/secondary/entry) +"dc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"dd" = ( /obj/machinery/airalarm/unlocked{ pixel_y = 23 }, @@ -994,68 +1073,53 @@ dir = 8; pixel_x = -24 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/storage/primary) -"dc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/storage/primary) -"dd" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L1" +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "0-4" }, /turf/open/floor/plasteel, /area/storage/primary) "de" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/plaque{ - icon_state = "L3" - }, +/obj/machinery/gulag_teleporter, /turf/open/floor/plasteel, -/area/storage/primary) +/area/security/brig) "df" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L5" +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, -/area/storage/primary) +/area/security/brig) "dg" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L7" +/obj/machinery/airalarm/unlocked{ + pixel_x = 32 }, /turf/open/floor/plasteel, -/area/storage/primary) +/area/security/brig) "dh" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L9" - }, -/turf/open/floor/plasteel, -/area/storage/primary) +/turf/closed/wall, +/area/hallway/secondary/entry) "di" = ( -/obj/machinery/light{ - dir = 1 +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock" }, -/obj/machinery/camera/autoname, -/obj/effect/turf_decal/plaque{ - icon_state = "L11" - }, -/turf/open/floor/plasteel, -/area/storage/primary) +/obj/structure/fans/tiny, +/turf/open/floor/plasteel/dark, +/area/security/brig) "dj" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L13" +/obj/machinery/light/small{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/storage/primary) +/turf/open/floor/plating, +/area/hallway/secondary/entry) "dk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/storage/primary) "dl" = ( @@ -1149,8 +1213,11 @@ /turf/open/floor/plasteel, /area/construction) "dA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/open/floor/plasteel, /area/storage/primary) @@ -1160,14 +1227,12 @@ /area/storage/primary) "dC" = ( /obj/effect/turf_decal/stripes/line{ - dir = 6 + dir = 8 }, /turf/open/floor/plasteel, /area/storage/primary) "dD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, +/obj/effect/landmark/observer_start, /turf/open/floor/plasteel, /area/storage/primary) "dE" = ( @@ -1177,8 +1242,8 @@ /turf/open/floor/plasteel, /area/storage/primary) "dF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 }, /turf/open/floor/plasteel, /area/storage/primary) @@ -1187,11 +1252,11 @@ /turf/open/floor/plasteel, /area/storage/primary) "dH" = ( -/obj/effect/landmark/start, -/turf/open/floor/plasteel, -/area/storage/primary) +/obj/machinery/door/airlock, +/turf/open/floor/plating, +/area/maintenance/department/bridge) "dI" = ( -/obj/effect/landmark/latejoin, +/obj/effect/landmark/start, /turf/open/floor/plasteel, /area/storage/primary) "dJ" = ( @@ -1225,11 +1290,23 @@ /obj/item/storage/firstaid, /turf/open/floor/plasteel, /area/storage/primary) +"dP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) "dQ" = ( /obj/structure/table, /obj/machinery/light, /turf/open/floor/plasteel, /area/storage/primary) +"dR" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) "dS" = ( /obj/machinery/atmospherics/components/unary/tank/air, /obj/machinery/camera/autoname, @@ -1248,6 +1325,9 @@ dir = 1 }, /area/hallway/primary/central) +"dV" = ( +/turf/open/floor/plating, +/area/hallway/secondary/entry) "dW" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/camera/autoname, @@ -1260,14 +1340,14 @@ /obj/machinery/camera/autoname{ dir = 4 }, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel, /area/construction) "dY" = ( -/obj/machinery/camera/autoname{ - dir = 8 - }, -/turf/open/floor/plating, -/area/storage/primary) +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) "dZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -1282,31 +1362,1126 @@ /obj/machinery/camera/autoname{ dir = 1 }, -/obj/item/gun/magic/wand/resurrection, +/obj/item/gun/magic/wand/resurrection/debug, /turf/open/floor/plasteel, /area/storage/primary) +"eb" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 2; + height = 5; + id = "laborcamp_home"; + name = "fore bay 1"; + width = 9; + roundstart_template = /datum/map_template/shuttle/labour/box + }, +/turf/open/space/basic, +/area/space) +"ec" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 3; + height = 15; + id = "arrivals_stationary"; + name = "arrivals"; + width = 7; + roundstart_template = /datum/map_template/shuttle/arrival/box + }, +/turf/open/space/basic, +/area/space) +"ed" = ( +/obj/structure/sign/warning/pods, +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"ee" = ( +/obj/machinery/door/airlock/external{ + name = "Mining Dock Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/quartermaster/miningoffice) +"ef" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plasteel, +/area/construction) +"eg" = ( +/obj/machinery/door/airlock, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"eh" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) "ei" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"ej" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"ek" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"el" = ( +/obj/docking_port/stationary/random{ + id = "pod_lavaland1"; + name = "lavaland" + }, +/turf/open/space, +/area/space) +"em" = ( +/turf/closed/wall/r_wall, +/area/quartermaster/miningoffice) +"en" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"eo" = ( +/obj/machinery/door/airlock/external{ + name = "Arrival Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"ep" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"eq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"er" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel, +/area/medical/medbay) +"es" = ( /obj/machinery/light, /obj/machinery/computer/operating, /turf/open/floor/plasteel, -/area/maintenance/department/bridge) -"fT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/area/medical/medbay) +"et" = ( +/turf/closed/wall/r_wall, +/area/quartermaster/storage) +"eu" = ( /turf/open/floor/plasteel, -/area/science) -"gd" = ( +/area/quartermaster/storage) +"ev" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"ew" = ( /obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, -/area/science) -"gM" = ( -/obj/effect/turf_decal/stripes/line{ +/area/quartermaster/storage) +"ex" = ( +/obj/machinery/door/airlock/external{ + name = "Escape Pod One" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"ey" = ( +/obj/machinery/status_display{ + name = "cargo display"; + supply_display = 1 + }, +/turf/closed/wall, +/area/quartermaster/storage) +"ez" = ( +/obj/machinery/camera/autoname{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plasteel, /area/storage/primary) +"eA" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "cargounload" + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"eB" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"eC" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "cargounload" + }, +/obj/structure/plasticflaps, +/turf/open/floor/plating, +/area/quartermaster/storage) +"eD" = ( +/obj/machinery/vr_sleeper, +/turf/open/floor/plasteel, +/area/storage/primary) +"eE" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 2; + height = 13; + id = "ferry_home"; + name = "port bay 2"; + width = 5 + }, +/turf/open/space/basic, +/area/space) +"eF" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"eG" = ( +/obj/machinery/airalarm/unlocked{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"eH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"eI" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"eJ" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 4; + height = 7; + id = "supply_home"; + name = "Cargo Bay"; + width = 12 + }, +/turf/open/space/basic, +/area/space) +"eK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"eL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"eM" = ( +/obj/machinery/airalarm/unlocked{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"eN" = ( +/obj/machinery/conveyor{ + dir = 9; + id = "cargounload" + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"eP" = ( +/obj/structure/cable{ + icon_state = "0-2"; + pixel_y = 1 + }, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"eQ" = ( +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "cargounload" + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"eR" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Supply Dock Airlock" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"eS" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Supply Dock Airlock" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"eT" = ( +/obj/machinery/conveyor{ + dir = 5; + id = "cargoload" + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"eU" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/medical/medbay) +"eV" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"eW" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"eX" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/miningoffice) +"eY" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "cargounload" + }, +/obj/machinery/door/poddoor{ + id = "cargounload"; + name = "supply dock unloading door" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"eZ" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"fa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"fb" = ( +/obj/machinery/door/airlock/external{ + name = "Departure Lounge Airlock" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"fc" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "cargoload" + }, +/obj/machinery/door/poddoor{ + id = "cargoload"; + name = "supply dock loading door" + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"fd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"fe" = ( +/obj/machinery/button/door{ + dir = 2; + id = "cargounload"; + layer = 4; + name = "Loading Doors"; + pixel_x = 24; + pixel_y = 8 + }, +/obj/machinery/button/door{ + id = "cargoload"; + layer = 4; + name = "Loading Doors"; + pixel_x = 24; + pixel_y = -8 + }, +/obj/machinery/computer/cargo{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"ff" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 11; + height = 15; + id = "whiteship_home"; + name = "SS13: Auxiliary Dock, Station-Port"; + width = 28 + }, +/turf/open/space/basic, +/area/space) +"fg" = ( +/turf/open/space, +/area/space) +"fh" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/storage) +"fi" = ( +/obj/docking_port/stationary{ + dir = 1; + dwidth = 1; + height = 4; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 + }, +/obj/structure/fans/tiny/invisible, +/turf/open/space/basic, +/area/space) +"fj" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"fl" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "cargoload" + }, +/obj/structure/plasticflaps, +/turf/open/floor/plating, +/area/quartermaster/storage) +"fm" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "cargoload" + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"fn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum/external, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"fo" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "cargoload" + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"fp" = ( +/obj/docking_port/stationary{ + dheight = 0; + dir = 2; + dwidth = 9; + height = 25; + id = "emergency_home"; + name = "Runtimestation emergency evac bay"; + width = 29 + }, +/turf/open/space/basic, +/area/space) +"fq" = ( +/obj/machinery/camera/autoname{ + dir = 4 + }, +/obj/machinery/computer/cargo/express{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"fr" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/computer/bounty{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"fs" = ( +/obj/machinery/door/airlock/external{ + name = "Transport Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"ft" = ( +/obj/machinery/door/airlock, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/hallway/primary/central) +"fu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"fv" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"fw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plasteel, +/area/storage/primary) +"fx" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"fy" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/plaque{ + icon_state = "L3" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"fz" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L5" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"fA" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L7" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"fB" = ( +/obj/machinery/status_display{ + name = "cargo display"; + supply_display = 1 + }, +/turf/closed/wall/r_wall, +/area/quartermaster/storage) +"fC" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L9" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"fD" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera/autoname, +/obj/effect/turf_decal/plaque{ + icon_state = "L11" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"fE" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L13" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"fF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"fG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"fH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"fI" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"fJ" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) +"fK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"fL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/medical/chemistry) +"fM" = ( +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_x = 32 + }, +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/directions/evac{ + pixel_x = 32; + pixel_y = -7 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"fN" = ( +/obj/machinery/door/airlock, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/primary) +"fO" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"fP" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/keycard_auth{ + pixel_y = 28 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"fQ" = ( +/obj/machinery/computer/communications, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"fR" = ( +/obj/machinery/door/airlock, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/storage/primary) +"fS" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"fT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/science) +"fU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/airalarm/unlocked{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"fV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"fW" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"fX" = ( +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_x = -32 + }, +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_x = -32; + pixel_y = 7 + }, +/obj/structure/sign/directions/evac{ + pixel_x = -32; + pixel_y = -7 + }, +/turf/open/floor/plating, +/area/storage/primary) +"fY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"fZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"ga" = ( +/turf/closed/wall/r_wall, +/area/hallway/secondary/exit/departure_lounge) +"gb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"gc" = ( +/obj/machinery/door/airlock/external{ + name = "Auxiliary Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"gd" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science) +"ge" = ( +/obj/structure/lattice, +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"gf" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) +"gg" = ( +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_x = 32 + }, +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/directions/evac{ + pixel_x = 32; + pixel_y = -7 + }, +/turf/open/floor/plating, +/area/storage/primary) +"gh" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/computer/shuttle/mining{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningoffice) +"gi" = ( +/obj/structure/cable{ + icon_state = "0-2"; + pixel_y = 1 + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 25 + }, +/obj/machinery/airalarm/unlocked{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningoffice) +"gj" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 3; + height = 5; + id = "mining_home"; + name = "mining shuttle bay"; + width = 7; + roundstart_template = /datum/map_template/shuttle/mining/box + }, +/turf/open/space/basic, +/area/space) +"gk" = ( +/obj/structure/sign/departments/evac, +/turf/closed/wall/r_wall, +/area/hallway/secondary/exit/departure_lounge) +"gl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningoffice) +"gm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningoffice) +"gn" = ( +/obj/machinery/camera/autoname, +/turf/open/floor/plasteel, +/area/security/brig) +"go" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningoffice) +"gp" = ( +/obj/machinery/door/airlock, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningoffice) +"gq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gr" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gv" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction) +"gz" = ( +/obj/structure/table, +/obj/item/card/id/captains_spare, +/obj/machinery/keycard_auth{ + pixel_y = 28 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"gA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"gB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gD" = ( +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningoffice) +"gE" = ( +/obj/machinery/camera/autoname, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gF" = ( +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction) +"gH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/camera/autoname, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit/departure_lounge) +"gI" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera/autoname, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"gJ" = ( +/obj/structure/table, +/obj/item/storage/box/prisoner, +/obj/item/paper/guides/jobs/security/labor_camp, +/turf/open/floor/plasteel, +/area/security/brig) "gY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -1332,10 +2507,6 @@ /obj/item/melee/transforming/energy/axe, /turf/open/floor/plasteel, /area/storage/primary) -"kk" = ( -/obj/structure/table/optable, -/turf/open/floor/plasteel, -/area/maintenance/department/bridge) "kn" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1361,10 +2532,21 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"lK" = ( -/obj/effect/landmark/observer_start, -/turf/open/floor/plating, -/area/storage/primary) +"lg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"lX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "ny" = ( /obj/structure/table, /obj/item/storage/toolbox/syndicate, @@ -1394,6 +2576,12 @@ }, /turf/open/floor/plasteel, /area/medical/chemistry) +"qn" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/bridge) "sE" = ( /obj/machinery/power/rtg/advanced, /obj/structure/cable, @@ -1430,26 +2618,19 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"wT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/medical/chemistry) -"yp" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/medical/chemistry) "AP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, +/obj/machinery/rnd/production/techfab/department, /turf/open/floor/plasteel, /area/science) +"Bl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) "BB" = ( /obj/item/storage/backpack/duffelbag/syndie/surgery, /obj/structure/table, @@ -1473,11 +2654,6 @@ /obj/machinery/rnd/production/circuit_imprinter/department, /turf/open/floor/plasteel, /area/science) -"CK" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel, -/area/medical/chemistry) "CV" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1508,10 +2684,12 @@ /obj/structure/closet/secure_closet/RD, /turf/open/floor/plasteel/blue/side, /area/bridge) -"JE" = ( -/obj/machinery/door/airlock, -/turf/open/floor/plating, -/area/hallway/primary/central) +"JF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/medical/chemistry) "Ly" = ( /obj/machinery/chem_dispenser/chem_synthesizer, /turf/open/floor/plasteel/dark, @@ -1520,6 +2698,10 @@ /obj/machinery/rnd/production/protolathe/department, /turf/open/floor/plasteel, /area/science) +"PI" = ( +/obj/structure/fans/tiny/invisible, +/turf/open/space/basic, +/area/space) "Qt" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -1543,6 +2725,7 @@ /area/science) "Ut" = ( /obj/structure/closet/secure_closet/medical3, +/obj/item/healthanalyzer/advanced, /turf/open/floor/plasteel, /area/medical/medbay) "Vg" = ( @@ -1555,6 +2738,13 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"VA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel, +/area/engine/engineering) "WT" = ( /obj/structure/cable{ icon_state = "4-8" @@ -1625,6 +2815,44 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} (2,1,1) = {" aa @@ -1679,6 +2907,44 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} (3,1,1) = {" aa @@ -1733,6 +2999,44 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} (4,1,1) = {" aa @@ -1787,6 +3091,44 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} (5,1,1) = {" aa @@ -1841,6 +3183,44 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} (6,1,1) = {" aa @@ -1895,6 +3275,44 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} (7,1,1) = {" aa @@ -1949,6 +3367,44 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} (8,1,1) = {" aa @@ -2003,6 +3459,44 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} (9,1,1) = {" aa @@ -2013,42 +3507,80 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2067,42 +3599,80 @@ aa aa aa aa -ab -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2121,42 +3691,80 @@ aa aa aa aa -ab -ac -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -bY -bY -bY -bY -bY -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ac -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2175,42 +3783,80 @@ aa aa aa aa -ab -ac -ad -af -af -af -af -af -af -af -af -bz -af -af -af -af -af -bz -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ad -ac -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2229,42 +3875,80 @@ aa aa aa aa -ab -ac -ad -af -ah -ah -ah -ah -ah -ah -ah -bA -gd -gd -bA -bZ -bZ -JE -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -af -ad -ac -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2283,42 +3967,80 @@ aa aa aa aa -ab -ac -ad -af -ah -al -aw -aM -aZ -bj -bs -bB -ca -If -In -kn -bO -bO -cO -cW -dm -dy -dy -dy -dX -dy -dy -dy -dy -dm -dK -cN -af -ad -ac -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2337,42 +4059,80 @@ aa aa aa aa -ab -ac -ad -af -ah -am -ax -aw -ba -bk -bt -fT -cb -AP -pA -kQ -bN -bN -cP -cX -dn -dn -dn -dn -dn -dn -dn -dn -dn -dn -dL -cN -af -ad -ac -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2391,8 +4151,2126 @@ aa aa aa aa -ab -ac +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(17,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +em +eX +ee +eX +em +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(18,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +em +gh +gl +gD +em +dY +dY +dY +aa +aa +aa +aa +aa +aa +aa +dY +dY +dY +dY +aa +aa +aa +aa +aa +dY +dY +dY +dY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(19,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +em +gi +gm +go +gp +ei +gr +dY +aa +aa +aa +aa +aa +aa +aa +dY +eh +eh +dY +aa +aa +aa +aa +aa +dY +eh +eh +dY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(20,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +db +dY +dY +dY +dY +eh +eq +en +aa +aa +aa +aa +aa +aa +aa +en +eh +eh +en +aa +aa +aa +aa +aa +en +eh +eh +gc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +PI +dj +ed +eh +eq +en +aa +aa +aa +aa +aa +aa +aa +en +eh +eh +en +aa +aa +aa +aa +aa +en +eh +eh +gc +ff +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(22,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +el +aa +aa +aa +fi +dP +ex +eh +eq +eo +aa +aa +aa +aa +aa +aa +aa +eo +eh +gv +dY +aa +aa +aa +aa +aa +dY +gI +eh +en +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(23,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +PI +dV +dY +ej +eq +en +aa +aa +aa +aa +aa +aa +aa +en +eh +eh +en +aa +aa +aa +aa +aa +en +eh +eh +en +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +fg +aa +db +dY +dY +dY +dY +eh +eq +en +aa +aa +aa +aa +aa +aa +aa +en +eh +gF +fj +aa +aa +aa +aa +aa +fj +eh +eh +en +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dY +gE +eq +dY +aa +aa +aa +aa +aa +aa +aa +dY +eh +eh +en +aa +aa +aa +aa +aa +en +eh +eh +dY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(26,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dY +gq +gs +dY +aa +aa +aa +aa +aa +aa +aa +dY +eh +gw +dY +aa +aa +aa +aa +aa +dY +gB +eh +en +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(27,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dY +eh +eq +en +aa +aa +aa +aa +aa +aa +aa +en +eh +ek +en +aa +aa +aa +aa +aa +en +ek +eh +dY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(28,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dY +eh +gt +en +aa +aa +aa +aa +aa +aa +aa +en +eh +ek +en +aa +aa +aa +aa +aa +en +ek +eh +en +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dY +ej +gt +eo +aa +aa +aa +aa +aa +aa +aa +eo +eh +ek +en +aa +aa +aa +aa +aa +en +ek +eh +dY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dY +eh +gt +en +aa +aa +aa +aa +aa +aa +aa +en +eh +gx +dY +aa +aa +aa +aa +aa +dY +gC +eh +dY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(31,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +eb +aa +aa +dY +eh +gt +dh +aa +aa +aa +ec +aa +aa +aa +dY +eh +ek +en +aa +aa +eE +aa +aa +en +ek +eh +dY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(32,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ag +ag +bw +di +bw +ag +bw +di +bw +ag +ag +eh +gt +dh +dh +en +en +en +en +en +dY +dY +eh +ek +dY +dY +fn +fs +en +dY +dY +ek +eh +dY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(33,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ag +dR +aD +aD +bC +de +gJ +aD +aD +dR +ag +eh +gt +eh +eV +eh +eh +eh +eh +eh +eV +eh +eh +ek +eh +eV +eh +eh +eh +eV +eh +ek +eh +dY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(34,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ag +gn +aD +aD +bH +ci +df +df +df +df +eg +ei +gu +ei +ep +ei +ei +ei +ei +eB +eL +eL +eL +fd +eL +eL +eL +eL +eL +eL +eL +fZ +eh +dY +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(35,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ag +aD +aD +aD +bT +cI +dg +aD +aD +aD +ag +eh +eh +eh +eq +eh +eh +eh +eh +eF +eM +fM +eh +eh +eh +eh +eh +eh +eh +eh +eh +eh +eh +ge +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(36,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +dH +ah +ah +ah +ah +ah +ah +ah +bA +bA +bA +bA +bZ +ft +bZ +cN +cN +cN +cN +cN +cN +ef +ef +cN +cN +cN +cN +cN +cN +fI +dY +dY +ge +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(37,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ah +al +aw +aM +aZ +bj +bs +bB +ca +If +In +kn +fu +bO +cO +cW +dm +dy +dy +dX +dy +dy +gG +dy +dy +dm +dK +cN +af +ad +fg +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(38,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ah +am +ax +aw +ba +bk +bt +fT +cb +AP +pA +kQ +fv +bN +cP +cX +dn +dn +dn +dn +dn +dn +dn +dn +dn +dn +dL +cN +af +ad +fg +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(39,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa ad af ah @@ -2425,8 +6303,44 @@ dL cN af ad -ac -ab +fg +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2436,7 +6350,11 @@ aa aa aa "} -(17,1,1) = {" +(40,1,1) = {" +aa +aa +aa +aa aa aa aa @@ -2445,8 +6363,6 @@ aa aa aa aa -ab -ac ad af ah @@ -2479,8 +6395,44 @@ dL cN af ad -ac -ab +fg +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2490,7 +6442,11 @@ aa aa aa "} -(18,1,1) = {" +(41,1,1) = {" +aa +aa +aa +aa aa aa aa @@ -2499,8 +6455,6 @@ aa aa aa aa -ab -ac ad af ah @@ -2533,8 +6487,44 @@ dL cN af ad -ac -ab +fg +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2544,7 +6534,11 @@ aa aa aa "} -(19,1,1) = {" +(42,1,1) = {" +aa +aa +aa +aa aa aa aa @@ -2553,8 +6547,6 @@ aa aa aa aa -ab -ac ad bY ah @@ -2587,8 +6579,44 @@ dL cN af ad -ac -ab +fg +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2598,7 +6626,11 @@ aa aa aa "} -(20,1,1) = {" +(43,1,1) = {" +aa +aa +aa +aa aa aa aa @@ -2607,8 +6639,6 @@ aa aa aa aa -ab -ac ae ab ab @@ -2623,7 +6653,7 @@ ce cp cv cC -bE +lX bE cR cY @@ -2641,8 +6671,44 @@ dZ cN af bY -ac -ab +fg +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2652,7 +6718,11 @@ aa aa aa "} -(21,1,1) = {" +(44,1,1) = {" +aa +aa +aa +aa aa aa aa @@ -2661,8 +6731,6 @@ aa aa aa aa -ab -ac ae ab ai @@ -2695,8 +6763,44 @@ dL cN af bY -ac -ab +fg +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2706,7 +6810,11 @@ aa aa aa "} -(22,1,1) = {" +(45,1,1) = {" +aa +aa +aa +aa aa aa aa @@ -2715,8 +6823,6 @@ aa aa aa aa -ab -ac ae ab ai @@ -2749,1213 +6855,7 @@ dL cN af bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(23,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ae -ab -ab -ab -aB -ab -ab -ab -bv -bJ -cf -cq -cw -cD -bE -bE -cQ -cY -dn -dn -dn -dn -dn -dn -dn -dn -dn -dn -dL -cN -af -bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(24,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ae -ac -ac -ab -aB -ab -ac -ac -bv -bK -cf -Iy -bu -cD -bE -bE -cQ -cY -dn -dn -dn -dn -dn -dn -dn -dn -dn -dn -dL -cN -af -bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(25,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ae -ac -ac -aj -aC -aj -ac -ac -bv -bL -cf -cq -bv -cD -bE -bE -cN -cZ -do -dz -dz -dz -dz -dz -dz -dz -dz -do -dM -cN -af -bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(26,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ae -ac -ac -aj -Vy -aj -ac -ac -bu -bM -cg -cr -bu -wb -bE -bE -cS -cS -cS -cS -cS -cS -dG -dG -cS -cS -cS -cS -cS -cS -af -bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(27,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -bY -aj -aj -WT -aj -aj -aj -bu -bu -ch -cs -cs -cE -bO -bO -cT -da -dp -dl -dl -dl -dl -dl -dl -dl -dl -dp -dl -cS -af -bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(28,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -aj -ap -Vy -aS -bd -bo -aj -hD -cj -ct -Ce -cF -bE -bE -cS -dl -dl -dl -dl -dl -dl -dl -dl -dl -dl -dl -dl -cS -af -bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(29,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -aj -aq -aE -aT -be -be -bx -CV -yp -wT -wT -CK -bN -bN -cU -gM -dc -dA -dl -dD -dc -dc -dA -dl -dD -dc -dc -cS -af -bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(30,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -aj -ar -aF -Vy -bf -bp -aj -bP -pQ -Ce -Ce -oV -bE -bE -cS -dd -dq -dB -dl -dE -dH -dI -dB -dl -dE -dJ -ny -cS -af -bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(31,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -ak -ak -ak -aU -ak -ak -ak -bQ -pQ -Ce -Ce -vP -bE -Vg -cS -de -dr -dB -dl -dE -dH -dI -dB -dl -dE -dJ -dO -cS -af -bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(32,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -ak -as -aG -aV -bg -bq -ak -bR -pQ -Ce -Ce -oV -bE -bE -cV -df -ds -dB -dl -dE -dH -dI -dB -dl -dE -dJ -jU -cS -af -bY -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(33,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -ak -at -aH -aW -bh -br -ak -bS -pQ -Ce -Ce -oV -bE -bE -cV -dg -dt -dB -lK -dE -dH -dI -dB -dl -dE -dJ -ea -cS -af -ad -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(34,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -ak -au -aI -aX -aI -aI -ak -Ly -pQ -Xg -Ce -oV -bE -bE -cV -dh -du -dB -dl -dE -dH -dI -dB -dl -dE -dJ -dN -cS -af -ad -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(35,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -ak -av -av -av -av -av -by -by -ck -by -cx -cG -cx -by -by -di -dv -dB -dl -dE -dH -dI -dB -dl -dE -dJ -dQ -cS -af -ad -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(36,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -ak -av -aJ -aK -aL -av -by -bU -cl -cu -cu -cH -cu -cJ -by -dj -dw -dB -dl -dE -dH -dI -dB -dl -dE -dJ -dN -cS -af -ad -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(37,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -ak -dT -aK -av -bi -av -by -bV -cm -cm -cm -cm -cm -cK -by -dk -dk -dC -dl -dF -dk -dk -dC -dl -dF -dk -dk -cS -af -ad -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(38,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -ak -av -aL -aK -aJ -av -by -bW -cm -cm -cm -cm -cm -cL -by -dl -dl -dl -dl -dl -dl -dl -dl -dl -dl -dl -dl -cS -af -ad -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(39,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -ak -av -av -aY -av -av -by -bX -cm -cm -cy -Ut -cm -cM -by -dl -dx -dl -dl -dl -dY -dl -dl -dl -dl -dx -dl -cS -af -ad -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(40,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -ak -ak -ak -ak -ak -ak -by -by -cn -by -Qt -by -cm -BB -by -cS -cS -cS -cS -cS -cS -vv -cS -cS -cS -cS -cS -cS -af -ad -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(41,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -af -af -af -af -af -af -af -af -af -af -by -cz -by -kk -ei -ad -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ad -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(42,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -by -pI -by -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(43,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(44,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(45,1,1) = {" -aa -aa -aa -aa -aa -aa -aa +fg aa aa aa @@ -4015,6 +6915,44 @@ aa aa aa aa +ae +ab +ab +ab +aB +ab +ab +ab +bv +bJ +cf +cq +cw +cD +bE +bE +cQ +cY +dn +dn +dn +dn +dn +dn +dn +dn +dn +dn +dL +cN +af +bY +fg +aa +aa +aa +aa +aa aa aa aa @@ -4069,6 +7007,44 @@ aa aa aa aa +ae +ac +ac +ab +aB +ab +ac +ac +bv +bK +cf +Iy +bu +cD +bE +bE +cQ +cY +dn +dn +dn +dn +dn +dn +dn +dn +dn +dn +dL +cN +af +bY +fg +aa +aa +aa +aa +aa aa aa aa @@ -4123,6 +7099,44 @@ aa aa aa aa +ae +ac +ac +aj +aC +aj +ac +ac +bv +bL +cf +cq +bv +cD +bE +bE +cN +cZ +do +dz +dz +gy +dz +dz +gy +dz +dz +do +dM +cN +af +bY +fg +aa +aa +aa +aa +aa aa aa aa @@ -4177,6 +7191,44 @@ aa aa aa aa +ae +ac +ac +aj +VA +aj +ac +ac +bu +bM +cg +cr +bu +wb +bE +bE +cS +cS +cS +cS +cS +cS +dG +dG +cS +cS +cS +cS +cS +cS +fJ +ga +ga +ga +aa +aa +aa +aa aa aa aa @@ -4231,6 +7283,44 @@ aa aa aa aa +ad +bY +aj +aj +WT +aj +aj +aj +bu +bu +cd +bu +bu +cE +bE +bE +cS +dd +dp +dl +dl +fX +dE +dB +dl +dl +dl +dp +dE +cS +fO +fO +fO +gf +aa +aa +aa +aa aa aa aa @@ -4285,6 +7375,44 @@ aa aa aa aa +ad +af +aj +ap +Vy +aS +bd +bo +aj +hD +cj +ct +Ce +cF +bE +bE +cS +dc +dC +dC +dC +dC +eI +eW +dC +dC +dC +dC +eI +vv +fO +fO +fO +fb +aa +aa +aa +aa aa aa aa @@ -4339,6 +7467,3540 @@ aa aa aa aa +ad +af +aj +aq +aE +aT +be +be +bx +CV +fL +ch +cs +cT +cU +cU +da +fK +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +eD +cS +fO +fO +fO +gf +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(53,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +aj +ar +aF +lg +bf +bp +aj +bP +pQ +JF +Ce +oV +bE +bE +cS +fx +dq +dJ +dJ +dJ +dI +dJ +dJ +dJ +dJ +dJ +ny +cS +fP +fO +fO +fb +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(54,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ak +ak +ak +aU +ak +ak +ak +bQ +pQ +Ce +Ce +vP +bE +Vg +cS +fy +dr +dJ +dJ +dJ +dI +dJ +dJ +dJ +dJ +dJ +dO +cS +gz +fO +fO +gf +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(55,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ak +as +aG +aV +bg +bq +ak +bR +pQ +Ce +Ce +oV +bE +bE +cV +fz +ds +dJ +dJ +dJ +dI +dJ +dJ +dJ +dJ +dJ +jU +cS +fQ +fO +fO +ga +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(56,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +qn +Bl +at +aH +aW +bh +br +ak +bS +pQ +Ce +Ce +oV +bE +bE +cV +fA +dt +dJ +dD +dJ +dI +dJ +dJ +dJ +dJ +dJ +ea +cS +fS +fO +fO +gk +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(57,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ak +au +aI +aX +aI +aI +ak +Ly +pQ +Xg +Ce +oV +bE +bE +cV +fC +du +dJ +dJ +dJ +dI +dJ +dJ +dJ +dJ +dJ +dN +cS +fU +gb +fO +ga +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(58,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ak +av +av +av +av +av +by +by +ck +by +cx +cG +cx +by +by +fD +dv +dJ +dJ +dJ +dI +dJ +dJ +dJ +dJ +dJ +dQ +cS +gA +fO +fO +gf +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(59,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ak +av +aJ +aK +aL +av +by +bU +cl +cu +cu +cH +cu +cJ +by +fE +dw +dJ +dJ +dJ +dI +dJ +dJ +dJ +dJ +dJ +dN +cS +gH +fO +fO +fb +fp +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(60,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ak +dT +aK +av +bi +av +by +bV +cm +cm +cm +cm +cm +cK +by +dA +dJ +dJ +dJ +dJ +dF +dJ +dJ +dJ +dJ +dJ +eD +cS +fV +fO +fO +gf +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(61,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ak +av +aL +aK +aJ +av +by +bW +cm +cm +cm +cm +cm +cL +by +dk +eH +eH +eH +eH +eK +fw +fG +fG +fG +fG +fH +fR +fW +fO +fO +fb +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(62,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ak +av +av +aY +av +av +by +bX +cm +eU +cy +Ut +cm +cM +by +dB +dx +dl +dl +gg +ez +dB +dl +dl +dl +dx +dE +cS +fO +fO +fO +gf +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(63,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +ak +ak +ak +ak +ak +ak +by +by +cn +by +Qt +by +cm +BB +by +cS +cS +cS +cS +cS +fN +vv +cS +cS +cS +cS +cS +cS +ga +ga +ga +ga +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(64,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +af +af +af +af +af +af +af +af +af +af +by +cz +by +er +es +by +eu +eu +eG +eP +fY +eZ +eu +fq +fr +eu +eu +eu +et +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(65,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +by +pI +by +by +by +by +eu +eu +eu +eQ +eu +fa +eu +eu +eu +fo +eu +eu +et +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(66,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +fg +fg +fg +fg +fg +fg +fg +fg +fg +fg +fg +fg +fg +fg +fg +fg +et +ev +eA +eA +eA +eN +ev +fe +ev +eT +fm +fm +ev +et +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(67,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +et +ey +fh +fh +fh +eY +eR +fh +eR +fc +fh +fh +fh +et +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(68,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ew +eC +fF +fB +fF +fl +ew +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(69,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +fh +eY +eS +fh +eS +fc +fh +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(70,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +eJ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(71,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(72,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(73,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(74,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(75,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(76,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(77,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(78,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(79,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(80,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(81,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(82,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(83,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(84,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(85,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(86,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(87,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(88,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(89,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(90,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index d432fe7d8c..1811eab278 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( /turf/open/space/basic, /area/space) @@ -2518,10 +2518,6 @@ /obj/machinery/capture_the_flag/red, /turf/open/floor/circuit/green/anim, /area/ctf) -"hH" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/wood, -/area/centcom/holding) "hI" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -3320,10 +3316,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/centcom/supply) -"jO" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/wood, -/area/centcom/holding) "jP" = ( /obj/machinery/conveyor_switch/oneway{ dir = 8; @@ -4635,9 +4627,7 @@ /turf/open/floor/plasteel/brown, /area/centcom/supply) "no" = ( -/obj/structure/plasticflaps{ - opacity = 1 - }, +/obj/structure/plasticflaps/opaque, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -5171,9 +5161,7 @@ /area/centcom/ferry) "oC" = ( /obj/structure/chair/comfy/brown{ - color = "#c45c57"; - dir = 4; - icon_state = "comfychair" + dir = 4 }, /turf/open/floor/plasteel/grimy, /area/centcom/ferry) @@ -5205,9 +5193,7 @@ /area/centcom/ferry) "oH" = ( /obj/structure/chair/comfy/brown{ - color = "#c45c57"; - dir = 8; - icon_state = "comfychair" + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -5318,20 +5304,15 @@ dir = 8 }, /area/tdome/tdomeobserve) -"oU" = ( -/obj/structure/closet/secure_closet/bar{ - locked = 0; - req_access_txt = "25" +"oV" = ( +/obj/machinery/vr_sleeper{ + dir = 4 }, /obj/machinery/light{ - dir = 1 + dir = 8 }, /turf/open/floor/wood, /area/centcom/holding) -"oV" = ( -/obj/structure/reagent_dispensers/beerkeg, -/turf/open/floor/wood, -/area/centcom/holding) "oW" = ( /obj/structure/flora/bush, /obj/effect/light_emitter{ @@ -5387,9 +5368,7 @@ /area/centcom/ferry) "pb" = ( /obj/structure/chair/comfy/brown{ - color = "#c45c57"; - dir = 8; - icon_state = "comfychair" + dir = 8 }, /turf/open/floor/plasteel/grimy, /area/centcom/ferry) @@ -5576,69 +5555,17 @@ dir = 8 }, /area/centcom/control) -"px" = ( -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/centcom/holding) "py" = ( -/obj/machinery/chem_dispenser/drinks, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/centcom/holding) -"pz" = ( -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 +/obj/machinery/smartfridge, +/turf/closed/indestructible{ + icon = 'icons/turf/walls/wood_wall.dmi'; + icon_state = "wood"; + smooth = 1 }, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/centcom/holding) -"pA" = ( -/obj/machinery/vending/cola/random, -/turf/open/floor/wood, -/area/centcom/holding) -"pB" = ( -/obj/structure/rack, -/obj/item/toy/sword, -/obj/machinery/light{ - dir = 1 - }, -/obj/item/coin/gold{ - pixel_x = 8; - pixel_y = -3 - }, -/obj/item/camera, -/turf/open/floor/wood, -/area/centcom/holding) -"pC" = ( -/obj/structure/rack, -/obj/item/toy/gun, -/obj/item/coin/gold{ - pixel_w = -9; - pixel_y = 6 - }, -/turf/open/floor/wood, -/area/centcom/holding) -"pD" = ( -/obj/machinery/computer/arcade/battle, -/turf/open/floor/wood, /area/centcom/holding) "pE" = ( -/obj/machinery/computer/arcade/orion_trail, -/turf/open/floor/wood, +/obj/machinery/plantgenes/seedvault, +/turf/open/floor/plasteel/whitegreen, /area/centcom/holding) "pF" = ( /obj/machinery/door/airlock/centcom{ @@ -5765,24 +5692,20 @@ }, /area/centcom/ferry) "pS" = ( -/obj/machinery/computer/slot_machine, -/turf/open/floor/wood, -/area/centcom/holding) -"pT" = ( -/obj/machinery/vending/snack/random, -/turf/open/floor/wood, -/area/centcom/holding) -"pU" = ( -/turf/open/floor/wood, +/obj/structure/table, +/obj/item/stack/packageWrap, +/turf/open/floor/plasteel/cafeteria, /area/centcom/holding) "pV" = ( -/obj/item/clothing/head/that, -/obj/structure/table/wood, -/turf/open/floor/wood, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, /area/centcom/holding) "pW" = ( -/turf/open/floor/carpet/black, -/area/centcom/holding) +/obj/effect/landmark/ai_multicam_room, +/turf/open/ai_visible, +/area/ai_multicam_room) "pX" = ( /obj/item/storage/crayons, /obj/structure/table, @@ -6048,30 +5971,6 @@ "qE" = ( /turf/closed/indestructible/riveted/uranium, /area/wizard_station) -"qF" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/turf/open/floor/carpet/black, -/area/centcom/holding) -"qG" = ( -/obj/structure/table/wood, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses{ - pixel_x = 2; - pixel_y = 4 - }, -/turf/open/floor/wood, -/area/centcom/holding) -"qH" = ( -/obj/item/reagent_containers/food/drinks/shaker, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/centcom/holding) -"qI" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/centcom/holding) "qJ" = ( /obj/machinery/computer/shuttle/syndicate/recall, /turf/open/floor/plasteel/bar{ @@ -6197,16 +6096,6 @@ /obj/machinery/computer/shuttle, /turf/open/floor/engine/cult, /area/wizard_station) -"rb" = ( -/obj/item/lighter, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/centcom/holding) -"rc" = ( -/obj/item/reagent_containers/food/drinks/soda_cans/cola, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/centcom/holding) "rd" = ( /obj/structure/flora/grass/brown, /obj/effect/light_emitter{ @@ -6633,48 +6522,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"rY" = ( -/obj/item/dice/d20, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/centcom/holding) -"rZ" = ( -/obj/structure/rack, -/obj/item/clothing/head/that, -/obj/item/clothing/under/suit_jacket, -/obj/item/clothing/accessory/waistcoat, -/turf/open/floor/wood, -/area/centcom/holding) -"sa" = ( -/obj/structure/rack, -/obj/item/storage/crayons, -/obj/item/gun/ballistic/automatic/toy/pistol, -/obj/item/ammo_box/foambox, -/turf/open/floor/wood, -/area/centcom/holding) -"sb" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/wood, -/area/centcom/holding) -"sc" = ( -/obj/structure/rack, -/obj/item/storage/crayons, -/obj/item/gun/ballistic/shotgun/toy/crossbow, -/turf/open/floor/wood, -/area/centcom/holding) -"sd" = ( -/obj/structure/rack, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/under/suit_jacket/female{ - desc = "A black trouser suit for women. Very formal."; - name = "black suit"; - pixel_x = 3; - pixel_y = 1 - }, -/turf/open/floor/wood, -/area/centcom/holding) "se" = ( /obj/machinery/light{ dir = 8 @@ -7076,34 +6923,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"sY" = ( -/mob/living/simple_animal/bot/medbot, -/turf/open/floor/wood, -/area/centcom/holding) -"sZ" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/turf/open/floor/wood, -/area/centcom/holding) -"ta" = ( -/obj/machinery/light, -/turf/open/floor/wood, -/area/centcom/holding) -"tb" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/wood, -/area/centcom/holding) -"tc" = ( -/obj/structure/closet/wardrobe/mixed, -/turf/open/floor/wood, -/area/centcom/holding) -"td" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/costume, -/obj/effect/spawner/lootdrop/costume, -/turf/open/floor/wood, -/area/centcom/holding) "te" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/pizzaslice/mushroom, @@ -7144,40 +6963,6 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) -"tj" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/costume, -/obj/effect/spawner/lootdrop/costume, -/obj/machinery/light, -/obj/machinery/button/door{ - id = "Ninjaholdingsuicide"; - name = "SUICIDE CHAMBER LOCK"; - normaldoorcontrol = 1; - pixel_x = 4; - pixel_y = -24; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/centcom/holding) -"tk" = ( -/obj/machinery/door/airlock/wood/glass{ - name = "Private Rooms" - }, -/turf/open/floor/wood, -/area/centcom/holding) -"tl" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - id_tag = "Ninjaholdingsuicide"; - locked = 1; - name = "SUICIDE CHAMBER" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/centcom/holding) -"tm" = ( -/turf/open/floor/carpet, -/area/centcom/holding) "tn" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -7314,7 +7099,7 @@ /turf/open/floor/plasteel, /area/centcom/ferry) "tE" = ( -/obj/machinery/computer/monitor{ +/obj/machinery/computer/monitor/secret{ dir = 1 }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -7479,8 +7264,12 @@ /turf/open/floor/plasteel, /area/centcom/evac) "tW" = ( -/obj/structure/table/wood/fancy/black, -/turf/open/floor/carpet, +/obj/structure/rack, +/obj/item/nullrod/claymore{ + damtype = "stamina"; + force = 30 + }, +/turf/open/floor/wood, /area/centcom/holding) "tX" = ( /obj/machinery/door/airlock{ @@ -7489,40 +7278,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"tY" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/centcom/holding) -"tZ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood, -/area/centcom/holding) -"ua" = ( -/obj/structure/plasticflaps, -/turf/open/floor/wood{ - icon_state = "wood-broken4" - }, -/area/centcom/holding) -"ub" = ( -/obj/machinery/door/airlock/wood{ - id_tag = "Proom1"; - name = "Room 1" - }, -/turf/open/floor/wood, -/area/centcom/holding) -"uc" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/chair/comfy/black{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/centcom/holding) "ud" = ( /obj/machinery/door/poddoor/shutters{ id = "nukeop_ready"; @@ -7536,25 +7291,6 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) -"uf" = ( -/turf/open/lava, -/area/centcom/holding) -"ug" = ( -/obj/machinery/button/door{ - id = "Proom1"; - name = "Door Lock"; - normaldoorcontrol = 1; - pixel_x = -24; - pixel_y = 4; - specialfunctions = 4 - }, -/obj/structure/bed, -/obj/item/bedsheet/random, -/turf/open/floor/carpet, -/area/centcom/holding) -"uh" = ( -/turf/open/chasm/lavaland, -/area/centcom/holding) "ui" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7756,37 +7492,12 @@ /obj/structure/chair/wood/wings, /turf/open/floor/carpet, /area/wizard_station) -"uG" = ( -/obj/structure/chair/sofa/left, -/turf/open/floor/carpet, -/area/centcom/holding) -"uH" = ( -/obj/structure/chair/sofa/corner{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/centcom/holding) -"uI" = ( -/obj/structure/chair/sofa, -/turf/open/floor/carpet, -/area/centcom/holding) "uJ" = ( /obj/machinery/door/airlock/external{ req_access_txt = "150" }, /turf/open/floor/plating, /area/syndicate_mothership/control) -"uK" = ( -/obj/machinery/button/door{ - id = "Proom2"; - name = "Door Lock"; - normaldoorcontrol = 1; - pixel_x = 24; - pixel_y = 4; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/centcom/holding) "uL" = ( /obj/machinery/button/door{ id = "nukeop_ready"; @@ -7805,10 +7516,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/syndicate_mothership/control) -"uN" = ( -/obj/structure/table/wood/poker, -/turf/open/floor/carpet, -/area/centcom/holding) "uO" = ( /obj/machinery/door/airlock/centcom{ name = "Shuttle Control Office"; @@ -7990,14 +7697,12 @@ /area/wizard_station) "vk" = ( /obj/structure/chair/wood/wings{ - icon_state = "wooden_chair_wings"; dir = 1 }, /turf/open/floor/wood, /area/wizard_station) "vl" = ( /obj/structure/chair/wood/wings{ - icon_state = "wooden_chair_wings"; dir = 4 }, /turf/open/floor/carpet, @@ -8009,49 +7714,21 @@ /area/wizard_station) "vn" = ( /obj/structure/chair/wood/wings{ - icon_state = "wooden_chair_wings"; dir = 8 }, /turf/open/floor/carpet, /area/wizard_station) -"vo" = ( -/obj/structure/chair/sofa{ - icon_state = "sofamiddle"; - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/centcom/holding) -"vp" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/wood, -/area/centcom/holding) -"vq" = ( -/obj/machinery/door/airlock/wood{ - id_tag = "Proom2"; - name = "Room 2" - }, -/turf/open/floor/wood, -/area/centcom/holding) -"vr" = ( -/obj/structure/chair/sofa/corner{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/centcom/holding) "vs" = ( -/obj/structure/chair/sofa/left{ - dir = 1 - }, -/turf/open/floor/carpet, +/obj/machinery/vending/hydronutrients, +/turf/open/floor/plasteel/whitegreen, /area/centcom/holding) "vt" = ( -/obj/machinery/vending/games, -/turf/open/floor/carpet, +/obj/structure/rack, +/obj/item/nullrod/claymore/katana{ + damtype = "stamina"; + force = 30 + }, +/turf/open/floor/wood, /area/centcom/holding) "vu" = ( /obj/item/storage/box/drinkingglasses, @@ -8075,19 +7752,6 @@ /obj/item/toy/nuke, /turf/open/floor/wood, /area/syndicate_mothership/control) -"vy" = ( -/obj/structure/chair/sofa{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/centcom/holding) -"vz" = ( -/obj/machinery/door/airlock/wood{ - id_tag = "Proom3"; - name = "Room 3" - }, -/turf/open/floor/wood, -/area/centcom/holding) "vA" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -8350,73 +8014,10 @@ /area/wizard_station) "wd" = ( /obj/structure/chair/wood/wings{ - icon_state = "wooden_chair_wings"; dir = 1 }, /turf/open/floor/carpet, /area/wizard_station) -"we" = ( -/obj/machinery/button/door{ - id = "Proom3"; - name = "Door Lock"; - normaldoorcontrol = 1; - pixel_x = -24; - pixel_y = 4; - specialfunctions = 4 - }, -/obj/structure/bed, -/obj/item/bedsheet/random, -/turf/open/floor/carpet, -/area/centcom/holding) -"wf" = ( -/obj/machinery/button/door{ - id = "Proom4"; - name = "Door Lock"; - normaldoorcontrol = 1; - pixel_x = 24; - pixel_y = 4; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/centcom/holding) -"wg" = ( -/obj/machinery/door/airlock/wood{ - id_tag = "Proom4"; - name = "Room 4" - }, -/turf/open/floor/wood, -/area/centcom/holding) -"wh" = ( -/obj/structure/table/wood, -/obj/item/soap/nanotrasen, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/wood, -/area/centcom/holding) -"wi" = ( -/obj/structure/table/wood, -/obj/structure/bedsheetbin, -/turf/open/floor/wood, -/area/centcom/holding) -"wj" = ( -/obj/machinery/door/airlock/wood{ - id_tag = "Proom5"; - name = "Room 5" - }, -/turf/open/floor/wood, -/area/centcom/holding) -"wk" = ( -/obj/machinery/button/door{ - id = "Proom5"; - name = "Door Lock"; - normaldoorcontrol = 1; - pixel_x = -24; - pixel_y = 4; - specialfunctions = 4 - }, -/obj/structure/bed, -/obj/item/bedsheet/random, -/turf/open/floor/carpet, -/area/centcom/holding) "wl" = ( /obj/machinery/light, /turf/open/floor/wood, @@ -8610,7 +8211,6 @@ /area/centcom/evac) "wM" = ( /obj/structure/chair/wood/wings{ - icon_state = "wooden_chair_wings"; dir = 8 }, /turf/open/floor/wood, @@ -8988,6 +8588,17 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"yd" = ( +/obj/structure/flora/ausbushes/fernybush, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/grass, +/area/centcom/holding) "yj" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -9197,6 +8808,12 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/grass, /area/wizard_station) +"yM" = ( +/obj/structure/table/wood/bar, +/obj/structure/safe/floor, +/obj/item/seeds/cherry/bomb, +/turf/open/floor/wood, +/area/centcom/holding) "yU" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ @@ -9339,11 +8956,8 @@ /area/centcom/ferry) "zj" = ( /obj/structure/closet/secure_closet/ertCom, -/obj/structure/sign/directions/engineering{ - desc = "A direction sign, pointing out which way the Command department is."; +/obj/structure/sign/directions/command{ dir = 2; - icon_state = "direction_bridge"; - name = "command department"; pixel_y = 24 }, /obj/effect/turf_decal/stripes/line, @@ -9525,6 +9139,22 @@ }, /turf/open/floor/grass, /area/wizard_station) +"zV" = ( +/obj/structure/closet/secure_closet/freezer/meat{ + locked = 0 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"zX" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "Ab" = ( /obj/machinery/photocopier, /turf/open/floor/plasteel/grimy, @@ -9694,6 +9324,10 @@ /obj/effect/decal/remains/xeno, /turf/open/floor/grass, /area/wizard_station) +"AG" = ( +/obj/structure/ladder/unbreakable/binary/space, +/turf/open/indestructible/airblock, +/area/fabric_of_reality) "AJ" = ( /obj/structure/chair/comfy/brown{ color = "#596479"; @@ -9845,7 +9479,6 @@ /area/abductor_ship) "Bf" = ( /obj/structure/chair/wood/wings{ - icon_state = "wooden_chair_wings"; dir = 1 }, /turf/open/floor/engine/cult, @@ -9866,6 +9499,17 @@ /obj/item/reagent_containers/food/snacks/meat/slab/xeno, /turf/open/floor/grass, /area/wizard_station) +"Bo" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/item/reagent_containers/glass/beaker/large, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"Bs" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement, +/turf/open/floor/wood, +/area/centcom/holding) "Bu" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -10110,6 +9754,14 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"BV" = ( +/obj/machinery/chem_dispenser/drinks/beer, +/turf/closed/indestructible{ + icon = 'icons/turf/walls/wood_wall.dmi'; + icon_state = "wood"; + smooth = 1 + }, +/area/centcom/holding) "BY" = ( /obj/item/toy/figure/syndie, /turf/open/floor/plating/asteroid/snow/airless, @@ -10468,6 +10120,16 @@ dir = 8 }, /area/centcom/evac) +"CT" = ( +/obj/machinery/vr_sleeper{ + dir = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"CV" = ( +/obj/structure/chair/stool, +/turf/open/floor/wood, +/area/centcom/holding) "CX" = ( /obj/structure/closet/secure_closet/security, /obj/item/storage/belt/security/full, @@ -10579,6 +10241,15 @@ dir = 8 }, /area/centcom/evac) +"Di" = ( +/turf/closed/indestructible/riveted, +/area/ai_multicam_room) +"Dj" = ( +/obj/machinery/vr_sleeper{ + dir = 8 + }, +/turf/open/floor/wood, +/area/centcom/holding) "Dq" = ( /obj/machinery/door/airlock/external, /obj/effect/turf_decal/stripes/line{ @@ -11060,7 +10731,14 @@ /turf/open/floor/engine/cult, /area/wizard_station) "ED" = ( -/turf/closed/indestructible/riveted, +/obj/machinery/vending/boozeomat{ + req_access_txt = "0" + }, +/turf/closed/indestructible{ + icon = 'icons/turf/walls/wood_wall.dmi'; + icon_state = "wood"; + smooth = 1 + }, /area/centcom/holding) "EE" = ( /obj/structure/closet/crate/bin, @@ -11198,23 +10876,40 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"Fa" = ( +/obj/structure/table/wood, +/obj/item/instrument/piano_synth, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"Fb" = ( +/obj/structure/piano, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"Fc" = ( +/obj/structure/sign/barsign{ + pixel_y = 32 + }, +/obj/structure/chair/stool, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"Fh" = ( +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "Fi" = ( -/turf/open/floor/plating/beach/sand, -/area/centcom/holding) -"Fj" = ( -/obj/effect/overlay/palmtree_r, -/obj/effect/overlay/coconut, -/turf/open/floor/plating/beach/sand, -/area/centcom/holding) -"Fk" = ( +/obj/structure/chair/wood/wings{ + dir = 3 + }, /obj/machinery/light{ dir = 1 }, -/turf/open/floor/plating/beach/sand, +/turf/open/floor/wood, /area/centcom/holding) -"Fl" = ( -/obj/effect/overlay/palmtree_l, -/turf/open/floor/plating/beach/sand, +"Fj" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/wood, /area/centcom/holding) "Fm" = ( /obj/machinery/shower{ @@ -11314,10 +11009,6 @@ dir = 5 }, /area/tdome/tdomeobserve) -"FC" = ( -/obj/item/camera, -/turf/open/floor/plating/beach/sand, -/area/centcom/holding) "FD" = ( /obj/machinery/shower{ dir = 4 @@ -11420,21 +11111,17 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"FZ" = ( -/obj/structure/chair/stool{ - pixel_y = 8 +"FW" = ( +/obj/structure/window/reinforced{ + dir = 1 }, -/obj/item/clothing/head/bandana{ - pixel_y = -10 +/obj/structure/window/reinforced{ + dir = 4 }, -/obj/item/clothing/glasses/sunglasses, -/turf/open/floor/plating/beach/sand, +/turf/open/floor/wood, /area/centcom/holding) -"Ga" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/turf/open/floor/plating/beach/sand, +"FX" = ( +/turf/open/floor/plasteel/stairs, /area/centcom/holding) "Gb" = ( /obj/machinery/shower{ @@ -11540,9 +11227,11 @@ }, /turf/open/lava, /area/wizard_station) -"Gt" = ( -/obj/item/toy/beach_ball, -/turf/open/floor/plating/beach/sand, +"Gs" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, /area/centcom/holding) "Gu" = ( /obj/machinery/door/airlock/silver{ @@ -11819,12 +11508,11 @@ /obj/structure/shuttle/engine/propulsion, /turf/open/space, /area/wizard_station) -"GZ" = ( -/turf/open/floor/plating/beach/coastline_b, -/area/centcom/holding) -"Ha" = ( -/obj/item/clothing/head/collectable/paper, -/turf/open/floor/plating/beach/coastline_b, +"GY" = ( +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/turf/open/floor/wood, /area/centcom/holding) "Hb" = ( /obj/structure/sink{ @@ -11872,7 +11560,14 @@ }, /area/tdome/tdomeobserve) "Hm" = ( -/turf/open/floor/plating/beach/water, +/obj/structure/flora/ausbushes/fernybush, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/grass, /area/centcom/holding) "Hn" = ( /obj/structure/sink{ @@ -11973,14 +11668,6 @@ }, /turf/open/floor/plasteel/white, /area/tdome/tdomeobserve) -"Hy" = ( -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plasteel, -/area/centcom/holding) -"Hz" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/centcom/holding) "HA" = ( /obj/structure/sink{ dir = 8; @@ -12035,8 +11722,8 @@ /turf/open/space, /area/space) "HH" = ( -/obj/effect/landmark/holding_facility, -/turf/open/floor/engine, +/obj/machinery/light, +/turf/open/floor/wood, /area/centcom/holding) "HI" = ( /obj/structure/sink{ @@ -12111,6 +11798,14 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"HQ" = ( +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "sink"; + pixel_y = 28 + }, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) "HR" = ( /obj/structure/sink{ dir = 4; @@ -12752,6 +12447,14 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel, /area/tdome/arena) +"JE" = ( +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "sink"; + pixel_y = 28 + }, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "JF" = ( /obj/machinery/computer/camera_advanced/abductor{ team_number = 1 @@ -13223,6 +12926,12 @@ "KS" = ( /turf/closed/wall/mineral/titanium/interior, /area/centcom/evac) +"KT" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) "KU" = ( /obj/structure/closet/emcloset, /turf/open/floor/mineral/titanium/blue, @@ -13632,6 +13341,26 @@ }, /turf/open/floor/plasteel, /area/tdome/arena) +"Mm" = ( +/turf/open/floor/grass, +/area/centcom/holding) +"Mu" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"Mx" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/nullrod/claymore/saber/red{ + damtype = "stamina"; + force = 30 + }, +/turf/open/floor/wood, +/area/centcom/holding) "My" = ( /obj/docking_port/stationary{ area_type = /area/syndicate_mothership; @@ -13646,6 +13375,9 @@ }, /turf/open/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) +"MB" = ( +/turf/open/indestructible/binary, +/area/fabric_of_reality) "MD" = ( /obj/effect/light_emitter{ set_cap = 1; @@ -13664,6 +13396,41 @@ }, /turf/open/floor/wood, /area/wizard_station) +"MG" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window/eastright{ + dir = 8; + name = "Animal Pen" + }, +/turf/open/floor/grass, +/area/centcom/holding) +"MH" = ( +/obj/structure/ladder/unbreakable/binary/unlinked, +/turf/open/indestructible/airblock, +/area/fabric_of_reality) +"MM" = ( +/obj/structure/window/reinforced, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"MR" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"MT" = ( +/obj/machinery/processor, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"Nd" = ( +/turf/closed/indestructible{ + icon = 'icons/turf/walls/wood_wall.dmi'; + icon_state = "wood"; + smooth = 1 + }, +/area/centcom/holding) "Nk" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome"; @@ -13678,6 +13445,51 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"Nm" = ( +/obj/structure/closet/crate, +/obj/item/vending_refill/autodrobe, +/obj/item/stack/sheet/paperframes/fifty, +/obj/item/stack/sheet/paperframes/fifty, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/turf/open/floor/wood, +/area/centcom/holding) +"Nn" = ( +/obj/structure/closet/secure_closet/hydroponics{ + locked = 0 + }, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"Nq" = ( +/mob/living/simple_animal/bot/medbot/mysterious{ + desc = "If you don't accidentally blow yourself up from time to time you're not really a wizard anyway."; + faction = list("neutral","silicon","creature"); + name = "Nobody's Perfect" + }, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"Nv" = ( +/obj/structure/table, +/turf/open/floor/plasteel/cafeteria{ + dir = 2 + }, +/area/centcom/holding) +"Nw" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"Ny" = ( +/obj/machinery/modular_computer/console/preset/research, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"NF" = ( +/obj/structure/ladder/unbreakable/binary, +/turf/open/indestructible/airblock, +/area/fabric_of_reality) "NG" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -13692,6 +13504,18 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"NJ" = ( +/obj/structure/table, +/obj/item/book/manual/hydroponics_pod_people, +/obj/item/seeds/pumpkin/blumpkin, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"NT" = ( +/obj/structure/window/paperframe{ + CanAtmosPass = 0 + }, +/turf/open/floor/wood, +/area/centcom/holding) "NU" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom"; @@ -13719,6 +13543,312 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"Op" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/button/door{ + id = "lmrestroom"; + name = "Lock Control"; + pixel_y = -28 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"OG" = ( +/obj/structure/dresser, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"OU" = ( +/obj/item/clothing/under/jabroni, +/obj/item/clothing/under/geisha, +/obj/item/clothing/under/kilt, +/obj/structure/closet, +/turf/open/floor/wood, +/area/centcom/holding) +"Pa" = ( +/obj/machinery/washing_machine, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"Ph" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/wood, +/area/centcom/holding) +"Pl" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"Po" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"Pr" = ( +/obj/structure/table, +/obj/item/book/manual/chef_recipes, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"Px" = ( +/obj/machinery/vr_sleeper, +/turf/open/floor/wood, +/area/centcom/holding) +"PA" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"PF" = ( +/obj/machinery/vr_sleeper{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"PI" = ( +/obj/machinery/biogenerator, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"PL" = ( +/obj/machinery/autolathe, +/turf/open/floor/wood, +/area/centcom/holding) +"PO" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"PX" = ( +/obj/machinery/computer/arcade/battle, +/turf/open/floor/wood, +/area/centcom/holding) +"PY" = ( +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"Qe" = ( +/turf/open/ai_visible, +/area/ai_multicam_room) +"Qk" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/centcom/holding) +"Qm" = ( +/obj/singularity/wizard/mapped, +/turf/open/indestructible/binary, +/area/fabric_of_reality) +"Qu" = ( +/obj/machinery/vr_sleeper{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"QA" = ( +/obj/machinery/deepfryer, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"QH" = ( +/obj/machinery/chem_master/condimaster{ + desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; + name = "BrewMaster 2199"; + pixel_x = -4 + }, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"QI" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"QL" = ( +/obj/structure/flora/ausbushes/fernybush, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/centcom/holding) +"QT" = ( +/obj/machinery/chem_dispenser/drinks, +/turf/closed/indestructible{ + icon = 'icons/turf/walls/wood_wall.dmi'; + icon_state = "wood"; + smooth = 1 + }, +/area/centcom/holding) +"QW" = ( +/obj/structure/closet/secure_closet/freezer/kitchen{ + locked = 0 + }, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"Rd" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"Re" = ( +/obj/structure/mineral_door/paperframe, +/turf/open/floor/wood, +/area/centcom/holding) +"Rh" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/grass, +/area/centcom/holding) +"Ri" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Rj" = ( +/obj/machinery/vending/hydroseeds, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"Rm" = ( +/obj/structure/chair/wood/wings{ + dir = 3 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"RS" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/nullrod/claymore/glowing{ + damtype = "stamina"; + force = 30 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Sd" = ( +/turf/open/floor/carpet/black, +/area/centcom/holding) +"Sw" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"SB" = ( +/obj/structure/curtain, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/machinery/shower{ + pixel_y = 12 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"SG" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/plasteel/cafeteria{ + dir = 2 + }, +/area/centcom/holding) +"SN" = ( +/obj/structure/mopbucket, +/obj/item/mop, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"SU" = ( +/obj/structure/table/wood, +/obj/item/camera/detective{ + desc = "A polaroid camera with extra capacity for social media marketing."; + name = "Professional camera" + }, +/obj/item/camera_film, +/obj/item/wallframe/newscaster, +/obj/item/paper_bin, +/obj/item/pen/fountain, +/turf/open/floor/wood, +/area/centcom/holding) +"SW" = ( +/obj/machinery/seed_extractor, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) +"Tb" = ( +/obj/item/clothing/under/roman, +/obj/structure/closet, +/turf/open/floor/wood, +/area/centcom/holding) +"Tn" = ( +/obj/structure/table/wood/fancy, +/obj/item/candle/infinite{ + pixel_y = 6 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"To" = ( +/turf/open/indestructible/airblock, +/area/fabric_of_reality) +"Tq" = ( +/obj/structure/table/wood/bar, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/wood, +/area/centcom/holding) +"Tr" = ( +/obj/structure/closet/chefcloset, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"Tu" = ( +/obj/structure/flora/ausbushes/fernybush, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/centcom/holding) +"TB" = ( +/obj/structure/reagent_dispensers/cooking_oil, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"TK" = ( +/obj/structure/table/wood/bar, +/obj/structure/mirror{ + pixel_y = 28 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Ud" = ( +/obj/effect/landmark/holding_facility, +/turf/open/floor/wood, +/area/centcom/holding) +"Uh" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/nullrod/claymore/darkblade{ + damtype = "stamina"; + force = 30 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Um" = ( +/obj/structure/closet/crate/hydroponics, +/turf/open/floor/plasteel/whitegreen, +/area/centcom/holding) "Un" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome"; @@ -13731,6 +13861,16 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"UE" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/centcom/holding) +"UH" = ( +/obj/machinery/door/airlock/wood{ + req_one_access_txt = "28" + }, +/turf/open/floor/wood, +/area/centcom/holding) "UO" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -13745,6 +13885,59 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"UT" = ( +/obj/structure/chair/wood/wings{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"UV" = ( +/obj/machinery/computer/arcade, +/turf/open/floor/wood, +/area/centcom/holding) +"Vm" = ( +/obj/machinery/gibber, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"Vu" = ( +/obj/structure/flora/ausbushes/fernybush, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/light, +/turf/open/floor/grass, +/area/centcom/holding) +"Vv" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"Vz" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_y = 28; + use_power = 0 + }, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"VA" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"VF" = ( +/obj/structure/rack, +/obj/item/nullrod/scythe/vibro{ + damtype = "stamina"; + force = 30 + }, +/turf/open/floor/wood, +/area/centcom/holding) "VX" = ( /obj/effect/landmark/shuttle_import, /turf/open/space/basic, @@ -13792,6 +13985,32 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) +"Xd" = ( +/obj/structure/flora/ausbushes/fernybush, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/centcom/holding) +"Xe" = ( +/obj/machinery/vending/autodrobe{ + req_access_txt = "0" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Xk" = ( +/turf/open/floor/wood, +/area/centcom/holding) +"Xn" = ( +/obj/machinery/door/airlock/wood{ + req_one_access_txt = "0" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Xo" = ( +/obj/machinery/vending/dinnerware, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "Xt" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -13804,6 +14023,12 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/centcom/control) +"Xx" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) "Xy" = ( /obj/machinery/door/airlock/external{ name = "Ferry Airlock" @@ -13816,6 +14041,36 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) +"XL" = ( +/obj/machinery/door/airlock/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"XM" = ( +/obj/structure/chair/wood/wings{ + dir = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Yf" = ( +/obj/structure/table/wood/bar, +/turf/open/floor/wood, +/area/centcom/holding) +"Yh" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Ym" = ( +/obj/machinery/computer/arcade/orion_trail, +/turf/open/floor/wood, +/area/centcom/holding) +"Yo" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/centcom/holding) "Yt" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -13830,6 +14085,67 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"Yu" = ( +/obj/structure/closet/secure_closet/freezer/fridge{ + locked = 0 + }, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"YJ" = ( +/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/food/drinks/shaker, +/obj/item/book/manual/barman_recipes, +/obj/item/book/granter/action/drink_fling, +/obj/structure/closet/crate, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"YL" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/wood, +/area/centcom/holding) +"YN" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/mob/living/simple_animal/chicken, +/turf/open/floor/grass, +/area/centcom/holding) +"YQ" = ( +/obj/structure/table, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"YV" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/nullrod/claymore/saber{ + damtype = "stamina"; + force = 30 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Za" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "lmrestroom" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Zc" = ( +/turf/open/indestructible/binary, +/area/space) +"Zt" = ( +/obj/machinery/vr_sleeper{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/wood, +/area/centcom/holding) +"Zx" = ( +/mob/living/simple_animal/bot/medbot, +/turf/open/floor/wood, +/area/centcom/holding) "ZJ" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -13844,6 +14160,20 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) +"ZT" = ( +/mob/living/simple_animal/cow, +/turf/open/floor/grass, +/area/centcom/holding) +"ZU" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"ZW" = ( +/turf/open/floor/plasteel/white, +/area/centcom/holding) "ZX" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -17789,21 +18119,21 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -18046,21 +18376,21 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -18303,21 +18633,21 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -18560,21 +18890,21 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -18817,21 +19147,21 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -19074,21 +19404,21 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -22034,37 +22364,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -22291,37 +22621,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +Zc +Zc +Zc +Zc +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -22548,37 +22878,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +Zc +Zc +Zc +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +Zc +lI +Zc +Zc +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -22805,37 +23135,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +Zc +Zc +Zc +lI +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -23062,37 +23392,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +lI +Zc +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +Zc +Zc +Zc +lI +lI +lI +lI +lI +lI +Zc +Zc +lI aa aa aa @@ -23319,37 +23649,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +lI +lI +Zc +lI +lI +lI +lI +lI +lI +lI +lI +lI +Zc +lI +lI +lI +lI +lI +lI +lI +lI +Zc +lI +lI aa aa aa @@ -23576,37 +23906,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +Zc +lI +lI +lI aa aa aa @@ -23833,37 +24163,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +MB +MB +MB +To +To +To +To +To +MH +To +To +To +MB +To +To +To +To +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -24090,37 +24420,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +MB +MB +To +To +To +To +To +To +To +MB +MB +To +To +To +To +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -24347,37 +24677,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +To +MB +MB +To +To +To +To +To +To +MB +To +To +To +To +To +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -24604,37 +24934,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +To +To +MB +MB +To +To +To +To +To +MB +To +To +To +MB +MB +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -24861,37 +25191,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +To +To +To +MB +MB +To +To +MB +MB +MB +To +To +MB +MB +To +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -25118,37 +25448,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +To +To +To +To +MB +MB +To +MB +MB +MB +MB +MB +MB +To +To +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -25375,37 +25705,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +MB +MB +To +To +To +To +To +MB +To +To +MB +To +To +To +To +To +To +lI +lI +lI +Zc +Zc +lI +lI aa aa aa @@ -25632,37 +25962,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +MB +To +To +To +To +To +MB +MB +MB +To +To +To +To +To +To +To +lI +lI +Zc +Zc +Zc +lI +lI aa aa aa @@ -25889,37 +26219,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +NF +To +To +To +To +To +To +MB +Qm +MB +To +To +To +To +To +To +AG +lI +lI +lI +Zc +Zc +lI +lI aa aa aa @@ -26146,37 +26476,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +To +To +MB +MB +MB +MB +To +MB +MB +To +To +To +To +To +To +lI +lI +lI +Zc +Zc +lI +lI aa aa aa @@ -26403,37 +26733,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +To +MB +MB +MB +MB +To +To +To +MB +To +To +To +To +To +To +lI +lI +lI +lI +Zc +Zc +lI aa aa aa @@ -26660,37 +26990,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +MB +MB +MB +To +To +To +To +To +MB +MB +To +To +To +To +To +lI +lI +lI +lI +lI +Zc +lI aa aa aa @@ -26917,37 +27247,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +MB +MB +To +MB +To +To +To +To +To +To +MB +MB +MB +To +To +To +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -27174,37 +27504,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +MB +MB +To +To +MB +MB +To +To +To +To +To +To +To +MB +MB +To +To +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -27431,37 +27761,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +To +MB +MB +MB +To +To +To +To +To +To +To +To +MB +MB +To +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -27688,37 +28018,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +To +MB +To +To +To +To +To +To +To +To +To +To +To +MB +MB +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -27945,37 +28275,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +To +To +To +MB +To +To +To +To +To +MB +To +To +To +To +To +To +MB +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -28202,37 +28532,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -28459,37 +28789,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -28716,37 +29046,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +Zc +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -28973,37 +29303,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +Zc +Zc +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +Zc +lI +lI +lI +lI +lI +lI +lI +lI +lI +Zc +Zc +Zc +lI +lI +lI aa aa aa @@ -29230,37 +29560,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +Zc +Zc +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +Zc +lI +lI +lI +lI aa aa aa @@ -29487,37 +29817,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +Zc +lI +lI +lI +lI +lI +lI +Zc +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -29744,37 +30074,37 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI +lI aa aa aa @@ -30258,29 +30588,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di aa aa aa @@ -30515,29 +30845,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -30772,29 +31102,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31029,29 +31359,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31286,29 +31616,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31543,29 +31873,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31800,29 +32130,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32057,29 +32387,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32314,29 +32644,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32571,29 +32901,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32828,29 +33158,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33085,29 +33415,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +pW +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33342,29 +33672,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33599,29 +33929,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33856,29 +34186,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34113,29 +34443,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34370,29 +34700,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34627,29 +34957,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34884,29 +35214,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35141,29 +35471,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35398,29 +35728,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35655,29 +35985,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35912,29 +36242,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di aa aa aa @@ -37941,38 +38271,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd aa aa aa @@ -38198,38 +38528,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +PO +PO +PO +Sw +PO +PO +PO +Nd +QI +VA +Op +Nd +Rm +Tn +UT +yd +Xk +Xk +XM +NT +UV +CV +Xk +NT +CT +oV +CT +CT +oV +CT +Nd aa aa aa @@ -38455,38 +38785,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +HQ +PY +PY +PY +PY +PY +PY +Nd +ZW +ZW +ZW +Za +Xk +Xk +Xk +Tu +Xk +Xk +Tn +NT +Xk +Xk +Xk +NT +Xk +Xk +Xk +Xk +Xk +Xk +Nd aa aa aa @@ -38712,38 +39042,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Mu +QH +Bo +vs +Rj +PI +Rd +Nd +Pa +ZW +ZW +Nd +Xk +Xk +Xk +Xk +Xk +Xk +GY +NT +UV +CV +Xk +NT +Xk +PF +Xk +Px +Xk +Zt +Nd aa aa aa @@ -38969,38 +39299,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +PY +PY +PY +PY +PY +PY +PY +Nd +SB +ZW +Nw +Nd +Xk +Xk +Xk +Ph +Xk +Tu +Vu +Nd +Gs +Xk +Xk +Re +Xk +PF +Xk +Px +Xk +PF +Nd aa aa aa @@ -39226,38 +39556,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +pE +NJ +SW +PY +Um +Nn +PY +Nd +Nd +Nd +Nd +Nd +Xk +Xk +XM +QL +Xk +Xk +XM +NT +PX +CV +Xk +NT +Xk +PF +Xk +Px +Xk +Zt +Nd aa aa aa @@ -39483,38 +39813,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -ED -ED -ED -ED -ED -ED -ED -ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Nd +Nd +Nd +XL +Nd +Nd +py +Nd +Xk +Yo +Xk +Xn +Xk +Xk +Tn +Tu +Xk +Xk +Tn +NT +Xk +Xk +Xk +NT +Xk +Xk +Xk +Xk +Xk +Xk +Nd aa aa aa @@ -39740,38 +40070,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -hH -pU -qG -rZ -sa -sc -sd -ED -ED -ED -ED -ED -ED -ED -ED -ED -ED -ED -ED -aa -aa -aa +Nd +PL +Xk +Yo +Xk +Xk +Xk +Xk +Yh +Xk +Nd +Nd +Nd +Gs +Xk +GY +Tu +Xk +Xk +GY +NT +Ym +CV +Xk +NT +Dj +Qu +Dj +Dj +Qu +Dj +Nd aa aa aa @@ -39997,38 +40327,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -jO -pU -pU -pW -pW -pW -pU -Hy +Nd +Tq +Xk +MG +YN +Nd +Vm +Fh +zV +Nd +Nd +Fa +KT +Xk +Xk +Xk +Xk +Xk +Xk HH -HH -ED -uH -vo -vr -ED -uH -vo -vr -ED -aa -aa -aa +Nd +Xk +Xk +Xk +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd aa aa aa @@ -40254,38 +40584,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -oU -pU -qH -qF -pW -pW -pU -Hz -HH -HH -ED -uI -uN -vy -ED -uI -uN -vy -ED -aa -aa -aa +Nd +Xk +Xk +Rh +Mm +Nd +MT +Fh +Yu +Nd +Fb +Sd +KT +Xk +Xk +Sd +Sd +Sd +Sd +Sd +Re +Xk +Xk +Xk +NT +vt +YV +OU +Tb +RS +VF +Nd aa aa aa @@ -40511,38 +40841,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -oV -pU -qI -qF -pW -pW -sY -Hz -HH -HH -ED -uG -uN -vs -ED -uG -uN -vs -ED -aa -aa -aa +Nd +Xk +Xk +Rh +ZT +Nd +Pr +Fh +QW +Nd +Fc +Sd +KT +Xk +Xk +Sd +Sd +Sd +Sd +Sd +Nd +Gs +Zx +Xk +Re +Xk +Xk +Xk +Xk +Xk +Xk +Nd aa aa aa @@ -40768,38 +41098,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -px -pU -rb -qF -pW -pW -sZ -Hy -HH -HH -ED -tm -tm -tm -ED -tm -tm -tm -ED -aa -aa -aa +Nd +Nd +XL +Nd +Nd +Nd +JE +Fh +YQ +Nd +MR +Sd +FW +Xk +Xk +Sd +Sd +Sd +Sd +Sd +Re +Xk +Xk +Xk +NT +XM +XM +Xk +XM +XM +Xk +Nd aa aa aa @@ -41025,38 +41355,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -py -pU -rc -qF -pW -pW -ta -ED -ED -ED -ED -uK -tm -vt -ED -wf -tm -vt -ED -aa -aa -aa +Nd +yM +Xk +Yo +Xk +Nd +SG +Fh +Vv +Nd +Nd +Sd +FX +Xk +Xk +Xk +Xk +Xk +Xk +HH +Nd +Xk +Ud +Ud +NT +Po +Po +Sd +Po +ZU +Xk +Nd aa aa aa @@ -41282,38 +41612,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -pz -pV -rY -qF -pW -pW -pU -ED -ED -ED -ED -ED -vq -ED -ED -ED -wg -ED -ED -ED -aa -aa +Nd +OG +Xk +Xk +Xk +Nd +zX +Fh +pS +Nd +Nd +Nd +Nd +Gs +Xk +XM +Tu +Xk +Xk +XM +NT +Xk +Ud +Ud +NT +Sd +Sd +Sd +Sd +MM +Xk +Nd aa aa aa @@ -41539,38 +41869,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +TK +Xk +Xk +Xk +Nd +QA +Fh +Nv ED -pA -pW -pW -pW -pW -pW -pU -tk -pU -tZ -pU -pU -pU -pU -pU -pU -pU -tZ -wh -ED -aa -aa +Yo +Yf +UE +Xk +Xk +Tn +Xd +Xk +Xk +Tn +NT +Xk +Ud +Ud +NT +Sd +Sd +Nq +Sd +MM +Xk +Nd aa aa aa @@ -41796,38 +42126,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -pB -pW -pW -pW -pW -pW -pU -tk -pU -pU -pU -pU -vp -pU -pU -pU -pU -pU -wi -ED -aa -aa +Nd +YL +Xk +Xk +Xk +Nd +Xo +Fh +Fh +py +Xk +Yf +UE +Xk +Xk +GY +Tu +Xk +Xk +GY +NT +Xk +Ud +Ud +NT +Sd +Sd +Sd +Sd +MM +Xk +Nd aa aa aa @@ -42053,38 +42383,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -pC -pW -pW -pW -pW -pW -tb -ED -ED -ub -ED -ED -ED -vz -ED -ED -ED -wj -ED -ED -aa -aa +Nd +Xe +Xk +Xk +Xk +Nd +TB +Fh +Fh +BV +Xk +Yf +UE +Xk +Xk +Xk +Ph +Xk +Qk +Vu +Nd +Gs +Ud +Ud +NT +PA +PA +Sd +PA +Pl +Xk +Nd aa aa aa @@ -42310,38 +42640,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -pD -qF -pW -pW -pW -pW -tc -ED -tY -tm -ug -ED -tY -tm -we -ED -tY -tm -wk -ED -aa -aa +Nd +Ny +Xk +Xk +Xk +Nd +Vz +Fh +YJ +QT +Xk +Yf +UE +Xk +Xk +Xk +Xk +Xk +Xk +XM +NT +Xk +Xk +Xk +NT +GY +GY +Xk +GY +GY +Xk +Nd aa aa aa @@ -42567,38 +42897,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -pE -qF -pW -pW -pW -pW -td -ED -tW -uc -tm -ED -tW -uc -tm -ED -tW -uc -tm -ED -aa -aa +Nd +Bs +Ri +Xk +Xk +XL +Fh +Fh +Fh +UH +Xk +Yf +UE +Xk +Xk +Xk +Tu +Xk +Xk +Tn +NT +Xk +Xk +Xk +Re +Xk +Xk +Xk +Xk +Xk +Xk +Nd aa aa aa @@ -42824,38 +43154,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -pS -qF -pW -pW -pW -pW -td -ED -ED -ED -ED -ED -ED -ED -ED -ED -ED -ED -ED -ED -aa -aa +Nd +SU +Xk +Xx +Nm +Nd +SN +pV +Tr +Nd +Fj +Nd +Nd +Fi +Tn +UT +Hm +Xk +Xk +GY +NT +Xk +Xk +Xk +NT +vt +Mx +OU +Tb +Uh +tW +Nd aa aa aa @@ -43081,38 +43411,38 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -pS -qF -pW -pW -pW -pW -tj -ED -ED -ED -ED -ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd aa aa aa @@ -43347,19 +43677,19 @@ aa aa aa aa -ED -pT -pU -pU -pU -sb -sb -sb -tl -ua -uf -uh -ED +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -43604,19 +43934,19 @@ aa aa aa aa -ED -Fj -Fi -Fi -Fi -Fi -GZ -Hm -ED -ED -ED -ED -ED +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -43861,15 +44191,15 @@ aa aa aa aa -ED -Fi -Fi -FZ -Fi -Fi -GZ -Hm -ED +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -44118,15 +44448,15 @@ aa aa aa aa -ED -Fk -FC -Fi -Gt -Fi -GZ -Hm -ED +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -44375,15 +44705,15 @@ aa aa aa aa -ED -Fi -Fi -Ga -Fi -Fi -Ha -Hm -ED +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -44632,15 +44962,15 @@ aa aa aa aa -ED -Fl -Fi -Fj -Fi -Fi -GZ -Hm -ED +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -44889,15 +45219,15 @@ aa aa aa aa -ED -ED -ED -ED -ED -ED -ED -ED -ED +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa diff --git a/_maps/runtimestation.json b/_maps/runtimestation.json index c363b67a05..f9333c65a2 100644 --- a/_maps/runtimestation.json +++ b/_maps/runtimestation.json @@ -1,5 +1,8 @@ { "map_name": "Runtime Station", "map_path": "map_files/debug", - "map_file": "runtimestation.dmm" + "map_file": "runtimestation.dmm", + "shuttles": { + "cargo": "cargo_delta" + } } diff --git a/_maps/shuttles/arrival_box.dmm b/_maps/shuttles/arrival_box.dmm index c3586bd12a..2b245557a0 100644 --- a/_maps/shuttles/arrival_box.dmm +++ b/_maps/shuttles/arrival_box.dmm @@ -78,18 +78,18 @@ /turf/open/floor/plating, /area/shuttle/arrival) "p" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium/blue, /area/shuttle/arrival) "q" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/light/small{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/arrival) "r" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, @@ -114,13 +114,13 @@ /turf/open/floor/plating/airless, /area/shuttle/arrival) "v" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/arrival) "w" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/machinery/light/small{ diff --git a/_maps/shuttles/arrival_delta.dmm b/_maps/shuttles/arrival_delta.dmm index 523b243801..08f34e1c23 100644 --- a/_maps/shuttles/arrival_delta.dmm +++ b/_maps/shuttles/arrival_delta.dmm @@ -211,14 +211,14 @@ }, /area/shuttle/arrival) "u" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/arrival) "v" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/effect/turf_decal/bot, diff --git a/_maps/shuttles/arrival_omega.dmm b/_maps/shuttles/arrival_omega.dmm index 06dc4b7a1e..b8fc632779 100644 --- a/_maps/shuttles/arrival_omega.dmm +++ b/_maps/shuttles/arrival_omega.dmm @@ -124,14 +124,14 @@ /turf/open/floor/plating, /area/shuttle/arrival) "q" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/arrival) "r" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/effect/turf_decal/bot, diff --git a/_maps/shuttles/arrival_pubby.dmm b/_maps/shuttles/arrival_pubby.dmm index 12718ff8ff..a4308729b2 100644 --- a/_maps/shuttles/arrival_pubby.dmm +++ b/_maps/shuttles/arrival_pubby.dmm @@ -85,7 +85,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/arrival) "o" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, diff --git a/_maps/shuttles/assault_pod_default.dmm b/_maps/shuttles/assault_pod_default.dmm index b9a49c7d6a..9414fa9f82 100644 --- a/_maps/shuttles/assault_pod_default.dmm +++ b/_maps/shuttles/assault_pod_default.dmm @@ -1,10 +1,10 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "b" = ( /obj/machinery/porta_turret/syndicate/pod, /turf/closed/wall/mineral/plastitanium, /area/shuttle/assault_pod) "c" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium, @@ -45,20 +45,20 @@ /turf/open/floor/plating, /area/shuttle/assault_pod) "D" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/light{ dir = 1 }, /turf/open/floor/mineral/plastitanium, /area/shuttle/assault_pod) "H" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/plastitanium, /area/shuttle/assault_pod) "L" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/machinery/light, diff --git a/_maps/shuttles/aux_base_default.dmm b/_maps/shuttles/aux_base_default.dmm index d35420ebb0..365c34cf50 100644 --- a/_maps/shuttles/aux_base_default.dmm +++ b/_maps/shuttles/aux_base_default.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "b" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -44,10 +44,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/shuttle/auxillary_base) -"y" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "z" = ( /obj/machinery/light{ dir = 8 @@ -82,8 +78,8 @@ /area/shuttle/auxillary_base) "X" = ( /obj/machinery/camera{ - c_tag = "Auxillary Mining Base"; - dir = 1 + dir = 1; + network = list("auxbase") }, /obj/structure/mining_shuttle_beacon, /turf/open/floor/plating, @@ -142,7 +138,7 @@ P k k k -y +x "} (6,1,1) = {" v diff --git a/_maps/shuttles/aux_base_small.dmm b/_maps/shuttles/aux_base_small.dmm new file mode 100644 index 0000000000..a7ddb70a9b --- /dev/null +++ b/_maps/shuttles/aux_base_small.dmm @@ -0,0 +1,149 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"b" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/ore_box, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"c" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"d" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"e" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"f" = ( +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"g" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"h" = ( +/obj/machinery/camera{ + dir = 1 + }, +/obj/structure/mining_shuttle_beacon, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"i" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"j" = ( +/obj/docking_port/mobile/auxillary_base{ + dheight = 4; + dir = 2; + dwidth = 4; + height = 9; + width = 9; + timid = 1 + }, +/obj/machinery/bluespace_beacon, +/obj/machinery/computer/auxillary_base, +/turf/closed/wall, +/area/shuttle/auxillary_base) +"k" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"l" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"m" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"n" = ( +/obj/structure/closet/secure_closet/miner/unlocked, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) + +(1,1,1) = {" +b +e +e +e +e +e +l +"} +(2,1,1) = {" +c +f +f +f +f +f +m +"} +(3,1,1) = {" +c +f +f +i +f +f +m +"} +(4,1,1) = {" +c +f +h +j +f +f +m +"} +(5,1,1) = {" +c +f +f +k +f +f +m +"} +(6,1,1) = {" +c +f +f +f +f +f +m +"} +(7,1,1) = {" +d +g +g +g +g +g +n +"} diff --git a/_maps/shuttles/emergency_asteroid.dmm b/_maps/shuttles/emergency_asteroid.dmm index a94fd27655..b1d300574d 100644 --- a/_maps/shuttles/emergency_asteroid.dmm +++ b/_maps/shuttles/emergency_asteroid.dmm @@ -73,7 +73,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "av" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium/brig, @@ -82,7 +82,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "ax" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/plastitanium/brig, @@ -94,7 +94,7 @@ /turf/closed/wall/mineral/titanium/interior, /area/shuttle/escape) "aE" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/item/radio/intercom{ @@ -131,7 +131,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aK" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aL" = ( @@ -210,19 +210,19 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "aY" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aZ" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ba" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, @@ -345,7 +345,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "bw" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/item/radio/intercom{ @@ -355,7 +355,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "bx" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/structure/extinguisher_cabinet{ @@ -427,7 +427,7 @@ /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) "bK" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/light{ dir = 1 }, diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index eaa525739f..9b4776a011 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -138,7 +138,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "aC" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aD" = ( @@ -214,7 +214,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aM" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium/brig, diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency_birdboat.dmm index df84efddfb..d88e15fc94 100644 --- a/_maps/shuttles/emergency_birdboat.dmm +++ b/_maps/shuttles/emergency_birdboat.dmm @@ -53,11 +53,11 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "al" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "am" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/light{ dir = 1 }, @@ -87,7 +87,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ar" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, @@ -157,7 +157,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aE" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/plasteel/dark, @@ -174,7 +174,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aH" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/plasteel/dark, @@ -215,14 +215,14 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aN" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aO" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/structure/window/reinforced, @@ -232,7 +232,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aP" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/structure/window/reinforced{ dir = 1; pixel_y = 2 @@ -255,13 +255,13 @@ /turf/open/floor/plasteel/white, /area/shuttle/escape) "aS" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aT" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/machinery/light, @@ -286,7 +286,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aW" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aX" = ( diff --git a/_maps/shuttles/emergency_box.dmm b/_maps/shuttles/emergency_box.dmm index d385cf1d18..57ddc27a97 100644 --- a/_maps/shuttles/emergency_box.dmm +++ b/_maps/shuttles/emergency_box.dmm @@ -18,7 +18,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "ag" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium/blue, @@ -44,7 +44,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "am" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, @@ -53,7 +53,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ao" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, @@ -71,7 +71,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "ar" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/structure/extinguisher_cabinet{ @@ -113,7 +113,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "aA" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aB" = ( @@ -179,17 +179,17 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aJ" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aK" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aL" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium, @@ -224,7 +224,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aS" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/structure/window/reinforced{ @@ -233,7 +233,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aT" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/structure/window/reinforced{ @@ -242,7 +242,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aU" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium, diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm index ea9dcd46ea..7b9e8cfa6c 100644 --- a/_maps/shuttles/emergency_cere.dmm +++ b/_maps/shuttles/emergency_cere.dmm @@ -251,11 +251,11 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "aS" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aT" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/light{ dir = 1 }, @@ -283,7 +283,7 @@ }, /area/shuttle/escape) "aW" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/light{ dir = 1 }, @@ -294,7 +294,7 @@ }, /area/shuttle/escape) "aX" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig{ icon_state = "darkred"; dir = 1; @@ -302,7 +302,7 @@ }, /area/shuttle/escape) "aY" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig{ icon_state = "darkred"; dir = 5; @@ -330,7 +330,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bd" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium/brig, @@ -339,7 +339,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "bf" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/machinery/flasher{ @@ -381,7 +381,7 @@ /turf/open/floor/mech_bay_recharge_floor, /area/shuttle/escape) "bk" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/plastitanium/brig, @@ -412,7 +412,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bp" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/flasher{ @@ -479,7 +479,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "bw" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium/brig{ @@ -489,7 +489,7 @@ }, /area/shuttle/escape) "bx" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium/brig{ @@ -509,7 +509,7 @@ }, /area/shuttle/escape) "bz" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium/brig{ @@ -658,7 +658,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bW" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/structure/window/reinforced{ @@ -667,7 +667,7 @@ /turf/open/floor/plasteel/neutral, /area/shuttle/escape) "bX" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/structure/window/reinforced{ @@ -1022,7 +1022,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/computer/monitor, +/obj/machinery/computer/monitor/secret, /turf/open/floor/plasteel/yellow/side{ dir = 1 }, diff --git a/_maps/shuttles/emergency_clown.dmm b/_maps/shuttles/emergency_clown.dmm index 6f31726964..3dd4766d6a 100644 --- a/_maps/shuttles/emergency_clown.dmm +++ b/_maps/shuttles/emergency_clown.dmm @@ -18,7 +18,7 @@ /turf/open/floor/noslip, /area/shuttle/escape) "af" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/bluespace, @@ -43,7 +43,7 @@ /turf/open/floor/noslip, /area/shuttle/escape) "aj" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/bluespace, @@ -53,7 +53,7 @@ /turf/open/floor/bluespace, /area/shuttle/escape) "al" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/bluespace, @@ -71,7 +71,7 @@ /turf/open/floor/noslip, /area/shuttle/escape) "ao" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/structure/extinguisher_cabinet{ @@ -154,11 +154,11 @@ /turf/open/floor/noslip, /area/shuttle/escape) "aC" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/noslip, /area/shuttle/escape) "aD" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/noslip, diff --git a/_maps/shuttles/emergency_cramped.dmm b/_maps/shuttles/emergency_cramped.dmm index 6bf3ba0f9e..457e23d84b 100644 --- a/_maps/shuttles/emergency_cramped.dmm +++ b/_maps/shuttles/emergency_cramped.dmm @@ -17,7 +17,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "e" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/plasteel/dark, @@ -74,7 +74,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "n" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/plating, @@ -109,7 +109,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "s" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/structure/extinguisher_cabinet{ diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index 926d079549..24d59e5033 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -240,14 +240,14 @@ /turf/open/floor/plasteel/cmo, /area/shuttle/escape) "av" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) "aw" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/effect/turf_decal/bot, @@ -326,7 +326,7 @@ }, /area/shuttle/escape) "aH" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/item/radio/intercom{ @@ -672,7 +672,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "bx" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "by" = ( @@ -709,12 +709,12 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bC" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) "bD" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/status_display{ pixel_y = 32 }, @@ -722,7 +722,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bE" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium/brig, @@ -771,7 +771,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bM" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/status_display{ @@ -780,7 +780,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "bN" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/plastitanium/brig, @@ -823,7 +823,7 @@ }, /area/shuttle/escape) "bU" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium/brig, @@ -1059,7 +1059,7 @@ }, /area/shuttle/escape) "cB" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/effect/turf_decal/bot, @@ -1077,7 +1077,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "cG" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/machinery/light, diff --git a/_maps/shuttles/emergency_goon.dmm b/_maps/shuttles/emergency_goon.dmm index 24f2a4179c..57f0b23d9f 100644 --- a/_maps/shuttles/emergency_goon.dmm +++ b/_maps/shuttles/emergency_goon.dmm @@ -74,7 +74,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "s" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, @@ -154,7 +154,7 @@ /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) "H" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium/brig, @@ -201,7 +201,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "S" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/light{ @@ -210,7 +210,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "T" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/light/small{ diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency_meta.dmm index 3776887e2a..faf70072d3 100644 --- a/_maps/shuttles/emergency_meta.dmm +++ b/_maps/shuttles/emergency_meta.dmm @@ -65,7 +65,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ar" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "as" = ( @@ -74,7 +74,7 @@ name = "Station Intercom (General)"; pixel_y = 27 }, -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/light{ dir = 1 }, @@ -220,7 +220,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aE" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium, @@ -314,7 +314,7 @@ name = "Station Intercom (General)"; pixel_y = -31 }, -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/machinery/light, @@ -362,7 +362,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bd" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/plasteel/floorgrime, @@ -377,13 +377,13 @@ /turf/open/floor/plasteel/floorgrime, /area/shuttle/escape) "bh" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "bi" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "bj" = ( @@ -436,7 +436,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bs" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/plastitanium/brig, @@ -713,7 +713,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "bV" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/light{ dir = 1 }, @@ -816,7 +816,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ca" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/machinery/light, @@ -835,7 +835,7 @@ /turf/open/floor/plasteel/floorgrime, /area/shuttle/escape) "cd" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/machinery/light{ diff --git a/_maps/shuttles/emergency_mini.dmm b/_maps/shuttles/emergency_mini.dmm index f8f27ce57e..42650f6fd1 100644 --- a/_maps/shuttles/emergency_mini.dmm +++ b/_maps/shuttles/emergency_mini.dmm @@ -40,7 +40,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "h" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium/brig, @@ -49,7 +49,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "j" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/plastitanium/brig, @@ -68,7 +68,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "m" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/machinery/light/small{ @@ -116,25 +116,25 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "v" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "w" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "x" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "y" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/machinery/light{ @@ -149,7 +149,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "A" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/light{ @@ -171,7 +171,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "C" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "D" = ( @@ -218,7 +218,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "K" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, @@ -231,7 +231,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "M" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, @@ -261,7 +261,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "R" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "S" = ( diff --git a/_maps/shuttles/emergency_narnar.dmm b/_maps/shuttles/emergency_narnar.dmm index 509a5bfa6b..9d6c5f1e4d 100644 --- a/_maps/shuttles/emergency_narnar.dmm +++ b/_maps/shuttles/emergency_narnar.dmm @@ -15,7 +15,7 @@ /turf/open/floor/plasteel/cult, /area/shuttle/escape) "e" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/plasteel/cult, @@ -40,7 +40,7 @@ /turf/open/floor/plasteel/cult, /area/shuttle/escape) "i" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/plasteel/cult, @@ -49,7 +49,7 @@ /turf/open/floor/plasteel/cult, /area/shuttle/escape) "k" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/plasteel/cult, @@ -67,7 +67,7 @@ /turf/open/floor/plasteel/cult, /area/shuttle/escape) "n" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/structure/extinguisher_cabinet{ diff --git a/_maps/shuttles/emergency_omega.dmm b/_maps/shuttles/emergency_omega.dmm index 36e68e1119..570cb99f0a 100644 --- a/_maps/shuttles/emergency_omega.dmm +++ b/_maps/shuttles/emergency_omega.dmm @@ -12,7 +12,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "ad" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/newscaster/security_unit{ @@ -24,11 +24,11 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "ae" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "af" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/item/radio/intercom{ @@ -67,7 +67,7 @@ }, /area/shuttle/escape) "ak" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/status_display{ @@ -240,7 +240,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "aD" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/status_display{ @@ -253,7 +253,7 @@ /turf/open/floor/plasteel/neutral, /area/shuttle/escape) "aF" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/effect/turf_decal/bot, @@ -356,14 +356,14 @@ /turf/open/floor/grass, /area/shuttle/escape) "aJ" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) "aK" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/effect/turf_decal/bot, @@ -384,7 +384,7 @@ /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) "aN" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/effect/turf_decal/bot, diff --git a/_maps/shuttles/emergency_pubby.dmm b/_maps/shuttles/emergency_pubby.dmm index 61b41703ae..47b891cfd0 100644 --- a/_maps/shuttles/emergency_pubby.dmm +++ b/_maps/shuttles/emergency_pubby.dmm @@ -11,27 +11,20 @@ /area/shuttle/escape) "ad" = ( /obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_x = 2; - pixel_y = 3 - }, +/obj/machinery/recharger, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "ae" = ( /obj/machinery/computer/emergency_shuttle, -/turf/open/floor/mineral/titanium, +/turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "af" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 - }, -/turf/open/floor/mineral/titanium, +/obj/machinery/computer/communications, +/turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ag" = ( -/obj/machinery/light{ - dir = 8 +/obj/machinery/computer/atmos_alert{ + dir = 4 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) @@ -42,94 +35,92 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ai" = ( -/obj/machinery/light{ - dir = 4 +/obj/machinery/computer/security{ + dir = 8 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aj" = ( -/obj/structure/closet, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"ak" = ( -/obj/machinery/recharge_station, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"al" = ( -/obj/machinery/vending/cola, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"am" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/crew{ dir = 4 }, -/turf/open/floor/mineral/titanium, +/turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"an" = ( -/obj/structure/chair{ +"ak" = ( +/obj/machinery/computer/secure_data{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) +"al" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"am" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/escape) +"an" = ( +/turf/template_noop, +/area/space) "ao" = ( /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ap" = ( -/obj/structure/chair{ +/obj/structure/chair/comfy, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 9 + }, +/area/shuttle/escape) +"aq" = ( +/obj/structure/chair/office/dark{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aq" = ( -/obj/machinery/computer/security{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "ar" = ( -/obj/structure/chair, -/turf/open/floor/mineral/plastitanium/brig, +/turf/open/floor/carpet/black, /area/shuttle/escape) "as" = ( -/turf/open/floor/mineral/titanium/yellow, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 5 + }, /area/shuttle/escape) "at" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 +/turf/open/floor/plasteel/darkgreen/side{ + dir = 8 }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) "au" = ( -/obj/machinery/computer/crew{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, +/turf/open/floor/plasteel/dark, /area/shuttle/escape) "av" = ( -/obj/machinery/computer/communications{ - dir = 8 +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck{ + pixel_y = 5 }, -/turf/open/floor/mineral/titanium, +/turf/open/floor/plasteel/dark, /area/shuttle/escape) "aw" = ( -/obj/machinery/flasher{ - id = "shuttle_flasher"; - pixel_x = -24; - pixel_y = 6 - }, -/obj/machinery/button/flasher{ - id = "shuttle_flasher"; - pixel_x = -24; - pixel_y = -6 - }, -/obj/machinery/light/small{ - brightness = 3; +/obj/structure/chair/comfy{ dir = 8 }, -/turf/open/floor/mineral/plastitanium/brig, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 4 + }, /area/shuttle/escape) "ax" = ( /turf/open/floor/mineral/plastitanium/brig, @@ -141,493 +132,831 @@ /turf/open/floor/plating, /area/shuttle/escape) "az" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"aA" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aB" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Emergency Shuttle Cockpit"; - req_access_txt = "19" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"aC" = ( -/obj/structure/chair{ +/obj/structure/chair/comfy{ dir = 1 }, -/turf/open/floor/mineral/plastitanium/brig, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 10 + }, +/area/shuttle/escape) +"aA" = ( +/obj/structure/chair/comfy{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) +"aB" = ( +/obj/structure/window/reinforced, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-11" + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 6 + }, +/area/shuttle/escape) +"aC" = ( +/obj/structure/chair/comfy{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 6 + }, /area/shuttle/escape) "aD" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock"; - req_access_txt = "2" +/obj/structure/chair/comfy{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 10 }, -/turf/open/floor/plating, /area/shuttle/escape) "aE" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Emergency Shuttle Cargo Hold" +/obj/structure/chair/comfy, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 1 }, -/turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aF" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" +/obj/structure/chair/comfy{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 6 }, -/turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aG" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Emergency Shuttle Brig"; - req_access_txt = "2" +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 }, -/turf/open/floor/mineral/titanium/blue, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/reagent_containers/food/snacks/butterdog, +/obj/item/reagent_containers/food/snacks/cakeslice/apple, +/obj/item/reagent_containers/food/snacks/cakeslice/brioche, +/obj/item/reagent_containers/food/snacks/cakeslice/cheese, +/obj/item/reagent_containers/food/snacks/cakeslice/chocolate, +/obj/item/reagent_containers/food/snacks/cakeslice/lemon, +/obj/item/reagent_containers/food/snacks/cakeslice/lime, +/obj/item/reagent_containers/food/snacks/cakeslice/orange, +/turf/open/floor/plasteel/cafeteria, /area/shuttle/escape) "aH" = ( /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aI" = ( -/obj/machinery/light{ - dir = 1 +/obj/machinery/door/airlock/public/glass{ + name = "First Class" }, -/turf/open/floor/mineral/titanium/blue, +/turf/open/floor/mineral/titanium, /area/shuttle/escape) "aJ" = ( -/obj/structure/chair{ - dir = 4 +/obj/structure/chair/shuttle, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 9 }, -/turf/open/floor/mineral/titanium, /area/shuttle/escape) "aK" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aL" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aM" = ( -/turf/open/floor/carpet, -/area/shuttle/escape) -"aN" = ( -/obj/structure/chair/comfy/beige, -/turf/open/floor/carpet, -/area/shuttle/escape) -"aO" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aP" = ( -/obj/structure/chair/comfy/beige{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/shuttle/escape) -"aQ" = ( -/obj/structure/table/wood/poker, -/obj/item/toy/cards/deck, -/turf/open/floor/carpet, -/area/shuttle/escape) -"aR" = ( -/obj/structure/chair/comfy/beige{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/shuttle/escape) -"aS" = ( -/obj/structure/chair/comfy/beige{ +/obj/structure/chair/comfy{ dir = 1 }, -/turf/open/floor/carpet, -/area/shuttle/escape) -"aT" = ( /obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, +/turf/open/floor/plasteel/darkgreen/side, /area/shuttle/escape) -"aU" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Emergency Shuttle Infirmary" +"aL" = ( +/obj/structure/chair/shuttle, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 5 }, -/turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aV" = ( -/obj/machinery/sleeper{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aW" = ( -/obj/machinery/vending/medical, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aX" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dheight = 0; - dir = 8; - dwidth = 4; - height = 15; - name = "Pubby emergency shuttle"; - port_direction = 4; - width = 18 - }, -/turf/open/floor/plating, -/area/shuttle/escape) -"aY" = ( -/obj/machinery/light{ +"aM" = ( +/turf/open/floor/plasteel/darkpurple/side{ dir = 8 }, -/turf/open/floor/mineral/titanium, /area/shuttle/escape) -"aZ" = ( -/obj/structure/table, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/regular{ - pixel_x = 2; - pixel_y = 3 +"aN" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/drinks/bottle/wine, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 8 }, -/obj/item/crowbar, -/obj/structure/sign/warning/nosmoking{ - pixel_x = 32 +/area/shuttle/escape) +"aO" = ( +/obj/structure/chair/shuttle{ + dir = 1 }, -/obj/machinery/light{ +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 10 + }, +/area/shuttle/escape) +"aP" = ( +/obj/structure/chair/shuttle{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/darkpurple/side, +/area/shuttle/escape) +"aQ" = ( +/obj/structure/chair/shuttle{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 6 + }, +/area/shuttle/escape) +"aR" = ( +/turf/open/floor/plasteel/darkpurple/side{ dir = 4 }, -/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"aS" = ( +/obj/structure/chair/shuttle{ + dir = 1 + }, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 10 + }, +/area/shuttle/escape) +"aT" = ( +/obj/structure/chair/shuttle, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 1 + }, +/area/shuttle/escape) +"aU" = ( +/obj/structure/chair/shuttle{ + dir = 1 + }, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 6 + }, +/area/shuttle/escape) +"aV" = ( +/obj/item/reagent_containers/food/snacks/breadslice/plain, +/obj/item/reagent_containers/food/snacks/breadslice/plain{ + pixel_y = 4 + }, +/obj/item/reagent_containers/food/snacks/breadslice/plain{ + pixel_y = 8 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"aW" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/escape) +"aX" = ( +/obj/machinery/sleeper, +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"aY" = ( +/obj/structure/chair/shuttle{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/darkpurple/side, +/area/shuttle/escape) +"aZ" = ( +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/storage/firstaid/regular, +/obj/structure/window/reinforced{ + dir = 4; + layer = 2.9 + }, +/turf/open/floor/plasteel/cmo, /area/shuttle/escape) "ba" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/shuttle, -/turf/open/floor/plating/airless, +/turf/open/floor/plasteel/cafeteria, /area/shuttle/escape) "bb" = ( -/obj/structure/table, -/obj/item/defibrillator/loaded, -/turf/open/floor/mineral/titanium, +/turf/open/floor/plasteel/cmo, /area/shuttle/escape) "bc" = ( /obj/structure/shuttle/engine/propulsion, /turf/open/floor/plating/airless, /area/shuttle/escape) "bd" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = 3; + pixel_y = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/escape) +"be" = ( +/obj/structure/chair/shuttle, +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"bf" = ( +/obj/structure/window/reinforced, +/obj/structure/table, +/obj/item/storage/bag/tray, +/obj/item/clothing/under/waiter, +/turf/open/floor/plasteel/cafeteria, +/area/shuttle/escape) +"bg" = ( +/obj/structure/closet/crate, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/plating, +/area/shuttle/escape) +"bh" = ( +/obj/structure/window/reinforced, +/obj/structure/table/glass, +/obj/item/defibrillator/loaded, +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"bi" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"bj" = ( +/turf/open/floor/plating, +/area/shuttle/escape) +"bk" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plating, +/area/shuttle/escape) +"bl" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/shuttle/escape) +"bm" = ( +/obj/machinery/vending/cola, +/turf/open/floor/plating, +/area/shuttle/escape) +"bn" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/machinery/light, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/plating, +/area/shuttle/escape) +"bo" = ( +/obj/structure/chair/shuttle, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 2 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"bq" = ( +/obj/structure/chair/shuttle{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"br" = ( +/obj/machinery/light, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"bs" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/escape) +"bt" = ( +/obj/machinery/light, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"bu" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22" + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"bv" = ( +/obj/structure/window/plastitanium, +/obj/structure/grille, +/turf/open/floor/plating, +/area/shuttle/escape) +"bw" = ( +/obj/structure/chair/shuttle{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"bx" = ( +/obj/structure/chair/shuttle{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"by" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"bz" = ( +/obj/structure/table/reinforced, +/obj/item/restraints/handcuffs, +/obj/item/melee/baton, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"bA" = ( +/obj/machinery/door/airlock/public/glass{ + req_access_txt = "2" + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"bB" = ( +/obj/structure/window/reinforced{ + dir = 4; + layer = 2.9 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"bC" = ( +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"bD" = ( +/obj/structure/bed, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"bE" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/plastitanium, +/turf/open/floor/plating, +/area/shuttle/escape) +"bG" = ( +/obj/structure/chair/shuttle{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plating, +/area/shuttle/escape) +"bH" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"bI" = ( +/obj/machinery/light, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"bK" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Economy Class" + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"bL" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + dir = 8; + dwidth = 27; + height = 8; + name = "PubbyStation emergency shuttle"; + port_direction = 4; + preferred_direction = 1; + width = 46 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"bO" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Cockpit"; + req_access_txt = "19" + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"bQ" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Service" + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"bT" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Brig"; + req_access_txt = "2" + }, +/turf/open/floor/mineral/titanium, /area/shuttle/escape) (1,1,1) = {" aa +ab +ac +ac +ab aa ab -ac -ac -ay -ab ab ac +ab ac ab -ay -ab -ay -ab +ac ab ab aa +ab +ab +ac +ab +ac +ab +ac +ab +ab +aa +ab +ab +ac +ab +ac +ab +ac +ab +ab +aa +bs +bs +bv +bv +bs +bs +bv +bv +bs +bs "} (2,1,1) = {" -aa -aa ab +ab +ag aj -as -as -ac -aH -aJ -aJ -aJ -aH -aJ -aH -aJ -ba -bc -aa -"} -(3,1,1) = {" -aa +ab aa ab -ak -as -as -aE -ao -ao -ao -ao -ao -ao -ao -ao -ba -bc -aa -"} -(4,1,1) = {" -aa -aa -ab -al +ap +aN +az at az -ac -ao -aK -aK -aK -ao -ao +at +aD +ab +aa +ab +aJ +aM aO +aM aO -ba -bc -aa -"} -(5,1,1) = {" -aa +aM +aS +ab aa ab +aX +bb +be +bh +bl +bg +bg ab -ab -ab -bd -aI -aL -aL -aL -aT -bd -ab -ab -ab -ab -ab -"} -(6,1,1) = {" -ab -ab -bd -am -au -aA -aF -ao -ao -ao -ao -ao -ab -aV -aY -aV -ba +aa +bs +bu +bw +bw +bw +bs +ax +bD +bE bc "} -(7,1,1) = {" +(3,1,1) = {" ac ad -ag -an -an -ac -ao -ao -aM +al +br +ab +am +ab +aE +aV +aA +au +aA +au +aK +ab +am +ab +aT +au aP -aM -ao -ac -aH -aH -aH -ba +au +aP +au +aY +ab +am +ab +aZ +bb +bb +bi +bl +bg +bn +ab +am +bs +bH +ax +ax +ax +bA +ax +bI +bE bc "} -(8,1,1) = {" +(4,1,1) = {" ac ae ah ao -ao -aB -ao -ao -aN -aQ -aS -ao -aU +bO aH +aI +ar +ar +ar +ar +ar +ar +ar +aI aH +bK +ar +ar +ar +ar +ar +ar +ar +bK aH -ba +bQ +au +au +au +au +au +au +au +bQ +aH +bT +ax +ax +by +ax +bs +bB +bB +bE bc "} -(9,1,1) = {" +(5,1,1) = {" ac af -ai -ap -ap -ac +ah ao -ao -aM -aR -aM -ao -ac +bO aH -aJ -aJ -ba +aI +ar +ar +ar +ar +ar +ar +ar +aI +aH +bK +ar +ar +ar +ar +ar +ar +ar +bK +aH +bQ +au +au +au +au +au +au +au +bQ +aH +bT +ax +ax +bz +ax +bs +bC +bC +bE bc "} -(10,1,1) = {" -ab -ab -bd +(6,1,1) = {" +ac +ad aq +bt +ab +am +ab +aE av aA +au +aA +au +aK +ab +am +ab +aT +au +aP +au +aP +au +aY +ab +am +ab +aG +ba +bd +bj +bj +bo +bG +ab +am +bs +bH +ax +ax +ax +bA +ax +bI +bE +bc +"} +(7,1,1) = {" +ab +ab +ai +ak +ab +an +ab +as +aw +aB +au +aC +au aF -ao -ao -ao -ao -ao +ab +aa +ab +aL +au +aQ +au +aQ +aR +aU +ab +aa ab aW -aZ -bb ba +bf +bk +bm +bo +bq +ab +aa +bs +bu +bx +bx +bx +bs +ax +bD +bE bc "} -(11,1,1) = {" -aa -aa -ab -ab -ab -ab -bd -aI -aK -aK -aK -aT -bd -ab -ab -ab -ab -ab -"} -(12,1,1) = {" -aa -aa -ab -ar -aw -aC -ac -ao -aL -aL -aL -ao -ao -aJ -aJ -ba -bc -aa -"} -(13,1,1) = {" -aa -aa -ab -ar -ax -ax -aG -ao -ao -ao -ao -ao -ao -ao -ao -ba -bc -aa -"} -(14,1,1) = {" -aa -aa -ab -ar -ax -ax -ac -aH -aO -aO -aO -aH -aO -aH -aO -ba -bc -aa -"} -(15,1,1) = {" -aa +(8,1,1) = {" aa ab ac ac -aD +ab +aa +ab ab ab -ac -ac ab ay ab -aX -ab +ay ab ab aa +ab +ab +bL +ab +ay +ab +ac +ab +ab +aa +ab +ab +ac +ab +ac +ab +ac +ab +ab +aa +bs +bs +bv +bv +bs +bs +bv +bv +bs +bs "} diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index 60f81677db..d5ca59c4f2 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -420,7 +420,7 @@ }, /area/shuttle/escape) "bd" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/plastitanium/brig{ @@ -572,7 +572,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "bx" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/plastitanium/brig{ @@ -621,8 +621,7 @@ /area/shuttle/escape) "bF" = ( /turf/open/floor/plasteel/darkgreen/side{ - dir = 9; - icon_state = "darkgreen" + dir = 9 }, /area/shuttle/escape) "bG" = ( @@ -642,8 +641,7 @@ pixel_y = -6 }, /turf/open/floor/plasteel/darkgreen/side{ - dir = 9; - icon_state = "darkgreen" + dir = 9 }, /area/shuttle/escape) "bI" = ( @@ -662,7 +660,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "bK" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/plasteel/darkgreen/side{ dir = 8 }, @@ -681,7 +679,7 @@ }, /area/shuttle/escape) "bN" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/plasteel/darkgreen/side, @@ -791,8 +789,7 @@ "bT" = ( /obj/machinery/recharge_station, /turf/open/floor/plasteel/darkgreen/side{ - dir = 9; - icon_state = "darkgreen" + dir = 9 }, /area/shuttle/escape) "bU" = ( @@ -806,8 +803,7 @@ icon_state = "plant-22" }, /turf/open/floor/plasteel/darkgreen/side{ - dir = 9; - icon_state = "darkgreen" + dir = 9 }, /area/shuttle/escape) "bW" = ( @@ -819,7 +815,7 @@ }, /area/shuttle/escape) "bX" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/structure/window/reinforced{ @@ -828,7 +824,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "bY" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/structure/window/reinforced{ @@ -837,27 +833,27 @@ /turf/open/floor/plasteel/dark, /area/shuttle/escape) "bZ" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/dark, /area/shuttle/escape) "ca" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/structure/window/reinforced{ dir = 1 }, /turf/open/floor/plasteel/dark, /area/shuttle/escape) "cb" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/plasteel/darkgreen/side{ dir = 1 }, /area/shuttle/escape) "cc" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/plasteel/darkgreen/side, @@ -884,8 +880,7 @@ dir = 8 }, /turf/open/floor/plasteel/darkgreen/side{ - dir = 9; - icon_state = "darkgreen" + dir = 9 }, /area/shuttle/escape) "ci" = ( diff --git a/_maps/shuttles/emergency_russiafightpit.dmm b/_maps/shuttles/emergency_russiafightpit.dmm index 795e8ff141..3e5568279b 100644 --- a/_maps/shuttles/emergency_russiafightpit.dmm +++ b/_maps/shuttles/emergency_russiafightpit.dmm @@ -18,7 +18,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "af" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium/blue, @@ -43,7 +43,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aj" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, @@ -76,7 +76,7 @@ pixel_x = 6; pixel_y = -24 }, -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, @@ -91,7 +91,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aq" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ar" = ( @@ -102,7 +102,7 @@ pixel_y = -6; req_access_txt = "19" }, -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/button/door{ id = "bearsbearsbears"; name = "release bears"; @@ -131,7 +131,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "av" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aw" = ( @@ -204,7 +204,7 @@ /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "aJ" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium, @@ -238,7 +238,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "aP" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium/brig, @@ -315,7 +315,7 @@ /turf/open/floor/engine, /area/shuttle/escape) "bc" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/structure/window/reinforced{ @@ -327,7 +327,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium, @@ -341,7 +341,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium, @@ -350,13 +350,13 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "bh" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium, @@ -551,7 +551,7 @@ /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "bO" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/light/small{ diff --git a/_maps/shuttles/emergency_scrapheap.dmm b/_maps/shuttles/emergency_scrapheap.dmm index 09603df29a..e95fcb507c 100644 --- a/_maps/shuttles/emergency_scrapheap.dmm +++ b/_maps/shuttles/emergency_scrapheap.dmm @@ -109,7 +109,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "at" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "au" = ( @@ -178,7 +178,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aE" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/plastitanium/brig, @@ -188,7 +188,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aG" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aH" = ( @@ -222,7 +222,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "aL" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium/blue, @@ -231,7 +231,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, @@ -266,7 +266,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aT" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/structure/extinguisher_cabinet{ @@ -395,14 +395,14 @@ /turf/open/floor/plating/airless, /area/shuttle/escape) "bo" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/light{ dir = 1 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "bp" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/machinery/light{ diff --git a/_maps/shuttles/emergency_supermatter.dmm b/_maps/shuttles/emergency_supermatter.dmm index cea0df4757..ce8842a41b 100644 --- a/_maps/shuttles/emergency_supermatter.dmm +++ b/_maps/shuttles/emergency_supermatter.dmm @@ -21,14 +21,14 @@ /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) "ah" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) "ai" = ( /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) "aj" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium/yellow, @@ -73,7 +73,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "ar" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/yellow, @@ -94,7 +94,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "av" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium/yellow, @@ -112,14 +112,7 @@ /turf/open/floor/plating, /area/shuttle/escape) "aB" = ( -/obj/machinery/power/supermatter_crystal/shard/hugbox{ - anchored = 1; - base_icon_state = "darkmatter"; - explosion_power = 20; - gasefficency = 0.15; - icon_state = "darkmatter"; - name = "anchored supermatter crystal" - }, +/obj/machinery/power/supermatter_crystal/shard/hugbox/fakecrystal, /turf/open/floor/plating, /area/shuttle/escape) "aD" = ( @@ -210,10 +203,7 @@ /turf/open/floor/plating/airless, /area/shuttle/escape) "aV" = ( -/obj/machinery/power/supermatter_crystal/shard/hugbox{ - anchored = 1; - name = "anchored supermatter shard" - }, +/obj/machinery/power/supermatter_crystal/shard/hugbox, /turf/open/floor/plating/airless, /area/shuttle/escape) "aW" = ( @@ -247,7 +237,7 @@ /turf/open/floor/plating/airless, /area/shuttle/escape) "bb" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/effect/turf_decal/stripes/line{ dir = 1 }, diff --git a/_maps/shuttles/emergency_wabbajack.dmm b/_maps/shuttles/emergency_wabbajack.dmm index 25d97e2bbf..34f1661020 100644 --- a/_maps/shuttles/emergency_wabbajack.dmm +++ b/_maps/shuttles/emergency_wabbajack.dmm @@ -38,7 +38,7 @@ /turf/open/floor/plasteel/cult, /area/shuttle/escape) "ak" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium/brig, @@ -47,7 +47,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "am" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/plastitanium/brig, @@ -92,7 +92,7 @@ pixel_x = -24; pixel_y = -6 }, -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/plastitanium/brig, @@ -102,11 +102,11 @@ /turf/open/floor/plasteel/cult, /area/shuttle/escape) "av" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aw" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium, @@ -182,13 +182,13 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "aI" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aJ" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/structure/window/reinforced{ @@ -352,7 +352,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "bm" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/light/small{ @@ -365,7 +365,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "bo" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/light/small{ diff --git a/_maps/shuttles/escape_pod_default.dmm b/_maps/shuttles/escape_pod_default.dmm index 14b87a3fa2..8dcccf9326 100644 --- a/_maps/shuttles/escape_pod_default.dmm +++ b/_maps/shuttles/escape_pod_default.dmm @@ -1,9 +1,9 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "B" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/pod_1) "G" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/machinery/status_display{ @@ -32,7 +32,7 @@ /turf/open/floor/plating, /area/shuttle/pod_1) "U" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/item/radio/intercom{ diff --git a/_maps/shuttles/escape_pod_large.dmm b/_maps/shuttles/escape_pod_large.dmm index 4900045801..49f2f44e1e 100644 --- a/_maps/shuttles/escape_pod_large.dmm +++ b/_maps/shuttles/escape_pod_large.dmm @@ -1,6 +1,6 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "h" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/item/storage/pod{ @@ -17,7 +17,7 @@ /turf/open/floor/plating, /area/shuttle/pod_1) "A" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/item/radio/intercom{ @@ -36,13 +36,13 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) "H" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) "J" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/status_display{ @@ -51,13 +51,13 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) "L" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) "M" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/machinery/status_display{ diff --git a/_maps/shuttles/ferry_base.dmm b/_maps/shuttles/ferry_base.dmm index cb9d6c4834..f7e717ccb8 100644 --- a/_maps/shuttles/ferry_base.dmm +++ b/_maps/shuttles/ferry_base.dmm @@ -24,7 +24,7 @@ /turf/closed/wall/mineral/titanium/interior, /area/shuttle/transport) "h" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, @@ -36,7 +36,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) "j" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) "k" = ( @@ -64,7 +64,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) "q" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium/blue, diff --git a/_maps/shuttles/ferry_fancy.dmm b/_maps/shuttles/ferry_fancy.dmm index a79903533e..e21bd7c5eb 100644 --- a/_maps/shuttles/ferry_fancy.dmm +++ b/_maps/shuttles/ferry_fancy.dmm @@ -27,7 +27,7 @@ /turf/open/floor/plating/airless, /area/shuttle/transport) "g" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/pod/dark, /area/shuttle/transport) "h" = ( @@ -87,7 +87,7 @@ /turf/open/floor/plating/airless, /area/shuttle/transport) "p" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/pod/dark, diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry_lighthouse.dmm index 793b793531..21f8a58e44 100644 --- a/_maps/shuttles/ferry_lighthouse.dmm +++ b/_maps/shuttles/ferry_lighthouse.dmm @@ -68,7 +68,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) "ar" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/wood, /area/shuttle/transport) "as" = ( @@ -137,7 +137,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) "aJ" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) "aK" = ( @@ -204,7 +204,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) "aW" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium/blue, diff --git a/_maps/shuttles/ferry_meat.dmm b/_maps/shuttles/ferry_meat.dmm index 989a067efe..22d83d8d01 100644 --- a/_maps/shuttles/ferry_meat.dmm +++ b/_maps/shuttles/ferry_meat.dmm @@ -15,7 +15,7 @@ /turf/closed/wall/mineral/titanium/interior, /area/shuttle/transport) "f" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/plasteel/freezer, @@ -90,7 +90,7 @@ /area/shuttle/transport) "n" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/plasteel/freezer, /area/shuttle/transport) "o" = ( @@ -131,7 +131,7 @@ /turf/open/floor/plasteel/freezer, /area/shuttle/transport) "w" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/plasteel/freezer, diff --git a/_maps/shuttles/infiltrator_basic.dmm b/_maps/shuttles/infiltrator_basic.dmm index 5d21fad7f8..0add06a7ff 100644 --- a/_maps/shuttles/infiltrator_basic.dmm +++ b/_maps/shuttles/infiltrator_basic.dmm @@ -176,7 +176,7 @@ /turf/closed/wall/mineral/plastitanium, /area/shuttle/syndicate/hallway) "aC" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4; name = "tactical chair" }, @@ -188,7 +188,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/syndicate/hallway) "aE" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8; name = "tactical chair" }, @@ -206,7 +206,7 @@ /turf/closed/wall/mineral/plastitanium, /area/shuttle/syndicate/eva) "aH" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4; name = "tactical chair" }, @@ -218,7 +218,7 @@ }, /area/shuttle/syndicate/hallway) "aI" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8; name = "tactical chair" }, @@ -256,7 +256,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/syndicate/eva) "aO" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4; name = "tactical chair" }, @@ -318,7 +318,7 @@ }, /area/shuttle/syndicate/hallway) "aX" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4; name = "tactical chair" }, @@ -411,12 +411,12 @@ /area/shuttle/syndicate/airlock) "bi" = ( /obj/structure/rack, -/obj/item/clothing/suit/space/syndicate/black/red, -/obj/item/clothing/head/helmet/space/syndicate/black/red, /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/item/clothing/suit/space/syndicate, +/obj/item/clothing/head/helmet/space/syndicate, /turf/open/floor/mineral/plastitanium, /area/shuttle/syndicate/airlock) "bj" = ( diff --git a/_maps/shuttles/labour_box.dmm b/_maps/shuttles/labour_box.dmm index 315c40b8b9..fe9756ef33 100644 --- a/_maps/shuttles/labour_box.dmm +++ b/_maps/shuttles/labour_box.dmm @@ -86,7 +86,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/labor) "o" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/machinery/flasher{ diff --git a/_maps/shuttles/labour_delta.dmm b/_maps/shuttles/labour_delta.dmm index 2ad922d9f4..aeb2841683 100644 --- a/_maps/shuttles/labour_delta.dmm +++ b/_maps/shuttles/labour_delta.dmm @@ -120,7 +120,7 @@ /turf/open/floor/plasteel, /area/shuttle/labor) "q" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/effect/turf_decal/stripes/line{ @@ -133,7 +133,7 @@ /turf/open/floor/plasteel, /area/shuttle/labor) "s" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/machinery/flasher{ diff --git a/_maps/shuttles/mining_box.dmm b/_maps/shuttles/mining_box.dmm index c525a4be88..2f262cae2b 100644 --- a/_maps/shuttles/mining_box.dmm +++ b/_maps/shuttles/mining_box.dmm @@ -18,7 +18,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/mining) "f" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium/blue, diff --git a/_maps/shuttles/mining_delta.dmm b/_maps/shuttles/mining_delta.dmm index 68672360b5..920a754e45 100644 --- a/_maps/shuttles/mining_delta.dmm +++ b/_maps/shuttles/mining_delta.dmm @@ -47,7 +47,7 @@ /turf/open/floor/plasteel, /area/shuttle/mining) "g" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/plasteel/neutral, @@ -116,7 +116,7 @@ /turf/open/floor/plasteel/white, /area/shuttle/mining) "n" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/effect/decal/cleanable/dirt, @@ -126,7 +126,7 @@ /turf/open/floor/plasteel, /area/shuttle/mining) "o" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/effect/decal/cleanable/dirt, @@ -139,7 +139,7 @@ /turf/open/floor/plasteel, /area/shuttle/mining) "p" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/effect/decal/cleanable/dirt, diff --git a/_maps/shuttles/pirate_default.dmm b/_maps/shuttles/pirate_default.dmm index 3c9ee504eb..59ce3014af 100644 --- a/_maps/shuttles/pirate_default.dmm +++ b/_maps/shuttles/pirate_default.dmm @@ -39,7 +39,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/pirate) "ag" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/plasteel/dark, @@ -47,7 +47,7 @@ "ah" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/monitor{ +/obj/machinery/computer/monitor/secret{ dir = 8 }, /turf/open/floor/plasteel/dark, @@ -71,9 +71,7 @@ pixel_y = -24; req_access = null }, -/obj/structure/chair{ - tag = "icon-chair (WEST)"; - icon_state = "chair"; +/obj/structure/chair/shuttle{ dir = 8 }, /obj/effect/decal/cleanable/dirt, @@ -84,7 +82,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/pirate) "an" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/effect/decal/cleanable/dirt, @@ -415,9 +413,7 @@ pixel_y = -24; req_access = null }, -/obj/structure/chair{ - tag = "icon-chair (WEST)"; - icon_state = "chair"; +/obj/structure/chair/shuttle{ dir = 8 }, /obj/effect/decal/cleanable/dirt, @@ -1193,7 +1189,7 @@ }, /area/shuttle/pirate) "cI" = ( -/obj/machinery/computer/monitor{ +/obj/machinery/computer/monitor/secret{ dir = 8 }, /obj/structure/cable/yellow{ @@ -1552,8 +1548,6 @@ /obj/effect/turf_decal/stripes/corner, /obj/machinery/light/small, /turf/open/floor/plasteel/yellow/corner{ - tag = "icon-yellowcorner (WEST)"; - icon_state = "yellowcorner"; dir = 8 }, /area/shuttle/pirate) diff --git a/_maps/shuttles/ruin_caravan_victim.dmm b/_maps/shuttles/ruin_caravan_victim.dmm index 431d5aac61..8f65015d55 100644 --- a/_maps/shuttles/ruin_caravan_victim.dmm +++ b/_maps/shuttles/ruin_caravan_victim.dmm @@ -156,7 +156,7 @@ }, /area/shuttle/caravan/freighter1) "gw" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/effect/decal/cleanable/dirt, diff --git a/_maps/shuttles/ruin_pirate_cutter.dmm b/_maps/shuttles/ruin_pirate_cutter.dmm index 8bcddfb680..dac9d9fa0f 100644 --- a/_maps/shuttles/ruin_pirate_cutter.dmm +++ b/_maps/shuttles/ruin_pirate_cutter.dmm @@ -43,6 +43,13 @@ dir = 5 }, /area/shuttle/caravan/pirate) +"eL" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 10; + faction = list("pirate") + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/pirate) "fh" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -73,7 +80,9 @@ /turf/open/floor/plasteel/red/side, /area/shuttle/caravan/pirate) "hh" = ( -/mob/living/simple_animal/hostile/pirate, +/mob/living/simple_animal/hostile/pirate{ + environment_smash = 0 + }, /turf/open/floor/plasteel, /area/shuttle/caravan/pirate) "hI" = ( @@ -390,6 +399,12 @@ /obj/item/reagent_containers/food/drinks/bottle/rum, /turf/open/floor/plasteel/dark, /area/shuttle/caravan/pirate) +"tM" = ( +/mob/living/simple_animal/hostile/pirate/ranged{ + environment_smash = 0 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) "ul" = ( /obj/structure/table, /obj/item/retractor, @@ -448,8 +463,6 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted, /turf/open/floor/plasteel/red/side{ dir = 8 }, @@ -853,6 +866,13 @@ /obj/item/melee/classic_baton, /turf/open/floor/plasteel/darkred/corner, /area/shuttle/caravan/pirate) +"Yj" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 9; + faction = list("pirate") + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/pirate) "Yo" = ( /obj/structure/table, /obj/item/storage/box/lethalshot, @@ -913,7 +933,7 @@ Jv "} (3,1,1) = {" Jv -oL +Yj af qX yt @@ -923,7 +943,7 @@ RK FM jh af -oL +eL Jv "} (4,1,1) = {" @@ -980,7 +1000,7 @@ su Ag af jo -su +tM sr af af diff --git a/_maps/shuttles/ruin_syndicate_dropship.dmm b/_maps/shuttles/ruin_syndicate_dropship.dmm index 47c28d1500..ac9a2cd680 100644 --- a/_maps/shuttles/ruin_syndicate_dropship.dmm +++ b/_maps/shuttles/ruin_syndicate_dropship.dmm @@ -1,10 +1,8 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "al" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, @@ -90,25 +88,23 @@ /turf/open/floor/plating, /area/shuttle/caravan/syndicate3) "hF" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/machinery/light/small{ dir = 8 }, /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 8; name = "Syndicate Drop Ship APC"; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/dark, /area/shuttle/caravan/syndicate3) "ka" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/machinery/light/small{ @@ -173,7 +169,7 @@ /turf/open/floor/plating, /area/shuttle/caravan/syndicate3) "rV" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/effect/decal/cleanable/dirt, @@ -189,7 +185,7 @@ }, /area/shuttle/caravan/syndicate3) "sn" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/dark, /area/shuttle/caravan/syndicate3) @@ -251,7 +247,7 @@ /turf/open/floor/plasteel/darkred/side, /area/shuttle/caravan/syndicate3) "Cm" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/machinery/firealarm{ @@ -282,11 +278,9 @@ }, /area/shuttle/caravan/syndicate3) "EO" = ( -/obj/structure/chair, -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/structure/chair/shuttle, +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/dark, @@ -302,11 +296,9 @@ /turf/open/floor/mineral/plastitanium, /area/shuttle/caravan/syndicate3) "Gx" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /turf/open/floor/plasteel/dark, /area/shuttle/caravan/syndicate3) @@ -327,9 +319,8 @@ /obj/structure/chair/office/dark{ dir = 4 }, -/mob/living/simple_animal/hostile/syndicate{ - environment_smash = 0; - name = "Syndicate Salvage Pilot" +/mob/living/simple_animal/hostile/syndicate/ranged/pilot{ + environment_smash = 0 }, /turf/open/floor/plasteel/dark, /area/shuttle/caravan/syndicate3) diff --git a/_maps/shuttles/ruin_syndicate_fighter.dmm b/_maps/shuttles/ruin_syndicate_fighter.dmm index 116448f4d6..1f8c264079 100644 --- a/_maps/shuttles/ruin_syndicate_fighter.dmm +++ b/_maps/shuttles/ruin_syndicate_fighter.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aA" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/machinery/turretid{ @@ -18,9 +18,8 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/mob/living/simple_animal/hostile/syndicate{ - environment_smash = 0; - name = "Syndicate Salvage Pilot" +/mob/living/simple_animal/hostile/syndicate/ranged/pilot{ + environment_smash = 0 }, /turf/open/floor/mineral/plastitanium, /area/shuttle/caravan/syndicate1) diff --git a/_maps/shuttles/snowdin_excavation.dmm b/_maps/shuttles/snowdin_excavation.dmm new file mode 100644 index 0000000000..e0b53a78b1 --- /dev/null +++ b/_maps/shuttles/snowdin_excavation.dmm @@ -0,0 +1,90 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Elevator Access" + }, +/obj/docking_port/mobile/elevator{ + dir = 4; + height = 6; + id = "snowdin_excavation"; + name = "excavation elevator"; + timid = 1; + width = 6 + }, +/turf/open/floor/plating, +/area/shuttle/snowdin/elevator1) +"b" = ( +/obj/structure/window/reinforced/fulltile/ice, +/obj/structure/grille, +/turf/open/floor/plating, +/area/shuttle/snowdin/elevator1) +"c" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Elevator Access" + }, +/turf/open/floor/plating, +/area/shuttle/snowdin/elevator1) +"d" = ( +/turf/closed/wall/ice, +/area/shuttle/snowdin/elevator1) +"e" = ( +/turf/open/floor/engine, +/area/shuttle/snowdin/elevator1) +"f" = ( +/obj/machinery/computer/shuttle/snowdin/mining{ + dir = 2; + name = "Excavation Elevator Console"; + possible_destinations = "snowdin_excavation_top;snowdin_excavation_down"; + shuttleId = "snowdin_excavation" + }, +/turf/open/floor/engine, +/area/shuttle/snowdin/elevator1) + +(1,1,1) = {" +d +b +c +a +b +d +"} +(2,1,1) = {" +b +e +e +e +e +b +"} +(3,1,1) = {" +c +e +e +e +e +c +"} +(4,1,1) = {" +c +e +e +e +e +c +"} +(5,1,1) = {" +b +f +e +e +e +b +"} +(6,1,1) = {" +d +b +c +c +b +d +"} diff --git a/_maps/shuttles/snowdin_mining.dmm b/_maps/shuttles/snowdin_mining.dmm new file mode 100644 index 0000000000..cd8d37d703 --- /dev/null +++ b/_maps/shuttles/snowdin_mining.dmm @@ -0,0 +1,86 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Elevator Access" + }, +/obj/docking_port/mobile/elevator{ + dir = 4; + dwidth = 2; + height = 5; + id = "snowdin_mining"; + name = "mining elevator"; + timid = 1; + width = 5 + }, +/turf/open/floor/plating, +/area/shuttle/snowdin/elevator2) +"b" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/shuttle/snowdin/elevator2) +"c" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Elevator Access" + }, +/turf/open/floor/plating, +/area/shuttle/snowdin/elevator2) +"d" = ( +/turf/closed/wall, +/area/shuttle/snowdin/elevator2) +"e" = ( +/obj/machinery/computer/shuttle/snowdin/mining, +/turf/open/floor/engine, +/area/shuttle/snowdin/elevator2) +"f" = ( +/turf/open/floor/engine, +/area/shuttle/snowdin/elevator2) +"g" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/engine, +/area/shuttle/snowdin/elevator2) +"i" = ( +/obj/machinery/light/small, +/turf/open/floor/engine, +/area/shuttle/snowdin/elevator2) +"j" = ( +/turf/closed/wall/rust, +/area/shuttle/snowdin/elevator2) + +(1,1,1) = {" +j +b +a +b +d +"} +(2,1,1) = {" +b +e +f +i +b +"} +(3,1,1) = {" +c +f +f +f +c +"} +(4,1,1) = {" +b +g +f +f +b +"} +(5,1,1) = {" +d +b +c +b +j +"} diff --git a/_maps/shuttles/whiteship_box.dmm b/_maps/shuttles/whiteship_box.dmm index 400b8f219a..6b56e1a6a0 100644 --- a/_maps/shuttles/whiteship_box.dmm +++ b/_maps/shuttles/whiteship_box.dmm @@ -137,7 +137,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "aJ" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/mineral/titanium, @@ -179,7 +179,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "aS" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/effect/decal/remains/human, @@ -232,7 +232,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bd" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bf" = ( diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 3118d4e0ce..f8e366950a 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -753,7 +753,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bo" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; name = "dust" @@ -827,7 +827,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "bu" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /obj/effect/decal/cleanable/dirt{ @@ -871,7 +871,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "by" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /obj/effect/decal/cleanable/dirt{ @@ -1022,7 +1022,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bL" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /obj/effect/decal/cleanable/dirt{ diff --git a/_maps/shuttles/whiteship_pubby.dmm b/_maps/shuttles/whiteship_pubby.dmm index c1171c899d..e7cf65a6f5 100644 --- a/_maps/shuttles/whiteship_pubby.dmm +++ b/_maps/shuttles/whiteship_pubby.dmm @@ -42,7 +42,7 @@ /turf/open/floor/plating/abductor, /area/shuttle/abandoned) "i" = ( -/obj/structure/chair, +/obj/structure/chair/shuttle, /turf/open/floor/plating/abductor, /area/shuttle/abandoned) "j" = ( @@ -65,7 +65,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "l" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 4 }, /turf/open/floor/plating/abductor, @@ -75,7 +75,7 @@ /turf/open/floor/plating/abductor, /area/shuttle/abandoned) "n" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 8 }, /turf/open/floor/plating/abductor, @@ -110,7 +110,7 @@ /turf/open/floor/plating/abductor, /area/shuttle/abandoned) "q" = ( -/obj/structure/chair{ +/obj/structure/chair/shuttle{ dir = 1 }, /turf/open/floor/plating/abductor, diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index bb8d902fae..1c5185b8dc 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -96,6 +96,7 @@ #define ORGAN_SLOT_RIGHT_ARM_AUG "r_arm_device" #define ORGAN_SLOT_LEFT_ARM_AUG "l_arm_device" #define ORGAN_SLOT_STOMACH "stomach" +#define ORGAN_SLOT_STOMACH_AID "stomach_aid" #define ORGAN_SLOT_BREATHING_TUBE "breathing_tube" #define ORGAN_SLOT_EARS "ears" #define ORGAN_SLOT_EYES "eye_sight" diff --git a/code/__DEFINES/MC.dm b/code/__DEFINES/MC.dm index cbcf2c1dd9..97ce6ef6fd 100644 --- a/code/__DEFINES/MC.dm +++ b/code/__DEFINES/MC.dm @@ -19,8 +19,8 @@ #define NEW_SS_GLOBAL(varname) if(varname != src){if(istype(varname)){Recover();qdel(varname);}varname = src;} -#define START_PROCESSING(Processor, Datum) if (!Datum.isprocessing) {Datum.isprocessing = TRUE;Processor.processing += Datum} -#define STOP_PROCESSING(Processor, Datum) Datum.isprocessing = FALSE;Processor.processing -= Datum +#define START_PROCESSING(Processor, Datum) if (!(Datum.datum_flags & DF_ISPROCESSING)) {Datum.datum_flags |= DF_ISPROCESSING;Processor.processing += Datum} +#define STOP_PROCESSING(Processor, Datum) Datum.datum_flags &= ~DF_ISPROCESSING;Processor.processing -= Datum //SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier) diff --git a/code/__DEFINES/_globals.dm b/code/__DEFINES/_globals.dm index 7e7aa3158f..e5f5929a95 100644 --- a/code/__DEFINES/_globals.dm +++ b/code/__DEFINES/_globals.dm @@ -1,11 +1,15 @@ -//See controllers/globals.dm +//See also controllers/globals.dm + +//Creates a global initializer with a given InitValue expression, do not use #define GLOBAL_MANAGED(X, InitValue)\ /datum/controller/global_vars/proc/InitGlobal##X(){\ ##X = ##InitValue;\ gvars_datum_init_order += #X;\ } +//Creates an empty global initializer, do not use #define GLOBAL_UNMANAGED(X) /datum/controller/global_vars/proc/InitGlobal##X() { return; } +//Prevents a given global from being VV'd #ifndef TESTING #define GLOBAL_PROTECT(X)\ /datum/controller/global_vars/InitGlobal##X(){\ @@ -16,23 +20,35 @@ #define GLOBAL_PROTECT(X) #endif +//Standard BYOND global, do not use #define GLOBAL_REAL_VAR(X) var/global/##X + +//Standard typed BYOND global, do not use #define GLOBAL_REAL(X, Typepath) var/global##Typepath/##X +//Defines a global var on the controller, do not use #define GLOBAL_RAW(X) /datum/controller/global_vars/var/global##X +//Create an untyped global with an initializer expression #define GLOBAL_VAR_INIT(X, InitValue) GLOBAL_RAW(/##X); GLOBAL_MANAGED(X, InitValue) +//Create a global const var, do not use #define GLOBAL_VAR_CONST(X, InitValue) GLOBAL_RAW(/const/##X) = InitValue; GLOBAL_UNMANAGED(X) +//Create a list global with an initializer expression #define GLOBAL_LIST_INIT(X, InitValue) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, InitValue) +//Create a list global that is initialized as an empty list #define GLOBAL_LIST_EMPTY(X) GLOBAL_LIST_INIT(X, list()) +//Create a typed global with an initializer expression #define GLOBAL_DATUM_INIT(X, Typepath, InitValue) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, InitValue) +//Create an untyped null global #define GLOBAL_VAR(X) GLOBAL_RAW(/##X); GLOBAL_UNMANAGED(X) +//Create a null global list #define GLOBAL_LIST(X) GLOBAL_RAW(/list/##X); GLOBAL_UNMANAGED(X) +//Create an typed null global #define GLOBAL_DATUM(X, Typepath) GLOBAL_RAW(Typepath/##X); GLOBAL_UNMANAGED(X) diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index d00645846b..c9d545fc03 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -1,22 +1,22 @@ -#define ACCESS_SECURITY 1 // Security equipment -#define ACCESS_BRIG 2 // Brig timers and permabrig -#define ACCESS_ARMORY 3 -#define ACCESS_FORENSICS_LOCKERS 4 +#define ACCESS_SECURITY 1 // Security equipment, security records, gulag item storage, secbots +#define ACCESS_BRIG 2 // Brig cells+timers, permabrig, gulag+gulag shuttle, prisoner management console +#define ACCESS_ARMORY 3 // Armory, gulag teleporter, execution chamber +#define ACCESS_FORENSICS_LOCKERS 4 //Detective's office, forensics lockers, security+medical records #define ACCESS_MEDICAL 5 #define ACCESS_MORGUE 6 -#define ACCESS_TOX 7 -#define ACCESS_TOX_STORAGE 8 -#define ACCESS_GENETICS 9 -#define ACCESS_ENGINE 10 -#define ACCESS_ENGINE_EQUIP 11 +#define ACCESS_TOX 7 //R&D department, R&D console, burn chamber on some maps +#define ACCESS_TOX_STORAGE 8 //Toxins storage, burn chamber on some maps +#define ACCESS_GENETICS 9 +#define ACCESS_ENGINE 10 //Engineering area, power monitor, power flow control console +#define ACCESS_ENGINE_EQUIP 11 //APCs, EngiVend/YouTool, engineering equipment lockers #define ACCESS_MAINT_TUNNELS 12 #define ACCESS_EXTERNAL_AIRLOCKS 13 -#define ACCESS_EMERGENCY_STORAGE 14 +#define ACCESS_EMERGENCY_STORAGE 14 //Not in use #define ACCESS_CHANGE_IDS 15 #define ACCESS_AI_UPLOAD 16 #define ACCESS_TELEPORTER 17 #define ACCESS_EVA 18 -#define ACCESS_HEADS 19 +#define ACCESS_HEADS 19 //Bridge, EVA storage windoors, gateway shutters, AI integrity restorer, clone record deletion, comms console #define ACCESS_CAPTAIN 20 #define ACCESS_ALL_PERSONAL_LOCKERS 21 #define ACCESS_CHAPEL_OFFICE 22 @@ -31,9 +31,9 @@ #define ACCESS_CARGO 31 #define ACCESS_CONSTRUCTION 32 #define ACCESS_CHEMISTRY 33 -#define ACCESS_CARGO_BOT 34 +#define ACCESS_CARGO_BOT 34 //Not in use #define ACCESS_HYDROPONICS 35 -#define ACCESS_MANUFACTURING 36 +#define ACCESS_MANUFACTURING 36 //Only used on research.dmm away mission #define ACCESS_LIBRARY 37 #define ACCESS_LAWYER 38 #define ACCESS_VIROLOGY 39 @@ -44,10 +44,10 @@ #define ACCESS_THEATRE 46 #define ACCESS_RESEARCH 47 #define ACCESS_MINING 48 -#define ACCESS_MINING_OFFICE 49 //not in use +#define ACCESS_MINING_OFFICE 49 //Not in use #define ACCESS_MAILSORTING 50 -#define ACCESS_MINT 51 -#define ACCESS_MINT_VAULT 52 +#define ACCESS_MINT 51 //Not in use +#define ACCESS_MINT_VAULT 52 //Not in use #define ACCESS_VAULT 53 #define ACCESS_MINING_STATION 54 #define ACCESS_XENOBIOLOGY 55 @@ -58,19 +58,19 @@ #define ACCESS_KEYCARD_AUTH 60 //Used for events which require at least two people to confirm them #define ACCESS_TCOMSAT 61 // has access to the entire telecomms satellite / machinery #define ACCESS_GATEWAY 62 -#define ACCESS_SEC_DOORS 63 // Security front doors -#define ACCESS_MINERAL_STOREROOM 64 +#define ACCESS_SEC_DOORS 63 // Outer brig doors, department security posts +#define ACCESS_MINERAL_STOREROOM 64 //For releasing minerals from the ORM #define ACCESS_MINISAT 65 #define ACCESS_WEAPONS 66 //Weapon authorization for secbots -#define ACCESS_NETWORK 67 -#define ACCESS_CLONING 68 //Cloning room +#define ACCESS_NETWORK 67 //NTnet diagnostics/monitoring software +#define ACCESS_CLONING 68 //Cloning room and clone pod ejection //BEGIN CENTCOM ACCESS /*Should leave plenty of room if we need to add more access levels. Mostly for admin fun times.*/ -#define ACCESS_CENT_GENERAL 101//General facilities. +#define ACCESS_CENT_GENERAL 101//General facilities. CentCom ferry. #define ACCESS_CENT_THUNDER 102//Thunderdome. -#define ACCESS_CENT_SPECOPS 103//Special Ops. +#define ACCESS_CENT_SPECOPS 103//Special Ops. Captain's display case, Marauder and Seraph mechs. #define ACCESS_CENT_MEDICAL 104//Medical/Research #define ACCESS_CENT_LIVING 105//Living quarters. #define ACCESS_CENT_STORAGE 106//Generic storage areas. @@ -79,7 +79,7 @@ #define ACCESS_CENT_BAR 110 // The non-existent CentCom Bar //The Syndicate -#define ACCESS_SYNDICATE 150//General Syndicate Access +#define ACCESS_SYNDICATE 150//General Syndicate Access. Includes Syndicate mechs and ruins. #define ACCESS_SYNDICATE_LEADER 151//Nuke Op Leader Access //Away Missions or Ruins diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 94a247171c..255464d406 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -58,7 +58,9 @@ #define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_FULLMONTY_NONAME(user)]" #define ADMIN_JMP(src) "(JMP)" #define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" +#define AREACOORD(src) "[src ? "[get_area_name(src, TRUE)] ([src.x], [src.y], [src.z])" : "nonexistent location"]" #define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" +#define ADMIN_VERBOSEJMP(src) "[src ? "[AREACOORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" #define ADMIN_INDIVIDUALLOG(user) "(LOGS)" #define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" @@ -67,6 +69,7 @@ #define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device" #define ADMIN_PUNISHMENT_FIREBALL "Fireball" #define ADMIN_PUNISHMENT_ROD "Immovable Rod" +#define ADMIN_PUNISHMENT_SUPPLYPOD "Supply Pod" #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index a05aaf3265..f6f903ec8f 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -194,6 +194,37 @@ #define ATMOS_GAS_MONITOR_WASTE_ENGINE "engine-waste_out" #define ATMOS_GAS_MONITOR_WASTE_ATMOS "atmos-waste_out" +//AIRLOCK CONTROLLER TAGS + +//RnD toxins burn chamber +#define INCINERATOR_TOXMIX_IGNITER "toxmix_igniter" +#define INCINERATOR_TOXMIX_VENT "toxmix_vent" +#define INCINERATOR_TOXMIX_DP_VENTPUMP "toxmix_airlock_pump" +#define INCINERATOR_TOXMIX_AIRLOCK_SENSOR "toxmix_airlock_sensor" +#define INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER "toxmix_airlock_controller" +#define INCINERATOR_TOXMIX_AIRLOCK_INTERIOR "toxmix_airlock_interior" +#define INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR "toxmix_airlock_exterior" + +//Atmospherics/maintenance incinerator +#define INCINERATOR_ATMOS_IGNITER "atmos_incinerator_igniter" +#define INCINERATOR_ATMOS_MAINVENT "atmos_incinerator_mainvent" +#define INCINERATOR_ATMOS_AUXVENT "atmos_incinerator_auxvent" +#define INCINERATOR_ATMOS_DP_VENTPUMP "atmos_incinerator_airlock_pump" +#define INCINERATOR_ATMOS_AIRLOCK_SENSOR "atmos_incinerator_airlock_sensor" +#define INCINERATOR_ATMOS_AIRLOCK_CONTROLLER "atmos_incinerator_airlock_controller" +#define INCINERATOR_ATMOS_AIRLOCK_INTERIOR "atmos_incinerator_airlock_interior" +#define INCINERATOR_ATMOS_AIRLOCK_EXTERIOR "atmos_incinerator_airlock_exterior" + +//Syndicate lavaland base incinerator (lavaland_surface_syndicate_base1.dmm) +#define INCINERATOR_SYNDICATELAVA_IGNITER "syndicatelava_igniter" +#define INCINERATOR_SYNDICATELAVA_MAINVENT "syndicatelava_mainvent" +#define INCINERATOR_SYNDICATELAVA_AUXVENT "syndicatelava_auxvent" +#define INCINERATOR_SYNDICATELAVA_DP_VENTPUMP "syndicatelava_airlock_pump" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR "syndicatelava_airlock_sensor" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER "syndicatelava_airlock_controller" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR "syndicatelava_airlock_interior" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR "syndicatelava_airlock_exterior" + //MULTIPIPES //IF YOU EVER CHANGE THESE CHANGE SPRITES TO MATCH. #define PIPING_LAYER_MIN 1 @@ -217,16 +248,16 @@ #define ASSERT_GAS(gas_id, gas_mixture) if (!gas_mixture.gases[gas_id]) { ADD_GAS(gas_id, gas_mixture.gases) }; GLOBAL_LIST_INIT(pipe_paint_colors, list( - "Amethyst" = rgb(130,43,255), //supplymain - "Blue" = rgb(0,0,255), - "Brown" = rgb(178,100,56), - "Cyan" = rgb(0,255,249), - "Dark" = rgb(69,69,69), - "Green" = rgb(30,255,0), - "Grey" = rgb(255,255,255), - "Orange" = rgb(255,129,25), - "Purple" = rgb(128,0,182), - "Red" = rgb(255,0,0), - "Violet" = rgb(64,0,128), - "Yellow" = rgb(255,198,0) - )) + "amethyst" = rgb(130,43,255), //supplymain + "blue" = rgb(0,0,255), + "brown" = rgb(178,100,56), + "cyan" = rgb(0,255,249), + "dark" = rgb(69,69,69), + "green" = rgb(30,255,0), + "grey" = rgb(255,255,255), + "orange" = rgb(255,129,25), + "purple" = rgb(128,0,182), + "red" = rgb(255,0,0), + "violet" = rgb(64,0,128), + "yellow" = rgb(255,198,0) +)) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index cd01b92717..b4131a0bc9 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -1,3 +1,7 @@ +#define SEND_SIGNAL(target, sigtype, arguments...) ( !target.comp_lookup || !target.comp_lookup[sigtype] ? NONE : target._SendSignal(sigtype, list(##arguments)) ) + +#define SEND_GLOBAL_SIGNAL(sigtype, arguments...) ( SEND_SIGNAL(SSdcs, sigtype, ##arguments) ) + //shorthand #define GET_COMPONENT_FROM(varname, path, target) var##path/##varname = ##target.GetComponent(##path) #define GET_COMPONENT(varname, path) GET_COMPONENT_FROM(varname, path, src) @@ -14,6 +18,14 @@ // All signals. Format: // When the signal is called: (signal arguments) +// global signals +// These are signals which can be listened to by any component on any parent +// start global signals with "!", this used to be necessary but now it's just a formatting choice +#define COMSIG_GLOB_NEW_Z "!new_z" //from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args) +#define COMSIG_GLOB_VAR_EDIT "!var_edit" //called after a successful var edit somewhere in the world: (list/args) + +////////////////////////////////////////////////////////////////// + // /datum signals #define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (/datum/component) #define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component) @@ -32,6 +44,8 @@ //End positions #define COMPONENT_EXNAME_CHANGED 1 #define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (atom/movable/entering, /atom) +#define COMSIG_ATOM_EXIT "atom_exit" //from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc) + #define COMPONENT_ATOM_BLOCK_EXIT 1 #define COMSIG_ATOM_EXITED "atom_exited" //from base of atom/Exited(): (atom/movable/exiting, atom/newloc) #define COMSIG_ATOM_EX_ACT "atom_ex_act" //from base of atom/ex_act(): (severity, target) #define COMSIG_ATOM_EMP_ACT "atom_emp_act" //from base of atom/emp_act(): (severity) @@ -78,6 +92,8 @@ // /atom/movable signals #define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir) #define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable) +#define COMSIG_MOVABLE_UNCROSS "movable_uncross" //from base of atom/movable/Uncross(): (/atom/movable) + #define COMPONENT_MOVABLE_BLOCK_UNCROSS 1 #define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" //from base of atom/movable/Uncrossed(): (/atom/movable) #define COMSIG_MOVABLE_COLLIDE "movable_collide" //from base of atom/movable/Collide(): (/atom) #define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum) @@ -87,21 +103,32 @@ #define COMSIG_MOVABLE_THROW "movable_throw" //from base of atom/movable/throw_at(): (datum/thrownthing, spin) #define COMSIG_MOVABLE_Z_CHANGED "movable_ztransit" //from base of atom/movable/onTransitZ(): (old_z, new_z) +// /mob Signals +#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (magic, holy, protection_sources) + #define COMPONENT_BLOCK_MAGIC 1 + +// /mob/living signals +#define COMSIG_LIVING_RESIST "living_resist" //from base of mob/living/resist() (/mob/living) +#define COMSIG_LIVING_IGNITED "living_ignite" //from base of mob/living/IgniteMob() (/mob/living) +#define COMSIG_LIVING_EXTINGUISHED "living_extinguished" //from base of mob/living/ExtinguishMob() (/mob/living) + // /mob/living/carbon signals #define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity)) // /obj signals #define COMSIG_OBJ_DECONSTRUCT "obj_deconstruct" //from base of obj/deconstruct(): (disassembled) +#define COMSIG_OBJ_SETANCHORED "obj_setanchored" //called in /obj/structure/setAnchored(): (value) // /obj/item signals #define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (/mob/living/target, /mob/living/user) #define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (/mob) + #define COMPONENT_NO_INTERACT 1 #define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (/obj, /mob) #define COMPONENT_NO_ATTACK_OBJ 1 #define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" //from base of obj/item/pre_attack(): (atom/target, mob/user, params) #define COMPONENT_NO_ATTACK 1 #define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot) -#define COMSIG_ITEM_DROPPED "item_drop" +#define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (mob/user) #define COMSIG_ITEM_PICKUP "item_pickup" //from base of obj/item/pickup(): (/mob/taker) #define COMSIG_ITEM_ATTACK_ZONE "item_attack_zone" //from base of mob/living/carbon/attacked_by(): (mob/living/carbon/target, mob/living/user, hit_zone) #define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" //return a truthy value to prevent ensouling, checked in /obj/effect/proc_holder/spell/targeted/lichdom/cast(): (mob/user) @@ -109,6 +136,28 @@ // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () +// /obj/item/implant signals +#define COMSIG_IMPLANT_ACTIVATED "implant_activated" //from base of /obj/item/implant/proc/activate(): () +#define COMSIG_IMPLANT_IMPLANTING "implant_implanting" //from base of /obj/item/implant/proc/implant(): (list/args) + #define COMPONENT_STOP_IMPLANTING 1 +#define COMSIG_IMPLANT_OTHER "implant_other" //called on already installed implants when a new one is being added in /obj/item/implant/proc/implant(): (list/args, obj/item/implant/new_implant) + //#define COMPONENT_STOP_IMPLANTING 1 //The name makes sense for both + #define COMPONENT_DELETE_NEW_IMPLANT 2 + #define COMPONENT_DELETE_OLD_IMPLANT 4 +#define COMSIG_IMPLANT_EXISTING_UPLINK "implant_uplink_exists" //called on implants being implanted into someone with an uplink implant: (datum/component/uplink) + //This uses all return values of COMSIG_IMPLANT_OTHER + +// /obj/item/pda signals +#define COMSIG_PDA_CHANGE_RINGTONE "pda_change_ringtone" //called on pda when the user changes the ringtone: (mob/living/user, new_ringtone) + #define COMPONENT_STOP_RINGTONE_CHANGE 1 + +// /obj/item/radio signals +#define COMSIG_RADIO_NEW_FREQUENCY "radio_new_frequency" //called from base of /obj/item/radio/proc/set_frequency(): (list/args) + +// /obj/item/pen signals +#define COMSIG_PEN_ROTATED "pen_rotated" //called after rotation in /obj/item/pen/attack_self(): (rotation, mob/living/carbon/user) + + // /mob/living/carbon/human signals #define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target) #define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker) @@ -128,7 +177,7 @@ #define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code. //NTnet -#define COMSIG_COMPONENT_NTNET_RECIEVE "ntnet_recieve" //called on an object by its NTNET connection component on recieve. (sending_id(number), sending_netname(text), data(datum/netdata)) +#define COMSIG_COMPONENT_NTNET_RECEIVE "ntnet_receive" //called on an object by its NTNET connection component on receive. (sending_id(number), sending_netname(text), data(datum/netdata)) // /datum/component/storage signals #define COMSIG_CONTAINS_STORAGE "is_storage" //() - returns bool. diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index c5c88b18f1..0d088c903a 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -28,10 +28,6 @@ #define AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS 1 #define AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER 2 -//plastic flaps construction states -#define PLASTIC_FLAPS_NORMAL 0 -#define PLASTIC_FLAPS_DETACHED 1 - //default_unfasten_wrench() return defines #define CANT_UNFASTEN 0 #define FAILED_UNFASTEN 1 @@ -45,11 +41,6 @@ #define GLASS_CORE 4 #define AI_READY_CORE 5 -//emitter construction defines -#define EM_UNSECURED 0 -#define EM_SECURED 1 -#define EM_WELDED 2 - //Construction defines for the pinion airlock #define GEAR_SECURE 1 #define GEAR_LOOSE 2 diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 5e0669880c..3ed28c4693 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -9,32 +9,28 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 // for /datum/var/datum_flags #define DF_USE_TAG (1<<0) #define DF_VAR_EDITED (1<<1) +#define DF_ISPROCESSING (1<<2) //FLAGS BITMASK -#define NODROP_1 (1<<1) // This flag makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. -#define NOBLUDGEON_1 (1<<2) // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() #define HEAR_1 (1<<3) // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not. #define CHECK_RICOCHET_1 (1<<4) // Projectiels will check ricochet on things impacted that have this. #define CONDUCT_1 (1<<5) // conducts electricity (metal etc.) -#define ABSTRACT_1 (1<<6) // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way #define NODECONSTRUCT_1 (1<<7) // For machines and structures that should not break into parts, eg, holodeck stuff #define OVERLAY_QUEUED_1 (1<<8) // atom queued to SSoverlay #define ON_BORDER_1 (1<<9) // item has priority to check when entering or leaving -#define DROPDEL_1 (1<<10) // When dropped, it calls qdel on itself #define PREVENT_CLICK_UNDER_1 (1<<11) //Prevent clicking things below it on the same turf eg. doors/ fulltile windows -#define NO_EMP_WIRES_1 (1<<12) -#define HOLOGRAM_1 (1<<13) -#define TESLA_IGNORE_1 (1<<14) // TESLA_IGNORE grants immunity from being targeted by tesla-style electricity - +#define HOLOGRAM_1 (1<<12) +#define TESLA_IGNORE_1 (1<<13) // TESLA_IGNORE grants immunity from being targeted by tesla-style electricity +#define INITIALIZED_1 (1<<14) //Whether /atom/Initialize() has already run for the object +#define ADMIN_SPAWNED_1 (1<<15) //was this spawned by an admin? used for stat tracking stuff. //turf-only flags -#define NOJAUNT_1 (1<<0) -#define UNUSED_TRANSIT_TURF_1 (1<<1) -#define CAN_BE_DIRTY_1 (1<<2) // If a turf can be made dirty at roundstart. This is also used in areas. -#define NO_DEATHRATTLE_1 (1<<4) // Do not notify deadchat about any deaths that occur on this turf. -#define NO_RUINS_1 (1<<5) //Blocks ruins spawning on the turf -#define NO_LAVA_GEN_1 (1<<6) //Blocks lava rivers being generated on the turf +#define NOJAUNT_1 (1<<0) +#define UNUSED_RESERVATION_TURF_1 (1<<1) +#define CAN_BE_DIRTY_1 (1<<2) // If a turf can be made dirty at roundstart. This is also used in areas. +#define NO_LAVA_GEN_1 (1<<6) //Blocks lava rivers being generated on the turf +#define NO_RUINS_1 (1<<10) //Blocks ruins spawning on the turf /* These defines are used specifically with the atom/pass_flags bitmask @@ -66,3 +62,17 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define ACID_PROOF (1<<5) //acid stuck on it doesn't melt it. #define INDESTRUCTIBLE (1<<6) //doesn't take damage #define FREEZE_PROOF (1<<7) //can't be frozen + +//tesla_zap +#define TESLA_MACHINE_EXPLOSIVE (1<<0) +#define TESLA_ALLOW_DUPLICATES (1<<1) +#define TESLA_OBJ_DAMAGE (1<<2) +#define TESLA_MOB_DAMAGE (1<<3) +#define TESLA_MOB_STUN (1<<4) + +#define TESLA_DEFAULT_FLAGS ALL + +//EMP protection +#define EMP_PROTECT_SELF (1<<0) +#define EMP_PROTECT_CONTENTS (1<<1) +#define EMP_PROTECT_WIRES (1<<2) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index feb28ed3c5..1584021089 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -181,7 +181,7 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( #define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types)) -#define iseffect(O) (is_type_in_typecache(O, GLOB.typecache_effect)) +#define iseffect(O) (istype(O, /obj/effect)) #define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob)) diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm index 6d7cf12789..485cfa65c1 100644 --- a/code/__DEFINES/logging.dm +++ b/code/__DEFINES/logging.dm @@ -14,10 +14,14 @@ #define INVESTIGATE_HALLUCINATIONS "hallucinations" #define INVESTIGATE_RADIATION "radiation" #define INVESTIGATE_EXONET "exonet" +#define INVESTIGATE_CIRCUIT "circuit" //Individual logging defines #define INDIVIDUAL_ATTACK_LOG "Attack log" #define INDIVIDUAL_SAY_LOG "Say log" #define INDIVIDUAL_EMOTE_LOG "Emote log" #define INDIVIDUAL_OOC_LOG "OOC log" -#define INDIVIDUAL_SHOW_ALL_LOG "All logs" \ No newline at end of file +#define INDIVIDUAL_OWNERSHIP_LOG "Ownership log" +#define INDIVIDUAL_SHOW_ALL_LOG "All logs" +#define LOGSRC_CLIENT "Client" +#define LOGSRC_MOB "Mob" diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 1ece51d49a..1defe2bc39 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -33,7 +33,7 @@ require only minor tweaks. #define ZTRAIT_STATION "Station" #define ZTRAIT_MINING "Mining" #define ZTRAIT_REEBE "Reebe" -#define ZTRAIT_TRANSIT "Transit" +#define ZTRAIT_RESERVED "Transit/Reserved" #define ZTRAIT_AWAY "Away Mission" #define ZTRAIT_SPACE_RUINS "Space Ruins" #define ZTRAIT_LAVA_RUINS "Lava Ruins" @@ -41,6 +41,9 @@ require only minor tweaks. // number - bombcap is multiplied by this before being applied to bombs #define ZTRAIT_BOMBCAP_MULTIPLIER "Bombcap Multiplier" +// number - default gravity if there's no gravity generators or area overrides present +#define ZTRAIT_GRAVITY "Gravity" + // numeric offsets - e.g. {"Down": -1} means that chasms will fall to z - 1 rather than oblivion #define ZTRAIT_UP "Up" #define ZTRAIT_DOWN "Down" @@ -55,7 +58,7 @@ require only minor tweaks. #define CROSSLINKED "Cross" // default trait definitions, used by SSmapping -#define ZTRAITS_CENTCOM list(ZTRAIT_LINKAGE = SELFLOOPING, ZTRAIT_CENTCOM = TRUE) +#define ZTRAITS_CENTCOM list(ZTRAIT_CENTCOM = TRUE) #define ZTRAITS_STATION list(ZTRAIT_LINKAGE = CROSSLINKED, ZTRAIT_STATION = TRUE) #define ZTRAITS_SPACE list(ZTRAIT_LINKAGE = CROSSLINKED, ZTRAIT_SPACE_RUINS = TRUE) #define ZTRAITS_LAVALAND list(ZTRAIT_MINING = TRUE, ZTRAIT_LAVA_RUINS = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 2) @@ -76,6 +79,8 @@ require only minor tweaks. #define CAMERA_LOCK_CENTCOM 4 #define CAMERA_LOCK_REEBE 8 +//Reserved/Transit turf type +#define RESERVED_TURF_TYPE /turf/open/space/basic //What the turf is when not being used //Ruin Generation diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 391d55fe59..f1b62745ed 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -86,6 +86,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s //Because I *KNOW* somebody will think layer+1 means "above" //IT DOESN'T OK, IT MEANS "UNDER" #define UNDER_SUIT_LAYER (SUIT_LAYER+1) +#define UNDER_HEAD_LAYER (HEAD_LAYER+1) //AND -1 MEANS "ABOVE", OK?, OK!?! #define ABOVE_SHOES_LAYER (SHOES_LAYER-1) @@ -254,6 +255,8 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define ORBITRON "Orbitron" #define SHARE "Share Tech Mono" +GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE)) + //Color Defines #define OOC_COLOR "#002eb8" @@ -403,8 +406,6 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define MAX_PROC_DEPTH 195 // 200 proc calls deep and shit breaks, this is a bit lower to give some safety room -#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation" - #define SYRINGE_DRAW 0 #define SYRINGE_INJECT 1 @@ -430,6 +431,7 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define ION_FILE "ion_laws.json" #define PIRATE_NAMES_FILE "pirates.json" + //Fullscreen overlay resolution in tiles. #define FULLSCREEN_OVERLAY_RESOLUTION_X 15 #define FULLSCREEN_OVERLAY_RESOLUTION_Y 15 @@ -448,5 +450,10 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE // Used by PDA and cartridge code to reduce repetitiveness of spritesheets #define PDAIMG(what) {""} + //Filters #define AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-2, size=4, border=4, color="#04080FAA") + + +#define STANDARD_GRAVITY 1 //Anything above this is high gravity, anything below no grav +#define GRAVITY_DAMAGE_TRESHOLD 3 //Starting with this value gravity will start to damage mobs \ No newline at end of file diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 64a4089543..34c7efab35 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -244,7 +244,7 @@ #define OFFSET_NECK "neck" //MINOR TWEAKS/MISC -#define AGE_MIN 17 //youngest a character can be +#define AGE_MIN 18 //youngest a character can be //CITADEL EDIT - 17 --> 18 #define AGE_MAX 85 //oldest a character can be #define WIZARD_AGE_MIN 30 //youngest a wizard can be #define APPRENTICE_AGE_MIN 29 //youngest an apprentice can be diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index f8287cf34e..76f66521a7 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -21,6 +21,10 @@ #define NEEDS_PERMIT (1<<3) //Used by security bots to determine if this item is safe for public use. #define SLOWS_WHILE_IN_HAND (1<<4) #define NO_MAT_REDEMPTION (1<<5) // Stops you from putting things like an RCD or other items into an ORM or protolathe for materials. +#define DROPDEL (1<<6) // When dropped, it calls qdel on itself +#define NOBLUDGEON (1<<7) // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() +#define NODROP (1<<8) // This flag makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. +#define ABSTRACT (1<<9) // for all things that are technically items but used for various different stuff // Flags for the clothing_flags var on /obj/item/clothing diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 0dc8a38899..02f151dcd9 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -68,3 +68,5 @@ //Flags in the players table in the db #define DB_FLAG_EXEMPT 1 + +#define DEFAULT_CYBORG_NAME "Default Cyborg Name" \ No newline at end of file diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index 6fca8786f5..f8f59a367f 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -2,7 +2,6 @@ #define LIQUID 2 #define GAS 3 - // container_type defines #define INJECTABLE (1<<0) // Makes it possible to add reagents through droppers and syringes. #define DRAWABLE (1<<1) // Makes it possible to remove reagents through syringes. diff --git a/code/__DEFINES/reagents_specific_heat.dm b/code/__DEFINES/reagents_specific_heat.dm new file mode 100644 index 0000000000..90a379d7de --- /dev/null +++ b/code/__DEFINES/reagents_specific_heat.dm @@ -0,0 +1,3 @@ +#define SPECIFIC_HEAT_DEFAULT 200 + +#define SPECIFIC_HEAT_PLASMA 500 diff --git a/code/__DEFINES/research.dm b/code/__DEFINES/research.dm index bafce49947..16776ed8e2 100644 --- a/code/__DEFINES/research.dm +++ b/code/__DEFINES/research.dm @@ -29,7 +29,7 @@ #define RDSCREEN_TEXT_NO_PROTOLATHE "

No Protolathe Linked!


" #define RDSCREEN_TEXT_NO_IMPRINTER "

No Circuit Imprinter Linked!


" -#define RDSCREEN_TEXT_NO_DECONSTRUCT "

No Deconstructive Analyzer Linked!


" +#define RDSCREEN_TEXT_NO_DECONSTRUCT "

No Destructive Analyzer Linked!


" #define RDSCREEN_TEXT_NO_TDISK "

No Technology Disk Inserted!


" #define RDSCREEN_TEXT_NO_DDISK "

No Design Disk Inserted!


" #define RDSCREEN_TEXT_NO_SNODE "

No Technology Node Selected!


" diff --git a/code/__DEFINES/rust_g.dm b/code/__DEFINES/rust_g.dm new file mode 100644 index 0000000000..a905fd5186 --- /dev/null +++ b/code/__DEFINES/rust_g.dm @@ -0,0 +1,7 @@ +// rust_g.dm - DM API for rust_g extension library +#define RUST_G "rust_g" + +#define rustg_dmi_strip_metadata(fname) call(RUST_G, "dmi_strip_metadata")(fname) + +#define rustg_log_write(fname, text) call(RUST_G, "log_write")(fname, text) +/proc/rustg_log_close_all() return call(RUST_G, "log_close_all")() diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index b1c31b4bea..ffaaa04d0f 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -80,9 +80,11 @@ #define STATUS_EFFECT_SYPHONMARK /datum/status_effect/syphon_mark //tracks kills for the KA death syphon module +#define STATUS_EFFECT_INLOVE /datum/status_effect/in_love //Displays you as being in love with someone else, and makes hearts appear around them. + ///////////// // SLIME // ///////////// #define STATUS_EFFECT_RAINBOWPROTECTION /datum/status_effect/rainbow_protection //Invulnerable and pacifistic -#define STATUS_EFFECT_SLIMESKIN /datum/status_effect/slimeskin //Increased armor \ No newline at end of file +#define STATUS_EFFECT_SLIMESKIN /datum/status_effect/slimeskin //Increased armor diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index f1e0e0d92f..48b3260dd7 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -38,7 +38,7 @@ //type and all subtypes should always call Initialize in New() #define INITIALIZE_IMMEDIATE(X) ##X/New(loc, ...){\ ..();\ - if(!initialized) {\ + if(!(flags_1 & INITIALIZED_1)) {\ args[1] = TRUE;\ SSatoms.InitAtom(src, args);\ }\ @@ -124,21 +124,19 @@ #define COMPILE_OVERLAYS(A)\ if (TRUE) {\ - var/list/oo = A.our_overlays;\ + var/list/ad = A.add_overlays;\ + var/list/rm = A.remove_overlays;\ var/list/po = A.priority_overlays;\ + if(LAZYLEN(rm)){\ + A.overlays -= rm;\ + rm.Cut();\ + }\ + if(LAZYLEN(ad)){\ + A.overlays |= ad;\ + ad.Cut();\ + }\ if(LAZYLEN(po)){\ - if(LAZYLEN(oo)){\ - A.overlays = oo + po;\ - }\ - else{\ - A.overlays = po;\ - }\ - }\ - else if(LAZYLEN(oo)){\ - A.overlays = oo;\ - }\ - else{\ - A.overlays.Cut();\ + A.overlays |= po;\ }\ A.flags_1 &= ~OVERLAY_QUEUED_1;\ } diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 8014e04ad0..378d30ba52 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -40,11 +40,14 @@ #define TRAIT_NOBREATH "no_breath" #define TRAIT_ANTIMAGIC "anti_magic" #define TRAIT_HOLY "holy" -#define TRAIT_DEPRESSION "depression" +#define TRAIT_DEPRESSION "depression" #define TRAIT_JOLLY "jolly" #define TRAIT_NOCRITDAMAGE "no_crit" #define TRAIT_NOSLIPWATER "noslip_water" #define TRAIT_NOSLIPALL "noslip_all" +#define TRAIT_NODEATH "nodeath" +#define TRAIT_NOHARDCRIT "nohardcrit" +#define TRAIT_NOSOFTCRIT "nosoftcrit" #define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance" diff --git a/code/__DEFINES/turf_flags.dm b/code/__DEFINES/turf_flags.dm index f71335e1f0..5ceb6f2e2e 100644 --- a/code/__DEFINES/turf_flags.dm +++ b/code/__DEFINES/turf_flags.dm @@ -1,4 +1,5 @@ #define CHANGETURF_DEFER_CHANGE 1 -#define CHANGETURF_IGNORE_AIR 2 +#define CHANGETURF_IGNORE_AIR 2 // This flag prevents changeturf from gathering air from nearby turfs to fill the new turf with an approximation of local air #define CHANGETURF_FORCEOP 4 -#define CHANGETURF_SKIP 8 // A flag for PlaceOnTop to just instance the new turf instead of calling ChangeTurf. Used for uninitialized turfs NOTHING ELSE \ No newline at end of file +#define CHANGETURF_SKIP 8 // A flag for PlaceOnTop to just instance the new turf instead of calling ChangeTurf. Used for uninitialized turfs NOTHING ELSE +#define CHANGETURF_INHERIT_AIR 16 // Inherit air from previous turf. Implies CHANGETURF_IGNORE_AIR diff --git a/code/__DEFINES/wires.dm b/code/__DEFINES/wires.dm index 35fa37257b..960d0479be 100644 --- a/code/__DEFINES/wires.dm +++ b/code/__DEFINES/wires.dm @@ -34,7 +34,7 @@ #define WIRE_POWER1 "Main Power 1" #define WIRE_POWER2 "Main Power 2" #define WIRE_PROCEED "Proceed" -#define WIRE_RX "Recieve" +#define WIRE_RX "Receive" #define WIRE_RESET_MODULE "Reset Module" #define WIRE_SAFETY "Safety" #define WIRE_SHOCK "High Voltage Ground" diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index a8bddf8eed..54dd2a982c 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -73,14 +73,7 @@ return FALSE //Checks for specific types in specifically structured (Assoc "type" = TRUE) lists ('typecaches') -/proc/is_type_in_typecache(atom/A, list/L) - if(!LAZYLEN(L) || !A) - - return FALSE - if(ispath(A)) - . = L[A] - else - . = L[A.type] +#define is_type_in_typecache(A, L) (A && length(L) && L[(ispath(A) ? A : A:type)]) //Checks for a string in a list /proc/is_string_in_list(string, list/L) @@ -495,6 +488,11 @@ for(var/key in key_list) . |= key_list[key] +/proc/make_associative(list/flat_list) + . = list() + for(var/thing in flat_list) + .[thing] = TRUE + //Picks from the list, with some safeties, and returns the "default" arg if it fails #define DEFAULTPICK(L, default) ((islist(L) && length(L)) ? pick(L) : default) diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 48e2baac6e..92f7b21bb7 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -1,13 +1,10 @@ -//location of the rust-g library -#define RUST_G "rust_g" - //wrapper macros for easier grepping #define DIRECT_OUTPUT(A, B) A << B #define SEND_IMAGE(target, image) DIRECT_OUTPUT(target, image) #define SEND_SOUND(target, sound) DIRECT_OUTPUT(target, sound) #define SEND_TEXT(target, text) DIRECT_OUTPUT(target, text) #define WRITE_FILE(file, text) DIRECT_OUTPUT(file, text) -#define WRITE_LOG(log, text) call(RUST_G, "log_write")(log, text) +#define WRITE_LOG(log, text) rustg_log_write(log, text) //print a warning message to world.log #define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [src] usr: [usr].") @@ -131,6 +128,10 @@ /proc/log_query_debug(text) WRITE_LOG(GLOB.query_debug_log, "SQL: [text]") +/proc/log_job_debug(text) + if (CONFIG_GET(flag/log_job_debug)) + WRITE_LOG(GLOB.world_job_debug_log, "JOB: [text]") + /* Log to both DD and the logfile. */ /proc/log_world(text) WRITE_LOG(GLOB.world_runtime_log, text) @@ -152,7 +153,7 @@ /* Close open log handles. This should be called as late as possible, and no logging should hapen after. */ /proc/shutdown_logging() - call(RUST_G, "log_close_all")() + rustg_log_close_all() /* Helper procs for building detailed log lines */ @@ -172,6 +173,3 @@ return "[A.loc] [COORD(T)] ([A.loc.type])" else if(A.loc) return "[A.loc] (0, 0, 0) ([A.loc.type])" - -//this is only used here (for now) -#undef RUST_G diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index 51dd88710a..3e9a26b261 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -15,7 +15,7 @@ var/turf/sourceT = found_turfs[1] if(break_if_found[sourceT.type]) return FALSE - if (is_type_in_typecache(sourceT.loc, GLOB.typecache_shuttle_area)) + if (istype(sourceT.loc, /area/shuttle)) return FALSE found_turfs.Cut(1, 2) var/dir_flags = checked_turfs[sourceT] @@ -50,7 +50,7 @@ var/list/areas = list("New Area" = /area) for(var/i in 1 to turfs.len) var/area/place = get_area(turfs[i]) - if(blacklisted_areas[place.type] || GLOB.typecache_shuttle_area[place.type]) + if(blacklisted_areas[place.type] || istype(place, /area/shuttle)) continue if(!place.requires_power || place.noteleport || place.hidden) continue // No expanding powerless rooms etc diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index e75e1ed88a..13f415823c 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -433,7 +433,7 @@ if(!gametypeCheck.age_check(M.client)) continue if(jobbanType) - if(jobban_isbanned(M, jobbanType) || jobban_isbanned(M, ROLE_SYNDICATE)) + if(jobban_isbanned(M, jobbanType) || QDELETED(M) || jobban_isbanned(M, ROLE_SYNDICATE) || QDELETED(M)) continue showCandidatePollWindow(M, poll_time, Question, result, ignore_category, time_passed, flashwindow) diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm index 5d34df3ec5..7e52fbe273 100644 --- a/code/__HELPERS/icon_smoothing.dm +++ b/code/__HELPERS/icon_smoothing.dm @@ -117,7 +117,7 @@ return if(QDELETED(A)) return - if((A.smooth & SMOOTH_TRUE) || (A.smooth & SMOOTH_MORE)) + if(A.smooth & (SMOOTH_TRUE | SMOOTH_MORE)) var/adjacencies = calculate_adjacencies(A) if(A.smooth & SMOOTH_DIAGONAL) @@ -156,7 +156,7 @@ /turf/closed/wall/diagonal_smooth(adjacencies) adjacencies = reverse_ndir(..()) if(adjacencies) - var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER) + var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER, plane = FLOOR_PLANE) var/list/U = list(underlay_appearance) if(fixed_underlay) if(fixed_underlay["space"]) diff --git a/code/__HELPERS/level_traits.dm b/code/__HELPERS/level_traits.dm index 4d20c9b513..b73a0aa83d 100644 --- a/code/__HELPERS/level_traits.dm +++ b/code/__HELPERS/level_traits.dm @@ -9,7 +9,7 @@ #define is_reebe(z) SSmapping.level_trait(z, ZTRAIT_REEBE) -#define is_transit_level(z) SSmapping.level_trait(z, ZTRAIT_TRANSIT) +#define is_reserved_level(z) SSmapping.level_trait(z, ZTRAIT_RESERVED) #define is_away_level(z) SSmapping.level_trait(z, ZTRAIT_AWAY) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index e1548b92ea..1fefb27497 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -278,8 +278,8 @@ Proc for attack log creation, because really why not /proc/add_logs(mob/user, mob/target, what_done, object=null, addition=null) var/turf/attack_location = get_turf(target) - var/is_mob_user = user && GLOB.typecache_mob[user.type] - var/is_mob_target = target && GLOB.typecache_mob[target.type] + var/is_mob_user = user && ismob(user) + var/is_mob_target = target && ismob(target) var/mob/living/living_target @@ -505,7 +505,8 @@ Proc for attack log creation, because really why not for(var/j in 1 to amount) var/atom/X = new spawn_type(arglist(new_args)) - X.admin_spawned = admin_spawn + if (admin_spawn) + X.flags_1 |= ADMIN_SPAWNED_1 /proc/spawn_and_random_walk(spawn_type, target, amount, walk_chance=100, max_walk=3, always_max_walk=FALSE, admin_spawn=FALSE) var/turf/T = get_turf(target) @@ -515,7 +516,8 @@ Proc for attack log creation, because really why not for(var/j in 1 to amount) var/atom/movable/X = new spawn_type(T) - X.admin_spawned = admin_spawn + if (admin_spawn) + X.flags_1 |= ADMIN_SPAWNED_1 if(always_max_walk || prob(walk_chance)) if(always_max_walk) @@ -527,6 +529,7 @@ Proc for attack log creation, because really why not step(X, pick(NORTH, SOUTH, EAST, WEST)) /proc/deadchat_broadcast(message, mob/follow_target=null, turf/turf_target=null, speaker_key=null, message_type=DEADCHAT_REGULAR) + message = "[message]" for(var/mob/M in GLOB.player_list) var/datum/preferences/prefs if(M.client && M.client.prefs) diff --git a/code/__HELPERS/priority_announce.dm b/code/__HELPERS/priority_announce.dm index 9b6b601e69..bbaf7b275d 100644 --- a/code/__HELPERS/priority_announce.dm +++ b/code/__HELPERS/priority_announce.dm @@ -55,7 +55,7 @@ for(var/mob/M in GLOB.player_list) if(!isnewplayer(M) && M.can_hear()) - to_chat(M, "[title]
[message]

") + to_chat(M, "[html_encode(title)]
[html_encode(message)]

") if(M.client.prefs.toggles & SOUND_ANNOUNCEMENTS) if(alert) SEND_SOUND(M, sound('sound/misc/notice1.ogg')) diff --git a/code/__HELPERS/radiation.dm b/code/__HELPERS/radiation.dm index 8418cc8505..93dcdb4b0e 100644 --- a/code/__HELPERS/radiation.dm +++ b/code/__HELPERS/radiation.dm @@ -42,5 +42,6 @@ last_huge_pulse = world.time log = TRUE if(log) - log_game("Radiation pulse with intensity:[intensity] and range modifier:[range_modifier] in area [get_area(source)] ") + var/turf/_source_T = isturf(source) ? source : get_turf(source) + log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [AREACOORD(_source_T)] ") return TRUE \ No newline at end of file diff --git a/code/__HELPERS/radio.dm b/code/__HELPERS/radio.dm index 39fe55c67c..84b354b6cd 100644 --- a/code/__HELPERS/radio.dm +++ b/code/__HELPERS/radio.dm @@ -1,4 +1,4 @@ -// Ensure the frequency is within bounds of what it should be sending/recieving at +// Ensure the frequency is within bounds of what it should be sending/receiving at /proc/sanitize_frequency(frequency, free = FALSE) . = round(frequency) if(free) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 13fcc94b4b..e86c57ac24 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -203,21 +203,20 @@ //Print a list of antagonists to the server log var/list/total_antagonists = list() //Look into all mobs in world, dead or alive - for(var/datum/mind/Mind in minds) - var/temprole = Mind.special_role - if(temprole) //if they are an antagonist of some sort. - if(temprole in total_antagonists) //If the role exists already, add the name to it - total_antagonists[temprole] += ", [Mind.name]([Mind.key])" - else - total_antagonists.Add(temprole) //If the role doesnt exist in the list, create it and add the mob - total_antagonists[temprole] += ": [Mind.name]([Mind.key])" + for(var/datum/antagonist/A in GLOB.antagonists) + if(!A.owner) + continue + if(!(A.name in total_antagonists)) + total_antagonists[A.name] = list() + total_antagonists[A.name] += "[key_name(A.owner)]" CHECK_TICK //Now print them all into the log! log_game("Antagonists at round end were...") - for(var/i in total_antagonists) - log_game("[i]s[total_antagonists[i]].") + for(var/antag_name in total_antagonists) + var/list/L = total_antagonists[antag_name] + log_game("[antag_name]s :[L.Join(", ")].") CHECK_TICK SSdbcore.SetRoundEnd() @@ -525,6 +524,8 @@ return var/datum/DBQuery/query_admin_rank_update = SSdbcore.NewQuery("UPDATE [format_table_name("player")] p INNER JOIN [format_table_name("admin")] a ON p.ckey = a.ckey SET p.lastadminrank = a.rank") query_admin_rank_update.Execute() + qdel(query_admin_rank_update) + //json format backup file generation stored per server var/json_file = file("data/admins_backup.json") var/list/file_data = list("ranks" = list(), "admins" = list()) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index a550206ff6..3ffb583332 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -64,7 +64,7 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) //Takes a value of time in deciseconds. //Returns a text value of that number in hours, minutes, or seconds. /proc/DisplayTimeText(time_value, truncate = FALSE) - var/second = time_value*0.1 + var/second = (time_value)*0.1 var/second_adjusted = null var/second_rounded = FALSE var/minute = null @@ -144,7 +144,7 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) else if(day && (!minute || !second)) hour = " and 1 hour" else - hour = "[truncate ? "hour" : "1 hour"]" + hour = "[truncate ? "hour" : "1 hour"]" else hour = null diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 1f788cf445..b474915e10 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -218,21 +218,6 @@ . = "NONE" return . -/proc/ui_style2icon(ui_style) - switch(ui_style) - if("Retro") - return 'icons/mob/screen_retro.dmi' - if("Plasmafire") - return 'icons/mob/screen_plasmafire.dmi' - if("Slimecore") - return 'icons/mob/screen_slimecore.dmi' - if("Operative") - return 'icons/mob/screen_operative.dmi' - if("Clockwork") - return 'icons/mob/screen_clockwork.dmi' - else - return 'icons/mob/screen_midnight.dmi' - //colour formats /proc/rgb2hsl(red, green, blue) red /= 255;green /= 255;blue /= 255; diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 1dd64ea4af..273e1cf1b7 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -186,7 +186,7 @@ Turf and target are separate in case you want to teleport some distance from a t return 1 //Generalised helper proc for letting mobs rename themselves. Used to be clname() and ainame() -/mob/proc/rename_self(role, client/C) +/mob/proc/apply_pref_name(role, client/C) if(!C) C = client var/oldname = real_name @@ -194,8 +194,10 @@ Turf and target are separate in case you want to teleport some distance from a t var/loop = 1 var/safety = 0 + var/banned = jobban_isbanned(src, "appearance") + while(loop && safety < 5) - if(C && C.prefs.custom_names[role] && !safety) + if(C && C.prefs.custom_names[role] && !safety && !banned) newname = C.prefs.custom_names[role] else switch(role) @@ -207,10 +209,8 @@ Turf and target are separate in case you want to teleport some distance from a t newname = pick(GLOB.mime_names) if("ai") newname = pick(GLOB.ai_names) - if("deity") - newname = pick(GLOB.clown_names|GLOB.ai_names|GLOB.mime_names) //pick any old name else - return + return FALSE for(var/mob/living/M in GLOB.player_list) if(M == src) @@ -224,6 +224,8 @@ Turf and target are separate in case you want to teleport some distance from a t if(newname) fully_replace_character_name(oldname,newname) + return TRUE + return FALSE //Picks a string of symbols to display as the law number for hacked or ion laws @@ -375,6 +377,7 @@ Turf and target are separate in case you want to teleport some distance from a t var/client/C var/key var/ckey + var/fallback_name if(!whom) return "*null*" @@ -394,6 +397,16 @@ Turf and target are separate in case you want to teleport some distance from a t C = GLOB.directory[ckey] if(C) M = C.mob + else if(istype(whom,/datum/mind)) + var/datum/mind/mind = whom + key = mind.key + ckey = ckey(key) + if(mind.current) + M = mind.current + if(M.client) + C = M.client + else + fallback_name = mind.name else return "*invalid*" @@ -419,11 +432,14 @@ Turf and target are separate in case you want to teleport some distance from a t else . += "*no key*" - if(include_name && M) - if(M.real_name) - . += "/([M.real_name])" - else if(M.name) - . += "/([M.name])" + if(include_name) + if(M) + if(M.real_name) + . += "/([M.real_name])" + else if(M.name) + . += "/([M.name])" + else if(fallback_name) + . += "/([fallback_name])" return . @@ -885,7 +901,7 @@ GLOBAL_LIST_INIT(WALLITEMS_INVERSE, typecacheof(list( /proc/check_target_facings(mob/living/initator, mob/living/target) /*This can be used to add additional effects on interactions between mobs depending on how the mobs are facing each other, such as adding a crit damage to blows to the back of a guy's head. Given how click code currently works (Nov '13), the initiating mob will be facing the target mob most of the time - That said, this proc should not be used if the change facing proc of the click code is overriden at the same time*/ + That said, this proc should not be used if the change facing proc of the click code is overridden at the same time*/ if(!ismob(target) || target.lying) //Make sure we are not doing this for things that can't have a logical direction to the players given that the target would be on their side return FALSE @@ -1271,10 +1287,7 @@ GLOBAL_REAL_VAR(list/stack_trace_storage) if(!istype(C)) return - var/animate_color = initial(C.color) - var/datum/client_colour/CC = C.mob.client_colours[1] - if(CC) - animate_color = CC.colour + var/animate_color = C.color C.color = flash_color animate(C, color = animate_color, time = flash_time) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index bd95c8550f..2ad35a6b1b 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -35,7 +35,8 @@ GLOBAL_LIST_INIT(bitfields, list( ), "datum_flags" = list( "DF_USE_TAG" = DF_USE_TAG, - "DF_VAR_EDITED" = DF_VAR_EDITED + "DF_VAR_EDITED" = DF_VAR_EDITED, + "DF_ISPROCESSING" = DF_ISPROCESSING, ), "item_flags" = list( "BEING_REMOVED" = BEING_REMOVED, @@ -44,6 +45,10 @@ GLOBAL_LIST_INIT(bitfields, list( "NEEDS_PERMIT" = NEEDS_PERMIT, "SLOWS_WHILE_IN_HAND" = SLOWS_WHILE_IN_HAND, "NO_MAT_REDEMPTION" = NO_MAT_REDEMPTION, + "DROPDEL" = DROPDEL, + "NOBLUDGEON" = NOBLUDGEON, + "NODROP" = NODROP, + "ABSTRACT" = ABSTRACT, ), "admin_flags" = list( "BUILDMODE" = R_BUILDMODE, @@ -110,16 +115,21 @@ GLOBAL_LIST_INIT(bitfields, list( ), "flags_1" = list( "NOJAUNT_1" = NOJAUNT_1, - "NODROP_1 / UNUSED_TRANSIT_TURF_1 (turfs)" = NODROP_1, - "NOBLUDGEON_1 / CAN_BE_DIRTY_1 (turfs)" = NOBLUDGEON_1, - "HEAR_1 / NO_DEATHRATTLE_1 (turfs)" = HEAR_1, - "CHECK_RICOCHET_1 / NO_RUINS_1 (turfs)" = CHECK_RICOCHET_1, - "CONDUCT_1 / NO_LAVA_GEN_1" = CONDUCT_1, - "ABSTRACT_1" = ABSTRACT_1, + "UNUSED_RESERVATION_TURF_1" = UNUSED_RESERVATION_TURF_1, + "CAN_BE_DIRTY_1" = CAN_BE_DIRTY_1, + "HEAR_1" = HEAR_1, + "CHECK_RICOCHET_1" = CHECK_RICOCHET_1, + "CONDUCT_1" = CONDUCT_1, + "NO_LAVA_GEN_1" = NO_LAVA_GEN_1, "NODECONSTRUCT_1" = NODECONSTRUCT_1, "OVERLAY_QUEUED_1" = OVERLAY_QUEUED_1, + "ON_BORDER_1" = ON_BORDER_1, + "NO_RUINS_1" = NO_RUINS_1, + "PREVENT_CLICK_UNDER_1" = PREVENT_CLICK_UNDER_1, "HOLOGRAM_1" = HOLOGRAM_1, - "TESLA_IGNORE_1" = TESLA_IGNORE_1 + "TESLA_IGNORE_1" = TESLA_IGNORE_1, + "INITIALIZED_1" = INITIALIZED_1, + "ADMIN_SPAWNED_1" = ADMIN_SPAWNED_1, ), "clothing_flags" = list( "LAVAPROTECT" = LAVAPROTECT, @@ -128,5 +138,27 @@ GLOBAL_LIST_INIT(bitfields, list( "MASKINTERNALS" = MASKINTERNALS, "NOSLIP" = NOSLIP, "THICKMATERIAL" = THICKMATERIAL, - ) + ), + "tesla_flags" = list( + "TESLA_MOB_DAMAGE" = TESLA_MOB_DAMAGE, + "TESLA_OBJ_DAMAGE" = TESLA_OBJ_DAMAGE, + "TESLA_MOB_STUN" = TESLA_MOB_STUN, + "TESLA_ALLOW_DUPLICATES" = TESLA_ALLOW_DUPLICATES, + "TESLA_MACHINE_EXPLOSIVE" = TESLA_MACHINE_EXPLOSIVE, + ), + "smooth" = list( + "SMOOTH_TRUE" = SMOOTH_TRUE, + "SMOOTH_MORE" = SMOOTH_MORE, + "SMOOTH_DIAGONAL" = SMOOTH_DIAGONAL, + "SMOOTH_BORDER" = SMOOTH_BORDER, + "SMOOTH_QUEUED" = SMOOTH_QUEUED, + ), + "container_type" = list( + "INJECTABLE" = INJECTABLE, + "DRAWABLE" = DRAWABLE, + "REFILLABLE" = REFILLABLE, + "DRAINABLE" = DRAINABLE, + "TRANSPARENT" = TRANSPARENT, + "AMOUNT_VISIBLE" = AMOUNT_VISIBLE, + ), )) diff --git a/code/_globalvars/game_modes.dm b/code/_globalvars/game_modes.dm index 3822f7077d..f6022cdd59 100644 --- a/code/_globalvars/game_modes.dm +++ b/code/_globalvars/game_modes.dm @@ -1,7 +1,7 @@ GLOBAL_VAR_INIT(master_mode, "traitor") //"extended" GLOBAL_VAR_INIT(secret_force_mode, "secret") // if this is anything but "secret", the secret rotation will forceably choose this mode -GLOBAL_VAR(common_report) //Contains commmon part of roundend report -GLOBAL_VAR(survivor_report) //Contains shared surivor report for roundend report (part of personal report) +GLOBAL_VAR(common_report) //Contains common part of roundend report +GLOBAL_VAR(survivor_report) //Contains shared survivor report for roundend report (part of personal report) GLOBAL_VAR_INIT(wavesecret, 0) // meteor mode, delays wave progression, terrible name diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index 215f664b44..2602372fbf 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -30,6 +30,7 @@ GLOBAL_LIST_EMPTY(ruin_landmarks) //away missions GLOBAL_LIST_EMPTY(awaydestinations) //a list of landmarks that the warpgate can take you to +GLOBAL_LIST_EMPTY(vr_spawnpoints) //used by jump-to-area etc. Updated by area/updateName() GLOBAL_LIST_EMPTY(sortedAreas) diff --git a/code/_globalvars/lists/typecache.dm b/code/_globalvars/lists/typecache.dm index ee4635f910..bfadbc9104 100644 --- a/code/_globalvars/lists/typecache.dm +++ b/code/_globalvars/lists/typecache.dm @@ -5,12 +5,4 @@ GLOBAL_LIST_INIT(typecache_mob, typecacheof(/mob)) -GLOBAL_LIST_INIT(typecache_living, typecacheof(/mob/living)) - GLOBAL_LIST_INIT(typecache_machine_or_structure, typecacheof(list(/obj/machinery, /obj/structure))) - -GLOBAL_LIST_INIT(typecache_shuttle_area, typecacheof(/area/shuttle)) - -GLOBAL_LIST_INIT(typecache_clothing, typecacheof(/obj/item/clothing)) - -GLOBAL_LIST_INIT(typecache_effect, typecacheof(/obj/effect)) diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index 545ffbcbef..2951ddf165 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -22,6 +22,8 @@ GLOBAL_VAR(world_manifest_log) GLOBAL_PROTECT(world_manifest_log) GLOBAL_VAR(query_debug_log) GLOBAL_PROTECT(query_debug_log) +GLOBAL_VAR(world_job_debug_log) +GLOBAL_PROTECT(world_job_debug_log) GLOBAL_LIST_EMPTY(bombers) GLOBAL_PROTECT(bombers) @@ -41,6 +43,4 @@ GLOBAL_PROTECT(OOClog) GLOBAL_LIST_EMPTY(adminlog) GLOBAL_PROTECT(adminlog) -GLOBAL_LIST_EMPTY(individual_log_list) // Logs each mob individual logs, a global so it doesn't get lost on cloning/changing mobs - GLOBAL_LIST_EMPTY(active_turfs_startlist) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 2415c1fea3..fa0ecf117d 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -10,7 +10,7 @@ GLOBAL_VAR_INIT(TAB, "    ") GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) -GLOBAL_VAR_INIT(CELLRATE, 0.002) // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) +GLOBAL_VAR_INIT(CELLRATE, 0.002) // conversion ratio between a watt-tick and kilojoule GLOBAL_VAR_INIT(CHARGELEVEL, 0.001) // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second) GLOBAL_LIST_EMPTY(powernets) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 9ef689de8b..59598b9d7f 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -26,6 +26,14 @@ return next_click = world.time + 1 + if(multicam_on) + var/turf/T = get_turf(A) + if(T) + for(var/obj/screen/movable/pic_in_pic/ai/P in T.vis_locs) + if(P.ai == src) + P.Click(params) + break + if(check_click_intercept(params,A)) return @@ -38,8 +46,8 @@ if(!can_see(A)) if(isturf(A)) //On unmodified clients clicking the static overlay clicks the turf underneath return //So there's no point messaging admins - message_admins("[key_name_admin(src)] might be running a modified client! (failed can_see on AI click of [A]([ADMIN_COORDJMP(pixel_turf)]))") - var/message = "[key_name(src)] might be running a modified client! (failed can_see on AI click of [A]([COORD(pixel_turf)]))" + message_admins("[ADMIN_LOOKUPFLW(src)] might be running a modified client! (failed can_see on AI click of [A] (Turf Loc: [ADMIN_VERBOSEJMP(pixel_turf)]))") + var/message = "[key_name(src)] might be running a modified client! (failed can_see on AI click of [A] (Turf Loc: [AREACOORD(pixel_turf)]))" log_admin(message) if(REALTIMEOFDAY >= chnotify + 9000) chnotify = REALTIMEOFDAY diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 6a3778b451..f98de83c23 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -39,16 +39,16 @@ Note that this proc can be overridden, and is in the case of screen objects. */ /atom/Click(location,control,params) - if(initialized) - SendSignal(COMSIG_CLICK, location, control, params) + if(flags_1 & INITIALIZED_1) + SEND_SIGNAL(src, COMSIG_CLICK, location, control, params) usr.ClickOn(src, params) /atom/DblClick(location,control,params) - if(initialized) + if(flags_1 & INITIALIZED_1) usr.DblClickOn(src,params) /atom/MouseWheel(delta_x,delta_y,location,control,params) - if(initialized) + if(flags_1 & INITIALIZED_1) usr.MouseWheelOn(src, delta_x, delta_y, params) /* @@ -57,7 +57,7 @@ After that, mostly just check your state, check whether you're holding an item, check whether you're adjacent to the target, then pass off the click to whoever - is recieving it. + is receiving it. The most common are: * mob/UnarmedAttack(atom,adjacent) - used here only when adjacent, with no item in hand; in the case of humans, checks gloves * atom/attackby(item,user) - used only when adjacent @@ -129,7 +129,7 @@ //These are always reachable. //User itself, current loc, and user inventory - if(DirectAccess(A)) + if(A in DirectAccess()) if(W) W.melee_attack_chain(src, A, params) else @@ -174,40 +174,52 @@ return TRUE return FALSE -/atom/movable/proc/CanReach(atom/target,obj/item/tool,view_only = FALSE) - if(isturf(target) || isturf(target.loc) || DirectAccess(target)) //Directly accessible atoms - if(Adjacent(target) || (tool && CheckToolReach(src, target, tool.reach))) //Adjacent or reaching attacks - return TRUE - else - //Things inside storage insde another storage - //Eg Contents of a box in a backpack - var/atom/outer_storage = get_atom_on_turf(target) - if(outer_storage == target) //whatever that is we don't want infinite loop. - return FALSE - if(outer_storage && CanReach(outer_storage,tool) && outer_storage.CanReachStorage(target,src,view_only ? STORAGE_VIEW_DEPTH : INVENTORY_DEPTH)) - return TRUE +/atom/movable/proc/CanReach(atom/ultimate_target, obj/item/tool, view_only = FALSE) + // A backwards depth-limited breadth-first-search to see if the target is + // logically "in" anything adjacent to us. + var/list/direct_access = DirectAccess() + var/depth = 1 + (view_only ? STORAGE_VIEW_DEPTH : INVENTORY_DEPTH) + + var/list/closed = list() + var/list/checking = list(ultimate_target) + while (checking.len && depth > 0) + var/list/next = list() + --depth + + for(var/atom/target in checking) // will filter out nulls + if(closed[target] || isarea(target)) // avoid infinity situations + continue + closed[target] = TRUE + if(isturf(target) || isturf(target.loc) || (target in direct_access)) //Directly accessible atoms + if(Adjacent(target) || (tool && CheckToolReach(src, target, tool.reach))) //Adjacent or reaching attacks + return TRUE + + if (!target.loc) + continue + GET_COMPONENT_FROM(storage, /datum/component/storage, target.loc) + if (storage) + var/datum/component/storage/concrete/master = storage.master() + if (master) + next += master.parent + for(var/S in master.slaves) + var/datum/component/storage/slave = S + next += slave.parent + else + next += target.loc + else + next += target.loc + + checking = next return FALSE -//Can [target] in this container be reached by [user], can't be more than [depth] levels deep -/atom/proc/CanReachStorage(atom/target,user,depth) - return FALSE - -/obj/item/storage/CanReachStorage(atom/target,user,depth) - while(target && depth > 0) - target = target.loc - depth-- - if(target == src) - return TRUE - return FALSE - -/atom/movable/proc/DirectAccess(atom/target) - return (target == src || target == loc) +/atom/movable/proc/DirectAccess() + return list(src, loc) /mob/DirectAccess(atom/target) - return (..() || (target in contents)) + return ..() + contents /mob/living/DirectAccess(atom/target) - return (..() || (target in GetAllContents())) + return ..() + GetAllContents() /atom/proc/AllowClick() return FALSE @@ -309,7 +321,7 @@ A.ShiftClick(src) return /atom/proc/ShiftClick(mob/user) - SendSignal(COMSIG_CLICK_SHIFT, user) + SEND_SIGNAL(src, COMSIG_CLICK_SHIFT, user) if(user.client && user.client.eye == user || user.client.eye == user.loc) user.examinate(src) return @@ -324,7 +336,7 @@ return /atom/proc/CtrlClick(mob/user) - SendSignal(COMSIG_CLICK_CTRL, user) + SEND_SIGNAL(src, COMSIG_CLICK_CTRL, user) var/mob/living/ML = user if(istype(ML)) ML.pulled(src) @@ -356,7 +368,7 @@ ..() /atom/proc/AltClick(mob/user) - SendSignal(COMSIG_CLICK_ALT, user) + SEND_SIGNAL(src, COMSIG_CLICK_ALT, user) var/turf/T = get_turf(src) if(T && user.TurfAdjacent(T)) if(user.listed_turf == T) @@ -381,7 +393,7 @@ return /atom/proc/CtrlShiftClick(mob/user) - SendSignal(COMSIG_CLICK_CTRL_SHIFT) + SEND_SIGNAL(src, COMSIG_CLICK_CTRL_SHIFT) return /* diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 36b363db56..006207c3f3 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -101,7 +101,7 @@ /mob/living/silicon/robot/AltClickOn(atom/A) A.BorgAltClick(src) -/atom/proc/BorgCtrlShiftClick(mob/living/silicon/robot/user) //forward to human click if not overriden +/atom/proc/BorgCtrlShiftClick(mob/living/silicon/robot/user) //forward to human click if not overridden CtrlShiftClick(user) /obj/machinery/door/airlock/BorgCtrlShiftClick(mob/living/silicon/robot/user) // Sets/Unsets Emergency Access Override Forwards to AI code. @@ -111,7 +111,7 @@ ..() -/atom/proc/BorgShiftClick(mob/living/silicon/robot/user) //forward to human click if not overriden +/atom/proc/BorgShiftClick(mob/living/silicon/robot/user) //forward to human click if not overridden ShiftClick(user) /obj/machinery/door/airlock/BorgShiftClick(mob/living/silicon/robot/user) // Opens and closes doors! Forwards to AI code. @@ -121,7 +121,7 @@ ..() -/atom/proc/BorgCtrlClick(mob/living/silicon/robot/user) //forward to human click if not overriden +/atom/proc/BorgCtrlClick(mob/living/silicon/robot/user) //forward to human click if not overridden CtrlClick(user) /obj/machinery/door/airlock/BorgCtrlClick(mob/living/silicon/robot/user) // Bolts doors. Forwards to AI code. diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm index 97924be2d4..2f97401af7 100644 --- a/code/_onclick/drag_drop.dm +++ b/code/_onclick/drag_drop.dm @@ -2,13 +2,13 @@ MouseDrop: Called on the atom you're dragging. In a lot of circumstances we want to use the - recieving object instead, so that's the default action. This allows you to drag + receiving object instead, so that's the default action. This allows you to drag almost anything into a trash can. */ /atom/MouseDrop(atom/over, src_location, over_location, src_control, over_control, params) if(!usr || !over) return - if(SendSignal(COMSIG_MOUSEDROP_ONTO, over, usr) & COMPONENT_NO_MOUSEDROP) //Whatever is recieving will verify themselves for adjacency. + if(SEND_SIGNAL(src, COMSIG_MOUSEDROP_ONTO, over, usr) & COMPONENT_NO_MOUSEDROP) //Whatever is receiving will verify themselves for adjacency. return if(over == src) return usr.client.Click(src, src_location, src_control, params) @@ -18,9 +18,9 @@ over.MouseDrop_T(src,usr) return -// recieve a mousedrop +// receive a mousedrop /atom/proc/MouseDrop_T(atom/dropping, mob/user) - SendSignal(COMSIG_MOUSEDROPPED_ONTO, dropping, user) + SEND_SIGNAL(src, COMSIG_MOUSEDROPPED_ONTO, dropping, user) return @@ -140,4 +140,4 @@ if (middragatom == src_object) middragtime = 0 middragatom = null - ..() + ..() \ No newline at end of file diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 3225252520..b558e7c87c 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -134,6 +134,8 @@ #define ui_ai_take_picture "SOUTH:6,WEST+12" #define ui_ai_view_images "SOUTH:6,WEST+13" #define ui_ai_sensor "SOUTH:6,WEST+14" +#define ui_ai_multicam "SOUTH+1:6,WEST+13" +#define ui_ai_add_multicam "SOUTH+1:6,WEST+14" //Pop-up inventory #define ui_shoes "WEST+1:8,SOUTH:5" diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index bce8effc81..4ae61169b7 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -11,7 +11,24 @@ var/id var/ordered = TRUE //If the button gets placed into the default bar +/obj/screen/movable/action_button/proc/can_use(mob/user) + if (linked_action) + return linked_action.owner == user + else if (isobserver(user)) + var/mob/dead/observer/O = user + return !O.observetarget + else + return TRUE + +/obj/screen/movable/action_button/MouseDrop() + if (!can_use(usr)) + return + return ..() + /obj/screen/movable/action_button/Click(location,control,params) + if (!can_use(usr)) + return + var/list/modifiers = params2list(params) if(modifiers["shift"]) if(locked) @@ -44,6 +61,9 @@ var/show_state = "show" /obj/screen/movable/action_button/hide_toggle/Click(location,control,params) + if (!can_use(usr)) + return + var/list/modifiers = params2list(params) if(modifiers["shift"]) if(locked) @@ -118,7 +138,7 @@ /datum/hud/proc/get_action_buttons_icons() . = list() - .["bg_icon"] = ui_style_icon + .["bg_icon"] = ui_style .["bg_state"] = "template" //TODO : Make these fit theme diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index 8d4aca5fbf..2bb514d008 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -164,11 +164,31 @@ var/mob/living/silicon/S = usr S.toggle_sensors() +/obj/screen/ai/multicam + name = "Multicamera Mode" + icon_state = "multicam" + +/obj/screen/ai/multicam/Click() + if(..()) + return + var/mob/living/silicon/ai/AI = usr + AI.toggle_multicam() + +/obj/screen/ai/add_multicam + name = "New Camera" + icon_state = "new_cam" + +/obj/screen/ai/add_multicam/Click() + if(..()) + return + var/mob/living/silicon/ai/AI = usr + AI.drop_new_multicam() + /datum/hud/ai - ui_style_icon = 'icons/mob/screen_ai.dmi' + ui_style = 'icons/mob/screen_ai.dmi' -/datum/hud/ai/New(mob/owner, ui_style = 'icons/mob/screen_ai.dmi') +/datum/hud/ai/New(mob/owner) ..() var/obj/screen/using @@ -247,12 +267,20 @@ using.screen_loc = ui_ai_view_images static_inventory += using - //Medical/Security sensors using = new /obj/screen/ai/sensors() using.screen_loc = ui_ai_sensor static_inventory += using +//Multicamera mode + using = new /obj/screen/ai/multicam() + using.screen_loc = ui_ai_multicam + static_inventory += using + +//Add multicamera camera + using = new /obj/screen/ai/add_multicam() + using.screen_loc = ui_ai_add_multicam + static_inventory += using /mob/living/silicon/ai/create_mob_hud() if(client && !hud_used) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index bb61f2218d..e7977185f1 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -237,6 +237,16 @@ magboots would let you walk around normally on the floor. Barring those, you can or shoot a gun to move around via Newton's 3rd Law of Motion." icon_state = "weightless" +/obj/screen/alert/highgravity + name = "High Gravity" + desc = "You're getting crushed by high gravity, picking up items and movement will be slowed." + icon_state = "paralysis" + +/obj/screen/alert/veryhighgravity + name = "Crushing Gravity" + desc = "You're getting crushed by high gravity, picking up items and movement will be slowed. You'll also accumulate brute damage!" + icon_state = "paralysis" + /obj/screen/alert/fire name = "On Fire" desc = "You're on fire. Stop, drop and roll to put the fire out or move to a vacuum area." @@ -304,6 +314,9 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." /obj/screen/alert/bloodsense/process() var/atom/blood_target + if(!mob_viewer.mind) + return + var/datum/antagonist/cult/antag = mob_viewer.mind.has_antag_datum(/datum/antagonist/cult,TRUE) if(!antag) return @@ -588,7 +601,6 @@ so as to remain in compliance with the most up-to-date laws." // Re-render all alerts - also called in /datum/hud/show_hud() because it's needed there /datum/hud/proc/reorganize_alerts() var/list/alerts = mymob.alerts - var/icon_pref if(!hud_shown) for(var/i = 1, i <= alerts.len, i++) mymob.client.screen -= alerts[alerts[i]] @@ -596,9 +608,7 @@ so as to remain in compliance with the most up-to-date laws." for(var/i = 1, i <= alerts.len, i++) var/obj/screen/alert/alert = alerts[alerts[i]] if(alert.icon_state == "template") - if(!icon_pref) - icon_pref = ui_style2icon(mymob.client.prefs.UI_style) - alert.icon = icon_pref + alert.icon = ui_style switch(i) if(1) . = ui_alert1 diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index 5a8cff1df0..3b943209d3 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -24,11 +24,10 @@ desc = "Allows you to sense the general direction of your Queen." screen_loc = ui_alien_queen_finder - /datum/hud/alien - ui_style_icon = 'icons/mob/screen_alien.dmi' + ui_style = 'icons/mob/screen_alien.dmi' -/datum/hud/alien/New(mob/living/carbon/alien/humanoid/owner, ui_style = 'icons/mob/screen_alien.dmi') +/datum/hud/alien/New(mob/living/carbon/alien/humanoid/owner) ..() var/obj/screen/using @@ -36,7 +35,7 @@ //equippable shit //hands - build_hand_slots(ui_style) + build_hand_slots() //begin buttons diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm index 0f044a2bc7..1ce916f61d 100644 --- a/code/_onclick/hud/alien_larva.dm +++ b/code/_onclick/hud/alien_larva.dm @@ -1,3 +1,6 @@ +/datum/hud/larva + ui_style = 'icons/mob/screen_alien.dmi' + /datum/hud/larva/New(mob/owner) ..() var/obj/screen/using diff --git a/code/_onclick/hud/constructs.dm b/code/_onclick/hud/constructs.dm index 729de9da4a..d4f6b90ca6 100644 --- a/code/_onclick/hud/constructs.dm +++ b/code/_onclick/hud/constructs.dm @@ -1,11 +1,10 @@ - /datum/hud/constructs - ui_style_icon = 'icons/mob/screen_construct.dmi' + ui_style = 'icons/mob/screen_construct.dmi' /datum/hud/constructs/New(mob/owner) ..() pull_icon = new /obj/screen/pull() - pull_icon.icon = 'icons/mob/screen_construct.dmi' + pull_icon.icon = ui_style pull_icon.update_icon(mymob) pull_icon.screen_loc = ui_construct_pull static_inventory += pull_icon diff --git a/code/_onclick/hud/devil.dm b/code/_onclick/hud/devil.dm index 0cd0b6a6a9..b30eeefc1b 100644 --- a/code/_onclick/hud/devil.dm +++ b/code/_onclick/hud/devil.dm @@ -2,7 +2,7 @@ //Soul counter is stored with the humans, it does weird when you place it here apparently... -/datum/hud/devil/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi') +/datum/hud/devil/New(mob/owner) ..() var/obj/screen/using @@ -17,7 +17,7 @@ pull_icon.screen_loc = ui_drone_pull static_inventory += pull_icon - build_hand_slots(ui_style) + build_hand_slots() using = new /obj/screen/inventory() using.name = "hand" @@ -62,4 +62,4 @@ /mob/living/carbon/true_devil/create_mob_hud() if(client && !hud_used) - hud_used = new /datum/hud/devil(src, ui_style2icon(client.prefs.UI_style)) + hud_used = new /datum/hud/devil(src) diff --git a/code/_onclick/hud/drones.dm b/code/_onclick/hud/drones.dm index 8e39d96bf6..bcdfa084d3 100644 --- a/code/_onclick/hud/drones.dm +++ b/code/_onclick/hud/drones.dm @@ -1,4 +1,4 @@ -/datum/hud/dextrous/drone/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi') +/datum/hud/dextrous/drone/New(mob/owner) ..() var/obj/screen/inventory/inv_box diff --git a/code/_onclick/hud/generic_dextrous.dm b/code/_onclick/hud/generic_dextrous.dm index 39a79b108b..c42714ba7c 100644 --- a/code/_onclick/hud/generic_dextrous.dm +++ b/code/_onclick/hud/generic_dextrous.dm @@ -1,5 +1,5 @@ //Used for normal mobs that have hands. -/datum/hud/dextrous/New(mob/living/owner, ui_style = 'icons/mob/screen_midnight.dmi') +/datum/hud/dextrous/New(mob/living/owner) ..() var/obj/screen/using @@ -14,7 +14,7 @@ pull_icon.screen_loc = ui_drone_pull static_inventory += pull_icon - build_hand_slots(ui_style) + build_hand_slots() using = new /obj/screen/swap_hand() using.icon = ui_style @@ -78,6 +78,6 @@ /mob/living/simple_animal/create_mob_hud() if(client && !hud_used) if(dextrous) - hud_used = new dextrous_hud_type(src, ui_style2icon(client.prefs.UI_style)) + hud_used = new dextrous_hud_type(src) else ..() diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index 50bf9c9222..ea78da5952 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -44,7 +44,7 @@ var/mob/dead/observer/G = usr G.register_pai() -/datum/hud/ghost/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi') +/datum/hud/ghost/New(mob/owner) ..() var/obj/screen/using @@ -73,6 +73,12 @@ static_inventory += using /datum/hud/ghost/show_hud(version = 0, mob/viewmob) + // don't show this HUD if observing; show the HUD of the observee + var/mob/dead/observer/O = mymob + if (istype(O) && O.observetarget) + plane_masters_update() + return FALSE + . = ..() if(!.) return @@ -84,4 +90,4 @@ /mob/dead/observer/create_mob_hud() if(client && !hud_used) - hud_used = new /datum/hud/ghost(src, ui_style2icon(client.prefs.UI_style)) + hud_used = new /datum/hud/ghost(src) diff --git a/code/_onclick/hud/guardian.dm b/code/_onclick/hud/guardian.dm index 628efbffe5..687d47c017 100644 --- a/code/_onclick/hud/guardian.dm +++ b/code/_onclick/hud/guardian.dm @@ -32,9 +32,9 @@ if(dextrous) ..() else - hud_used = new /datum/hud/guardian(src, ui_style2icon(client.prefs.UI_style)) + hud_used = new /datum/hud/guardian(src) -/datum/hud/dextrous/guardian/New(mob/living/simple_animal/hostile/guardian/owner, ui_style = 'icons/mob/screen_midnight.dmi') //for a dextrous guardian +/datum/hud/dextrous/guardian/New(mob/living/simple_animal/hostile/guardian/owner) //for a dextrous guardian ..() var/obj/screen/using if(istype(owner, /mob/living/simple_animal/hostile/guardian/dextrous)) diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index e4318059d6..b5b42e06e1 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -4,6 +4,19 @@ including inventories and item quick actions. */ +// The default UI style is the first one in the list +GLOBAL_LIST_INIT(available_ui_styles, list( + "Midnight" = 'icons/mob/screen_midnight.dmi', + "Retro" = 'icons/mob/screen_retro.dmi', + "Plasmafire" = 'icons/mob/screen_plasmafire.dmi', + "Slimecore" = 'icons/mob/screen_slimecore.dmi', + "Operative" = 'icons/mob/screen_operative.dmi', + "Clockwork" = 'icons/mob/screen_clockwork.dmi' +)) + +/proc/ui_style2icon(ui_style) + return GLOB.available_ui_styles[ui_style] || GLOB.available_ui_styles[GLOB.available_ui_styles[1]] + /datum/hud var/mob/mymob @@ -45,12 +58,15 @@ var/obj/screen/internals var/obj/screen/mood - var/ui_style_icon = 'icons/mob/screen_midnight.dmi' + // subtypes can override this to force a specific UI style + var/ui_style -/datum/hud/New(mob/owner , ui_style = 'icons/mob/screen_midnight.dmi') +/datum/hud/New(mob/owner) mymob = owner - ui_style_icon = ui_style + if (!ui_style) + // will fall back to the default if any of these are null + ui_style = ui_style2icon(owner.client && owner.client.prefs && owner.client.prefs.UI_style) hide_actions_toggle = new hide_actions_toggle.InitialiseIcon(src) @@ -68,38 +84,19 @@ if(mymob.hud_used == src) mymob.hud_used = null - qdel(hide_actions_toggle) - hide_actions_toggle = null - - qdel(module_store_icon) - module_store_icon = null - - if(static_inventory.len) - for(var/thing in static_inventory) - qdel(thing) - static_inventory.Cut() + QDEL_NULL(hide_actions_toggle) + QDEL_NULL(module_store_icon) + QDEL_LIST(static_inventory) inv_slots.Cut() action_intent = null zone_select = null pull_icon = null - if(toggleable_inventory.len) - for(var/thing in toggleable_inventory) - qdel(thing) - toggleable_inventory.Cut() - - if(hotkeybuttons.len) - for(var/thing in hotkeybuttons) - qdel(thing) - hotkeybuttons.Cut() - + QDEL_LIST(toggleable_inventory) + QDEL_LIST(hotkeybuttons) throw_icon = null - - if(infodisplay.len) - for(var/thing in infodisplay) - qdel(thing) - infodisplay.Cut() + QDEL_LIST(infodisplay) healths = null healthdoll = null @@ -112,15 +109,8 @@ alien_plasma_display = null alien_queen_finder = null - if(plane_masters.len) - for(var/thing in plane_masters) - qdel(plane_masters[thing]) - plane_masters.Cut() - - if(screenoverlays.len) - for(var/thing in screenoverlays) - qdel(thing) - screenoverlays.Cut() + QDEL_LIST_ASSOC_VAL(plane_masters) + QDEL_LIST(screenoverlays) mymob = null return ..() @@ -131,7 +121,7 @@ update_sight() //Version denotes which style should be displayed. blank or 0 means "next version" -/datum/hud/proc/show_hud(version = 0,mob/viewmob) +/datum/hud/proc/show_hud(version = 0, mob/viewmob) if(!ismob(mymob)) return FALSE var/mob/screenmob = viewmob || mymob @@ -195,19 +185,30 @@ if(infodisplay.len) screenmob.client.screen -= infodisplay - for(var/thing in plane_masters) - var/obj/screen/plane_master/PM = plane_masters[thing] - PM.backdrop(screenmob) - screenmob.client.screen += PM - hud_version = display_hud_version persistent_inventory_update(screenmob) screenmob.update_action_buttons(1) reorganize_alerts() screenmob.reload_fullscreen() update_parallax_pref(screenmob) + + // ensure observers get an accurate and up-to-date view + if (!viewmob) + plane_masters_update() + for(var/M in mymob.observers) + show_hud(hud_version, M) + else if (viewmob.hud_used) + viewmob.hud_used.plane_masters_update() + return TRUE +/datum/hud/proc/plane_masters_update() + // Plane masters are always shown to OUR mob, never to observers + for(var/thing in plane_masters) + var/obj/screen/plane_master/PM = plane_masters[thing] + PM.backdrop(mymob) + mymob.client.screen += PM + /datum/hud/human/show_hud(version = 0,mob/viewmob) . = ..() if(!.) @@ -228,6 +229,19 @@ if(!mymob) return +/datum/hud/proc/update_ui_style(new_ui_style) + // do nothing if overridden by a subtype or already on that style + if (initial(ui_style) || ui_style == new_ui_style) + return + + for(var/atom/item in static_inventory + toggleable_inventory + hotkeybuttons + infodisplay + screenoverlays + inv_slots) + if (item.icon == ui_style) + item.icon = new_ui_style + + ui_style = new_ui_style + build_hand_slots() + hide_actions_toggle.InitialiseIcon(src) + //Triggered when F12 is pressed (Unless someone changed something in the DMF) /mob/verb/button_pressed_F12() set name = "F12" @@ -243,7 +257,7 @@ //(re)builds the hand ui slots, throwing away old ones //not really worth jugglying existing ones so we just scrap+rebuild //9/10 this is only called once per mob and only for 2 hands -/datum/hud/proc/build_hand_slots(ui_style = 'icons/mob/screen_midnight.dmi') +/datum/hud/proc/build_hand_slots() for(var/h in hand_slots) var/obj/screen/inventory/hand/H = hand_slots[h] if(H) @@ -268,8 +282,9 @@ i++ for(var/obj/screen/human/equip/E in static_inventory) E.screen_loc = ui_equip_position(mymob) - if(mymob.hud_used) - show_hud(HUD_STYLE_STANDARD,mymob) + + if(ismob(mymob) && mymob.hud_used == src) + show_hud(hud_version) /datum/hud/proc/update_locked_slots() return diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 2ac0f14f95..fdb209d0bc 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -82,10 +82,10 @@ /mob/living/carbon/human/create_mob_hud() if(client && !hud_used) - hud_used = new /datum/hud/human(src, ui_style2icon(client.prefs.UI_style)) + hud_used = new /datum/hud/human(src) -/datum/hud/human/New(mob/living/carbon/human/owner, ui_style = 'icons/mob/screen_midnight.dmi') +/datum/hud/human/New(mob/living/carbon/human/owner) ..() owner.overlay_fullscreen("see_through_darkness", /obj/screen/fullscreen/see_through_darkness) @@ -152,7 +152,7 @@ inv_box.screen_loc = ui_oclothing toggleable_inventory += inv_box - build_hand_slots(ui_style) + build_hand_slots() using = new /obj/screen/swap_hand() using.icon = ui_style diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index c469c1ef20..479fd59dae 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -1,4 +1,4 @@ -/datum/hud/monkey/New(mob/living/carbon/monkey/owner, ui_style = 'icons/mob/screen_midnight.dmi') +/datum/hud/monkey/New(mob/living/carbon/monkey/owner) ..() var/obj/screen/using var/obj/screen/inventory/inv_box @@ -24,7 +24,7 @@ using.screen_loc = ui_drop_throw static_inventory += using - build_hand_slots(ui_style) + build_hand_slots() using = new /obj/screen/swap_hand() using.icon = ui_style @@ -152,4 +152,4 @@ /mob/living/carbon/monkey/create_mob_hud() if(client && !hud_used) - hud_used = new /datum/hud/monkey(src, ui_style2icon(client.prefs.UI_style)) + hud_used = new /datum/hud/monkey(src) diff --git a/code/_onclick/hud/movable_screen_objects.dm b/code/_onclick/hud/movable_screen_objects.dm index 4da721012d..f71ced7a9d 100644 --- a/code/_onclick/hud/movable_screen_objects.dm +++ b/code/_onclick/hud/movable_screen_objects.dm @@ -12,6 +12,8 @@ var/snap2grid = FALSE var/moved = FALSE var/locked = FALSE + var/x_off = -16 + var/y_off = -16 //Snap Screen Object //Tied to the grid, snaps to the nearest turf @@ -42,8 +44,8 @@ screen_loc = "[screen_loc_X[1]],[screen_loc_Y[1]]" else //Normalise Pixel Values (So the object drops at the center of the mouse, not 16 pixels off) - var/pix_X = text2num(screen_loc_X[2]) - 16 - var/pix_Y = text2num(screen_loc_Y[2]) - 16 + var/pix_X = text2num(screen_loc_X[2]) + x_off + var/pix_Y = text2num(screen_loc_Y[2]) + y_off screen_loc = "[screen_loc_X[1]]:[pix_X],[screen_loc_Y[1]]:[pix_Y]" moved = screen_loc diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm new file mode 100644 index 0000000000..aea87827a6 --- /dev/null +++ b/code/_onclick/hud/picture_in_picture.dm @@ -0,0 +1,144 @@ +/obj/screen/movable/pic_in_pic + name = "Picture-in-picture" + screen_loc = "CENTER" + plane = FLOOR_PLANE + var/atom/center + var/width = 0 + var/height = 0 + var/list/shown_to = list() + var/list/viewing_turfs = list() + var/obj/screen/component_button/button_x + var/obj/screen/component_button/button_expand + var/obj/screen/component_button/button_shrink + + var/mutable_appearance/standard_background + var/const/max_dimensions = 10 + +/obj/screen/movable/pic_in_pic/Initialize() + . = ..() + make_backgrounds() + +/obj/screen/movable/pic_in_pic/Destroy() + for(var/C in shown_to) + unshow_to(C) + QDEL_NULL(button_x) + QDEL_NULL(button_shrink) + QDEL_NULL(button_expand) + return ..() + +/obj/screen/movable/pic_in_pic/component_click(obj/screen/component_button/component, params) + if(component == button_x) + qdel(src) + else if(component == button_expand) + set_view_size(width+1, height+1) + else if(component == button_shrink) + set_view_size(width-1, height-1) + +/obj/screen/movable/pic_in_pic/proc/make_backgrounds() + standard_background = new /mutable_appearance() + standard_background.icon = 'icons/misc/pic_in_pic.dmi' + standard_background.icon_state = "background" + standard_background.layer = SPACE_LAYER + +/obj/screen/movable/pic_in_pic/proc/add_buttons() + var/static/mutable_appearance/move_tab + if(!move_tab) + move_tab = new /mutable_appearance() + //all these properties are always the same, and since adding something to the overlay + //list makes a copy, there is no reason to make a new one each call + move_tab.icon = 'icons/misc/pic_in_pic.dmi' + move_tab.icon_state = "move" + move_tab.plane = HUD_PLANE + var/matrix/M = matrix() + M.Translate(0, (height + 0.25) * world.icon_size) + move_tab.transform = M + add_overlay(move_tab) + + if(!button_x) + button_x = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "close" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "x" + MA.plane = HUD_PLANE + button_x.appearance = MA + M = matrix() + M.Translate((max(4, width) - 0.75) * world.icon_size, (height + 0.25) * world.icon_size) + button_x.transform = M + vis_contents += button_x + + if(!button_expand) + button_expand = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "expand" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "expand" + MA.plane = HUD_PLANE + button_expand.appearance = MA + M = matrix() + M.Translate(world.icon_size, (height + 0.25) * world.icon_size) + button_expand.transform = M + vis_contents += button_expand + + if(!button_shrink) + button_shrink = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "shrink" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "shrink" + MA.plane = HUD_PLANE + button_shrink.appearance = MA + M = matrix() + M.Translate(2 * world.icon_size, (height + 0.25) * world.icon_size) + button_shrink.transform = M + vis_contents += button_shrink + +/obj/screen/movable/pic_in_pic/proc/add_background() + if((width > 0) && (height > 0)) + var/matrix/M = matrix() + M.Scale(width + 0.5, height + 0.5) + M.Translate((width-1)/2 * world.icon_size, (height-1)/2 * world.icon_size) + standard_background.transform = M + add_overlay(standard_background) + +/obj/screen/movable/pic_in_pic/proc/set_view_size(width, height, do_refresh = TRUE) + width = CLAMP(width, 0, max_dimensions) + height = CLAMP(height, 0, max_dimensions) + src.width = width + src.height = height + + y_off = -height * world.icon_size - 16 + + cut_overlays() + add_background() + add_buttons() + if(do_refresh) + refresh_view() + +/obj/screen/movable/pic_in_pic/proc/set_view_center(atom/target, do_refresh = TRUE) + center = target + if(do_refresh) + refresh_view() + +/obj/screen/movable/pic_in_pic/proc/refresh_view() + vis_contents -= viewing_turfs + if(!width || !height) + return + var/turf/T = get_turf(center) + if(!T) + return + var/turf/lowerleft = locate(max(1, T.x - round(width/2)), max(1, T.y - round(height/2)), T.z) + var/turf/upperright = locate(min(world.maxx, lowerleft.x + width - 1), min(world.maxy, lowerleft.y + height - 1), lowerleft.z) + viewing_turfs = block(lowerleft, upperright) + vis_contents += viewing_turfs + + +/obj/screen/movable/pic_in_pic/proc/show_to(client/C) + if(C) + shown_to[C] = 1 + C.screen += src + +/obj/screen/movable/pic_in_pic/proc/unshow_to(client/C) + if(C) + shown_to -= C + C.screen -= src diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 769cdb2244..7cc51fade1 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -89,9 +89,9 @@ R.toggle_ionpulse() /datum/hud/robot - ui_style_icon = 'icons/mob/screen_cyborg.dmi' + ui_style = 'icons/mob/screen_cyborg.dmi' -/datum/hud/robot/New(mob/owner, ui_style = 'icons/mob/screen_cyborg.dmi') +/datum/hud/robot/New(mob/owner) ..() var/mob/living/silicon/robot/mymobR = mymob var/obj/screen/using diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 02ece81b41..d2ac10a83f 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -30,6 +30,9 @@ /obj/screen/orbit() return +/obj/screen/proc/component_click(obj/screen/component_button/component, params) + return + /obj/screen/text icon = null icon_state = null @@ -604,3 +607,15 @@ holder.screen -= src holder = null return ..() + + +/obj/screen/component_button + var/obj/screen/parent + +/obj/screen/component_button/Initialize(mapload, obj/screen/parent) + . = ..() + src.parent = parent + +/obj/screen/component_button/Click(params) + if(parent) + parent.component_click(src, params) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index b48d86ec0e..df0935d8ab 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -17,17 +17,18 @@ // Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. /obj/item/proc/attack_self(mob/user) - SendSignal(COMSIG_ITEM_ATTACK_SELF, user) + if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_SELF, user) & COMPONENT_NO_INTERACT) + return interact(user) /obj/item/proc/pre_attack(atom/A, mob/living/user, params) //do stuff before attackby! - if(SendSignal(COMSIG_ITEM_PRE_ATTACK, A, user, params) & COMPONENT_NO_ATTACK) + if(SEND_SIGNAL(src, COMSIG_ITEM_PRE_ATTACK, A, user, params) & COMPONENT_NO_ATTACK) return FALSE return TRUE //return FALSE to avoid calling attackby after this proc does stuff // No comment /atom/proc/attackby(obj/item/W, mob/user, params) - if(SendSignal(COMSIG_PARENT_ATTACKBY, W, user, params) & COMPONENT_NO_AFTERATTACK) + if(SEND_SIGNAL(src, COMSIG_PARENT_ATTACKBY, W, user, params) & COMPONENT_NO_AFTERATTACK) return TRUE return FALSE @@ -52,8 +53,8 @@ /obj/item/proc/attack(mob/living/M, mob/living/user) - SendSignal(COMSIG_ITEM_ATTACK, M, user) - if(flags_1 & NOBLUDGEON_1) + SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, M, user) + if(item_flags & NOBLUDGEON) return if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) // CIT CHANGE - makes it impossible to attack in stamina softcrit @@ -82,9 +83,9 @@ //the equivalent of the standard version of attack() but for object targets. /obj/item/proc/attack_obj(obj/O, mob/living/user) - if(SendSignal(COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_NO_ATTACK_OBJ) + if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_NO_ATTACK_OBJ) return - if(flags_1 & NOBLUDGEON_1) + if(item_flags & NOBLUDGEON) return if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) // CIT CHANGE - makes it impossible to attack in stamina softcrit to_chat(user, "You're too exhausted.") // CIT CHANGE - ditto diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index e7ec2255ae..63e1a14aa6 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -48,7 +48,7 @@ // Oh by the way this didn't work with old click code which is why clicking shit didn't spam you /atom/proc/attack_ghost(mob/dead/observer/user) - if(SendSignal(COMSIG_ATOM_ATTACK_GHOST, user) & COMPONENT_NO_ATTACK_HAND) + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_GHOST, user) & COMPONENT_NO_ATTACK_HAND) return TRUE if(user.client) if(IsAdminGhost(user)) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 2c1c60c6e4..26823133f3 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -25,7 +25,7 @@ if(override) return - SendSignal(COMSIG_HUMAN_MELEE_UNARMED_ATTACK, A) + SEND_SIGNAL(src, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, A) A.attack_hand(src) //Return TRUE to cancel other attack hand effects that respect it. @@ -33,7 +33,7 @@ . = FALSE if(!(interaction_flags_atom & INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND)) add_fingerprint(user) - if(SendSignal(COMSIG_ATOM_ATTACK_HAND, user) & COMPONENT_NO_ATTACK_HAND) + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_HAND, user) & COMPONENT_NO_ATTACK_HAND) . = TRUE if(interaction_flags_atom & INTERACT_ATOM_ATTACK_HAND) . = _try_interact(user) @@ -111,7 +111,7 @@ A.attack_paw(src) /atom/proc/attack_paw(mob/user) - if(SendSignal(COMSIG_ATOM_ATTACK_PAW, user) & COMPONENT_NO_ATTACK_HAND) + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_PAW, user) & COMPONENT_NO_ATTACK_HAND) return TRUE return FALSE diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 18f1c61d94..85e7958b53 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -70,7 +70,7 @@ desc = "Magic" icon = 'icons/obj/magic.dmi'//Needs sprites icon_state = "2" - flags_1 = NOBLUDGEON_1 | ABSTRACT_1 | DROPDEL_1 + item_flags = NOBLUDGEON | ABSTRACT | DROPDEL //item_state = null w_class = WEIGHT_CLASS_GIGANTIC layer = ABOVE_HUD_LAYER diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index 24bf518a03..c683f55c59 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -10,6 +10,8 @@ var/resident_file //the file which this was loaded from, if any var/modified = FALSE //set to TRUE if the default has been overridden by a config entry + var/deprecated_by //the /datum/config_entry type that supercedes this one + var/protection = NONE var/abstract_type = /datum/config_entry //do not instantiate if type matches this @@ -85,6 +87,9 @@ /datum/config_entry/proc/ValidateListEntry(key_name, key_value) return TRUE +/datum/config_entry/proc/DeprecationUpdate(value) + return + /datum/config_entry/string config_entry_value = "" abstract_type = /datum/config_entry/string diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 0f662ad97d..5c22fc320f 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -3,6 +3,7 @@ var/directory = "config" + var/warned_deprecated_configs = FALSE var/hiding_entries_by_type = TRUE //Set for readability, admins can set this to FALSE if they want to debug it var/list/entries var/list/entries_by_type @@ -25,10 +26,13 @@ InitEntries() LoadModes() if(fexists("[directory]/config.txt") && LoadEntries("config.txt") <= 1) - log_config("No $include directives found in config.txt! Loading legacy game_options/dbconfig/comms files...") - LoadEntries("game_options.txt") - LoadEntries("dbconfig.txt") - LoadEntries("comms.txt") + var/list/legacy_configs = list("game_options.txt", "dbconfig.txt", "comms.txt") + for(var/I in legacy_configs) + if(fexists("[directory]/[I]")) + log_config("No $include directives found in config.txt! Loading legacy [legacy_configs.Join("/")] files...") + for(var/J in legacy_configs) + LoadEntries(J) + break loadmaplist(CONFIG_MAPS_FILE) LoadMOTD() @@ -120,11 +124,26 @@ if(lockthis) E.protection |= CONFIG_ENTRY_LOCKED + if(E.deprecated_by) + var/datum/config_entry/new_ver = entries_by_type[E.deprecated_by] + var/new_value = E.DeprecationUpdate(value) + var/good_update = istext(new_value) + log_config("Entry [entry] is deprecated and will be removed soon. Migrate to [new_ver.name]![good_update ? " Suggested new value is: [new_value]" : ""]") + if(!warned_deprecated_configs) + addtimer(CALLBACK(GLOBAL_PROC, /proc/message_admins, "This server is using deprecated configuration settings. Please check the logs and update accordingly."), 0) + warned_deprecated_configs = TRUE + if(good_update) + value = new_value + E = new_ver + else + warning("[new_ver.type] is deprecated but gave no proper return for DeprecationUpdate()") + var/validated = E.ValidateAndSet(value) if(!validated) log_config("Failed to validate setting \"[value]\" for [entry]") - else if(E.modified && !E.dupes_allowed) - log_config("Duplicate setting for [entry] ([value], [E.resident_file]) detected! Using latest.") + else + if(E.modified && !E.dupes_allowed) + log_config("Duplicate setting for [entry] ([value], [E.resident_file]) detected! Using latest.") E.resident_file = filename diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 3de0ebe439..88ce13db92 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -134,7 +134,7 @@ /datum/config_entry/flag/no_summon_events //Allowed -/datum/config_entry/flag/no_intercept_report //Whether or not to send a communications intercept report roundstart. This may be overriden by gamemodes. +/datum/config_entry/flag/no_intercept_report //Whether or not to send a communications intercept report roundstart. This may be overridden by gamemodes. /datum/config_entry/number/arrivals_shuttle_dock_window //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station config_entry_value = 55 @@ -170,8 +170,6 @@ config_entry_value = -1 min_val = -1 -/datum/config_entry/flag/rename_cyborg - /datum/config_entry/flag/ooc_during_round /datum/config_entry/flag/emojis @@ -288,6 +286,11 @@ /datum/config_entry/flag/shift_time_realtime +/datum/config_entry/keyed_number_list/antag_rep + +/datum/config_entry/number/monkeycap + config_entry_value = 64 + min_val = 0 //Cit changes - Adds config options for crew objectives and miscreants /datum/config_entry/flag/allow_crew_objectives @@ -304,4 +307,4 @@ /datum/config_entry/number/nightshift_finish config_entry_value = 6 -//End of Cit changes \ No newline at end of file +//End of Cit changes diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 258a695a25..1d41e9a765 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -55,6 +55,8 @@ /datum/config_entry/flag/log_manifest // log crew manifest to seperate file +/datum/config_entry/flag/log_job_debug // log roundstart divide occupations debug information to a file + /datum/config_entry/flag/allow_admin_ooccolor // Allows admins with relevant permissions to have their own ooc colour /datum/config_entry/flag/allow_vote_restart // allow votes to restart @@ -177,6 +179,10 @@ /datum/config_entry/string/githuburl config_entry_value = "https://www.github.com/tgstation/-tg-station" +/datum/config_entry/string/roundstatsurl + +/datum/config_entry/string/gamelogurl + /datum/config_entry/number/githubrepoid config_entry_value = null min_val = 0 diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index a46a283254..17c04982fb 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -263,7 +263,7 @@ SUBSYSTEM_DEF(air) currentrun |= T if(blockchanges && T.excited_group) T.excited_group.garbage_collect() - else if(T.initialized) + else if(T.flags_1 & INITIALIZED_1) for(var/turf/S in T.atmos_adjacent_turfs) add_to_active(S) else if(map_loading) diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index 03c3a77638..464991e0cf 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -37,14 +37,14 @@ SUBSYSTEM_DEF(atoms) count = atoms.len for(var/I in atoms) var/atom/A = I - if(!A.initialized) + if(!(A.flags_1 & INITIALIZED_1)) if(InitAtom(I, mapload_arg)) atoms -= I CHECK_TICK else count = 0 for(var/atom/A in world) - if(!A.initialized) + if(!(A.flags_1 & INITIALIZED_1)) InitAtom(A, mapload_arg) ++count CHECK_TICK @@ -95,7 +95,7 @@ SUBSYSTEM_DEF(atoms) if(!A) //possible harddel qdeleted = TRUE - else if(!A.initialized) + else if(!(A.flags_1 & INITIALIZED_1)) BadInitializeCalls[the_type] |= BAD_INIT_DIDNT_INIT return qdeleted || QDELING(A) diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index 351852e00a..446ee721ed 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -20,10 +20,22 @@ SUBSYSTEM_DEF(blackbox) record_feedback("amount", "random_seed", Master.random_seed) record_feedback("amount", "dm_version", DM_VERSION) record_feedback("amount", "byond_version", world.byond_version) + record_feedback("amount", "byond_build", world.byond_build) . = ..() //poll population /datum/controller/subsystem/blackbox/fire() + set waitfor = FALSE //for population query + + CheckPlayerCount() + + if(CONFIG_GET(flag/use_exp_tracking)) + if((triggertime < 0) || (world.time > (triggertime +3000))) //subsystem fires once at roundstart then once every 10 minutes. a 5 min check skips the first fire. The <0 is midnight rollover check + update_exp(10,FALSE) + +/datum/controller/subsystem/blackbox/proc/CheckPlayerCount() + set waitfor = FALSE + if(!SSdbcore.Connect()) return var/playercount = 0 @@ -33,11 +45,7 @@ SUBSYSTEM_DEF(blackbox) var/admincount = GLOB.admins.len var/datum/DBQuery/query_record_playercount = SSdbcore.NewQuery("INSERT INTO [format_table_name("legacy_population")] (playercount, admincount, time, server_ip, server_port, round_id) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', '[GLOB.round_id]')") query_record_playercount.Execute() - - if(CONFIG_GET(flag/use_exp_tracking)) - if((triggertime < 0) || (world.time > (triggertime +3000))) //subsystem fires once at roundstart then once every 10 minutes. a 5 min check skips the first fire. The <0 is midnight rollover check - update_exp(10,FALSE) - + qdel(query_record_playercount) /datum/controller/subsystem/blackbox/Recover() feedback = SSblackbox.feedback @@ -144,7 +152,7 @@ feedback data can be recorded in 5 formats: SSblackbox.record_feedback("text", "example", 1, "other text") json: {"data":["sample text","other text"]} "amount" - used to record simple counts of data i.e. the number of ahelps recieved + used to record simple counts of data i.e. the number of ahelps received further calls to the same key will add or subtract (if increment argument is a negative) from the saved amount calls: SSblackbox.record_feedback("amount", "example", 8) SSblackbox.record_feedback("amount", "example", 2) @@ -255,40 +263,63 @@ Versioning key_type = new_key_type /datum/controller/subsystem/blackbox/proc/ReportDeath(mob/living/L) + set waitfor = FALSE if(sealed) return - if(!SSdbcore.Connect()) - return if(!L || !L.key || !L.mind) return - var/area/placeofdeath = get_area(L) - var/sqlname = sanitizeSQL(L.real_name) - var/sqlkey = sanitizeSQL(L.ckey) - var/sqljob = sanitizeSQL(L.mind.assigned_role) - var/sqlspecial = sanitizeSQL(L.mind.special_role) - var/sqlpod = sanitizeSQL(placeofdeath.name) - var/laname = sanitizeSQL(L.lastattacker) - var/lakey = sanitizeSQL(L.lastattackerckey) - var/sqlbrute = sanitizeSQL(L.getBruteLoss()) - var/sqlfire = sanitizeSQL(L.getFireLoss()) - var/sqlbrain = sanitizeSQL(L.getBrainLoss()) - var/sqloxy = sanitizeSQL(L.getOxyLoss()) - var/sqltox = sanitizeSQL(L.getToxLoss()) - var/sqlclone = sanitizeSQL(L.getCloneLoss()) - var/sqlstamina = sanitizeSQL(L.getStaminaLoss()) - var/x_coord = sanitizeSQL(L.x) - var/y_coord = sanitizeSQL(L.y) - var/z_coord = sanitizeSQL(L.z) - var/last_words = sanitizeSQL(L.last_words) - var/suicide = sanitizeSQL(L.suiciding) - var/map = sanitizeSQL(SSmapping.config.map_name) if(!L.suiciding && !first_death.len) first_death["name"] = "[(L.real_name == L.name) ? L.real_name : "[L.real_name] as [L.name]"]" first_death["role"] = null if(L.mind.assigned_role) first_death["role"] = L.mind.assigned_role - first_death["area"] = "[get_area_name(L, TRUE)] [COORD(L)]" - first_death["damage"] = "[sqlbrute]/[sqlfire]/[sqltox]/[sqloxy]/[sqlclone]" + first_death["area"] = "[AREACOORD(L)]" + first_death["damage"] = "[L.getBruteLoss()]/[L.getFireLoss()]/[L.getToxLoss()]/[L.getOxyLoss()]/[L.getCloneLoss()]" first_death["last_words"] = L.last_words + var/sqlname = L.real_name + var/sqlkey = L.ckey + var/sqljob = L.mind.assigned_role + var/sqlspecial = L.mind.special_role + var/sqlpod = get_area_name(L, TRUE) + var/laname = L.lastattacker + var/lakey = L.lastattackerckey + var/sqlbrute = L.getBruteLoss() + var/sqlfire = L.getFireLoss() + var/sqlbrain = L.getBrainLoss() + var/sqloxy = L.getOxyLoss() + var/sqltox = L.getToxLoss() + var/sqlclone = L.getCloneLoss() + var/sqlstamina = L.getStaminaLoss() + var/x_coord = L.x + var/y_coord = L.y + var/z_coord = L.z + var/last_words = L.last_words + var/suicide = L.suiciding + var/map = SSmapping.config.map_name + + if(!SSdbcore.Connect()) + return + + sqlname = sanitizeSQL(sqlname) + sqlkey = sanitizeSQL(sqlkey) + sqljob = sanitizeSQL(sqljob) + sqlspecial = sanitizeSQL(sqlspecial) + sqlpod = sanitizeSQL(sqlpod) + laname = sanitizeSQL(laname) + lakey = sanitizeSQL(lakey) + sqlbrute = sanitizeSQL(sqlbrute) + sqlfire = sanitizeSQL(sqlfire) + sqlbrain = sanitizeSQL(sqlbrain) + sqloxy = sanitizeSQL(sqloxy) + sqltox = sanitizeSQL(sqltox) + sqlclone = sanitizeSQL(sqlclone) + sqlstamina = sanitizeSQL(sqlstamina) + x_coord = sanitizeSQL(x_coord) + y_coord = sanitizeSQL(y_coord) + z_coord = sanitizeSQL(z_coord) + last_words = sanitizeSQL(last_words) + suicide = sanitizeSQL(suicide) + map = sanitizeSQL(map) var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (pod, x_coord, y_coord, z_coord, mapname, server_ip, server_port, round_id, tod, job, special, name, byondkey, laname, lakey, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, last_words, suicide) VALUES ('[sqlpod]', '[x_coord]', '[y_coord]', '[z_coord]', '[map]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', [GLOB.round_id], '[SQLtime()]', '[sqljob]', '[sqlspecial]', '[sqlname]', '[sqlkey]', '[laname]', '[lakey]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[last_words]', [suicide])") query_report_death.Execute() + qdel(query_report_death) diff --git a/code/controllers/subsystem/communications.dm b/code/controllers/subsystem/communications.dm index d4838a21c3..5a791e28ef 100644 --- a/code/controllers/subsystem/communications.dm +++ b/code/controllers/subsystem/communications.dm @@ -26,7 +26,7 @@ SUBSYSTEM_DEF(communications) priority_announce(html_decode(user.treat_message(input)), null, 'sound/misc/announce.ogg', "Captain") nonsilicon_message_cooldown = world.time + COMMUNICATION_COOLDOWN log_talk(user,"[key_name(user)] has made a priority announcement: [input]",LOGSAY) - message_admins("[key_name_admin(user)] has made a priority announcement.") + message_admins("[ADMIN_LOOKUPFLW(user)] has made a priority announcement.") /datum/controller/subsystem/communications/proc/send_message(datum/comm_message/sending,print = TRUE,unique = FALSE) for(var/obj/machinery/computer/communications/C in GLOB.machines) diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index 0e1f1fb8fd..34bf57594d 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -1,6 +1,7 @@ SUBSYSTEM_DEF(dbcore) name = "Database" - flags = SS_NO_FIRE + flags = SS_BACKGROUND + wait = 1 MINUTES init_order = INIT_ORDER_DBCORE var/const/FAILED_DB_CONNECTION_CUTOFF = 5 @@ -25,6 +26,8 @@ SUBSYSTEM_DEF(dbcore) var/_db_con// This variable contains a reference to the actual database connection. var/failed_connections = 0 + var/list/active_queries = list() + /datum/controller/subsystem/dbcore/PreInit() if(!_db_con) _db_con = _dm_db_new_con() @@ -40,6 +43,15 @@ SUBSYSTEM_DEF(dbcore) return ..() +/datum/controller/subsystem/dbcore/fire() + for(var/I in active_queries) + var/datum/DBQuery/Q = I + if(world.time - Q.last_activity_time > (5 MINUTES)) + message_admins("Found undeleted query, please check the server logs and notify coders.") + log_sql("Undeleted query: \"[Q.sql]\" LA: [Q.last_activity] LAT: [Q.last_activity_time]") + qdel(Q) + if(MC_TICK_CHECK) + return /datum/controller/subsystem/dbcore/Recover() _db_con = SSdbcore._db_con @@ -49,12 +61,13 @@ SUBSYSTEM_DEF(dbcore) if(SSdbcore.Connect()) var/datum/DBQuery/query_round_shutdown = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET shutdown_datetime = Now(), end_state = '[sanitizeSQL(SSticker.end_state)]' WHERE id = [GLOB.round_id]") query_round_shutdown.Execute() + qdel(query_round_shutdown) if(IsConnected()) Disconnect() //nu /datum/controller/subsystem/dbcore/can_vv_get(var_name) - return var_name != "_db_con" && ..() + return var_name != NAMEOF(src, _db_con) && var_name != NAMEOF(src, active_queries) && ..() /datum/controller/subsystem/dbcore/vv_edit_var(var_name, var_value) if(var_name == "_db_con") @@ -98,33 +111,38 @@ SUBSYSTEM_DEF(dbcore) else schema_mismatch = 2 //flag admin message about no schema version log_sql("Could not get schema version from database") + qdel(query_db_version) else log_sql("Your server failed to establish a connection with the database.") else log_sql("Database is not enabled in configuration.") /datum/controller/subsystem/dbcore/proc/SetRoundID() - if(CONFIG_GET(flag/sql_enabled)) - if(SSdbcore.Connect()) - var/datum/DBQuery/query_round_initialize = SSdbcore.NewQuery("INSERT INTO [format_table_name("round")] (initialize_datetime, server_ip, server_port) VALUES (Now(), INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]')") - query_round_initialize.Execute() - var/datum/DBQuery/query_round_last_id = SSdbcore.NewQuery("SELECT LAST_INSERT_ID()") - query_round_last_id.Execute() - if(query_round_last_id.NextRow()) - GLOB.round_id = query_round_last_id.item[1] + if(!Connect()) + return + var/datum/DBQuery/query_round_initialize = SSdbcore.NewQuery("INSERT INTO [format_table_name("round")] (initialize_datetime, server_ip, server_port) VALUES (Now(), INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]')") + query_round_initialize.Execute() + qdel(query_round_initialize) + var/datum/DBQuery/query_round_last_id = SSdbcore.NewQuery("SELECT LAST_INSERT_ID()") + query_round_last_id.Execute() + if(query_round_last_id.NextRow()) + GLOB.round_id = query_round_last_id.item[1] + qdel(query_round_last_id) /datum/controller/subsystem/dbcore/proc/SetRoundStart() - if(CONFIG_GET(flag/sql_enabled)) - if(SSdbcore.Connect()) - var/datum/DBQuery/query_round_start = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET start_datetime = Now() WHERE id = [GLOB.round_id]") - query_round_start.Execute() + if(!Connect()) + return + var/datum/DBQuery/query_round_start = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET start_datetime = Now() WHERE id = [GLOB.round_id]") + query_round_start.Execute() + qdel(query_round_start) /datum/controller/subsystem/dbcore/proc/SetRoundEnd() - if(CONFIG_GET(flag/sql_enabled)) - if(SSdbcore.Connect()) - var/sql_station_name = sanitizeSQL(station_name()) - var/datum/DBQuery/query_round_end = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET end_datetime = Now(), game_mode_result = '[sanitizeSQL(SSticker.mode_result)]', station_name = '[sql_station_name]' WHERE id = [GLOB.round_id]") - query_round_end.Execute() + if(!Connect()) + return + var/sql_station_name = sanitizeSQL(station_name()) + var/datum/DBQuery/query_round_end = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET end_datetime = Now(), game_mode_result = '[sanitizeSQL(SSticker.mode_result)]', station_name = '[sql_station_name]' WHERE id = [GLOB.round_id]") + query_round_end.Execute() + qdel(query_round_end) /datum/controller/subsystem/dbcore/proc/Disconnect() failed_connections = 0 @@ -212,9 +230,10 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table sqlrowlist = " [sqlrowlist.Join(",\n ")]" var/datum/DBQuery/Query = NewQuery("INSERT[delayed][ignore_errors] INTO [table]\n([columns.Join(", ")])\nVALUES\n[sqlrowlist]\n[duplicate_key]") if (warn) - return Query.warn_execute() + . = Query.warn_execute() else - return Query.Execute() + . = Query.Execute() + qdel(Query) /datum/DBQuery @@ -223,11 +242,14 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table var/list/columns //list of DB Columns populated by Columns() var/list/conversions var/list/item //list of data values populated by NextRow() - + var/last_activity + var/last_activity_time var/datum/controller/subsystem/dbcore/db_connection var/_db_query /datum/DBQuery/New(sql_query, datum/controller/subsystem/dbcore/connection_handler, cursor_handler) + SSdbcore.active_queries[src] = TRUE + Activity("Created") if(sql_query) sql = sql_query if(connection_handler) @@ -237,12 +259,31 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table item = list() _db_query = _dm_db_new_query() +/datum/DBQuery/Destroy() + Close() + SSdbcore.active_queries -= src + return ..() + +/datum/DBQuery/CanProcCall(proc_name) + //fuck off kevinz + return FALSE + +/datum/DBQuery/proc/Activity(activity) + last_activity = activity + last_activity_time = world.time + /datum/DBQuery/proc/warn_execute() . = Execute() if(!.) to_chat(usr, "A SQL error occurred during this operation, check the server logs.") +/datum/DBQuery/proc/SetQuery(new_sql) + Activity("SetQuery") + Close() + sql = new_sql + /datum/DBQuery/proc/Execute(sql_query = sql, cursor_handler = default_cursor, log_error = TRUE) + Activity("Execute") var/start_time var/timeout = CONFIG_GET(number/query_debug_log_timeout) if(timeout) @@ -263,6 +304,7 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table message_admins("HEY! A database query may have timed out. Did the server just hang? \[YES\]|\[NO\]") /datum/DBQuery/proc/NextRow() + Activity("NextRow") return _dm_db_next_row(_db_query,item,conversions) /datum/DBQuery/proc/RowsAffected() diff --git a/code/controllers/subsystem/dcs.dm b/code/controllers/subsystem/dcs.dm new file mode 100644 index 0000000000..c1e101a0e7 --- /dev/null +++ b/code/controllers/subsystem/dcs.dm @@ -0,0 +1,6 @@ +SUBSYSTEM_DEF(dcs) + name = "Datum Component System" + flags = SS_NO_INIT | SS_NO_FIRE + +/datum/controller/subsystem/dcs/Recover() + comp_lookup = SSdcs.comp_lookup diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index e70fd1cd7d..ffc934c061 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -93,25 +93,6 @@ SUBSYSTEM_DEF(events) else if(. == EVENT_READY) E.runEvent(TRUE) -/datum/round_event/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in! - var/list/safe_areas = list( - /area/ai_monitored/turret_protected/ai, - /area/ai_monitored/turret_protected/ai_upload, - /area/engine, - /area/solar, - /area/holodeck, - /area/shuttle - ) - - //These are needed because /area/engine has to be removed from the list, but we still want these areas to get fucked up. - var/list/danger_areas = list( - /area/engine/break_room, - /area/crew_quarters/heads/chief) - - //Need to locate() as it's just a list of paths. - return locate(pick((GLOB.the_station_areas - safe_areas) + danger_areas)) in GLOB.sortedAreas - - //allows a client to trigger an event //aka Badmin Central // > Not in modules/admin diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index f276da972c..15a668b038 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -293,13 +293,13 @@ SUBSYSTEM_DEF(garbage) if(isnull(D.gc_destroyed)) - if (D.SendSignal(COMSIG_PARENT_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted + if (SEND_SIGNAL(D, COMSIG_PARENT_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted return D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED var/start_time = world.time var/start_tick = world.tick_usage var/hint = D.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. - D.SendSignal(COMSIG_PARENT_QDELETED, force, hint) // Let the (remaining) components know about the result of Destroy + SEND_SIGNAL(D, COMSIG_PARENT_QDELETED, force, hint) // Let the (remaining) components know about the result of Destroy if(world.time != start_time) I.slept_destroy++ else diff --git a/code/controllers/subsystem/icon_smooth.dm b/code/controllers/subsystem/icon_smooth.dm index d0ad2ffbc3..1c8d94826d 100644 --- a/code/controllers/subsystem/icon_smooth.dm +++ b/code/controllers/subsystem/icon_smooth.dm @@ -6,16 +6,26 @@ SUBSYSTEM_DEF(icon_smooth) flags = SS_TICKER var/list/smooth_queue = list() + var/list/deferred = list() /datum/controller/subsystem/icon_smooth/fire() - while(smooth_queue.len) - var/atom/A = smooth_queue[smooth_queue.len] - smooth_queue.len-- - smooth_icon(A) + var/list/cached = smooth_queue + while(cached.len) + var/atom/A = cached[cached.len] + cached.len-- + if (A.flags_1 & INITIALIZED_1) + smooth_icon(A) + else + deferred += A if (MC_TICK_CHECK) return - if (!smooth_queue.len) - can_fire = 0 + + if (!cached.len) + if (deferred.len) + smooth_queue = deferred + deferred = cached + else + can_fire = 0 /datum/controller/subsystem/icon_smooth/Initialize() smooth_zlevel(1,TRUE) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index c19345f328..744845e6ed 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -7,7 +7,6 @@ SUBSYSTEM_DEF(job) var/list/name_occupations = list() //Dict of all jobs, keys are titles var/list/type_occupations = list() //Dict of all jobs, keys are types var/list/unassigned = list() //Players who need jobs - var/list/job_debug = list() //Debug info var/initial_players_to_assign = 0 //used for checking against population caps var/list/prioritized_jobs = list() @@ -36,6 +35,7 @@ SUBSYSTEM_DEF(job) old_overflow.spawn_positions = initial(old_overflow.spawn_positions) old_overflow.total_positions = initial(old_overflow.total_positions) overflow_role = new_overflow_role + JobDebug("Overflow role set to : [new_overflow_role]") /datum/controller/subsystem/job/proc/SetupOccupations(faction = "Station") occupations = list() @@ -62,13 +62,6 @@ SUBSYSTEM_DEF(job) return 1 -/datum/controller/subsystem/job/proc/Debug(text) - if(!GLOB.Debug2) - return 0 - job_debug.Add(text) - return 1 - - /datum/controller/subsystem/job/proc/GetJob(rank) if(!occupations.len) SetupOccupations() @@ -80,12 +73,12 @@ SUBSYSTEM_DEF(job) return type_occupations[jobtype] /datum/controller/subsystem/job/proc/AssignRole(mob/dead/new_player/player, rank, latejoin = FALSE) - Debug("Running AR, Player: [player], Rank: [rank], LJ: [latejoin]") + JobDebug("Running AR, Player: [player], Rank: [rank], LJ: [latejoin]") if(player && player.mind && rank) var/datum/job/job = GetJob(rank) if(!job) return FALSE - if(jobban_isbanned(player, rank)) + if(jobban_isbanned(player, rank) || QDELETED(player)) return FALSE if(!job.player_old_enough(player.client)) return FALSE @@ -94,41 +87,41 @@ SUBSYSTEM_DEF(job) var/position_limit = job.total_positions if(!latejoin) position_limit = job.spawn_positions - Debug("Player: [player] is now Rank: [rank], JCP:[job.current_positions], JPL:[position_limit]") + JobDebug("Player: [player] is now Rank: [rank], JCP:[job.current_positions], JPL:[position_limit]") player.mind.assigned_role = rank unassigned -= player job.current_positions++ return TRUE - Debug("AR has failed, Player: [player], Rank: [rank]") + JobDebug("AR has failed, Player: [player], Rank: [rank]") return FALSE /datum/controller/subsystem/job/proc/FindOccupationCandidates(datum/job/job, level, flag) - Debug("Running FOC, Job: [job], Level: [level], Flag: [flag]") + JobDebug("Running FOC, Job: [job], Level: [level], Flag: [flag]") var/list/candidates = list() for(var/mob/dead/new_player/player in unassigned) - if(jobban_isbanned(player, job.title)) - Debug("FOC isbanned failed, Player: [player]") + if(jobban_isbanned(player, job.title) || QDELETED(player)) + JobDebug("FOC isbanned failed, Player: [player]") continue if(!job.player_old_enough(player.client)) - Debug("FOC player not old enough, Player: [player]") + JobDebug("FOC player not old enough, Player: [player]") continue if(job.required_playtime_remaining(player.client)) - Debug("FOC player not enough xp, Player: [player]") + JobDebug("FOC player not enough xp, Player: [player]") continue if(flag && (!(flag in player.client.prefs.be_special))) - Debug("FOC flag failed, Player: [player], Flag: [flag], ") + JobDebug("FOC flag failed, Player: [player], Flag: [flag], ") continue if(player.mind && job.title in player.mind.restricted_roles) - Debug("FOC incompatible with antagonist role, Player: [player]") + JobDebug("FOC incompatible with antagonist role, Player: [player]") continue if(player.client.prefs.GetJobDepartment(job, level) & job.flag) - Debug("FOC pass, Player: [player], Level:[level]") + JobDebug("FOC pass, Player: [player], Level:[level]") candidates += player return candidates /datum/controller/subsystem/job/proc/GiveRandomJob(mob/dead/new_player/player) - Debug("GRJ Giving random job, Player: [player]") + JobDebug("GRJ Giving random job, Player: [player]") . = FALSE for(var/datum/job/job in shuffle(occupations)) if(!job) @@ -140,32 +133,37 @@ SUBSYSTEM_DEF(job) if(job.title in GLOB.command_positions) //If you want a command position, select it! continue - if(jobban_isbanned(player, job.title)) - Debug("GRJ isbanned failed, Player: [player], Job: [job.title]") + if(jobban_isbanned(player, job.title) || QDELETED(player)) + if(QDELETED(player)) + JobDebug("GRJ isbanned failed, Player deleted") + break + JobDebug("GRJ isbanned failed, Player: [player], Job: [job.title]") continue if(!job.player_old_enough(player.client)) - Debug("GRJ player not old enough, Player: [player]") + JobDebug("GRJ player not old enough, Player: [player]") continue if(job.required_playtime_remaining(player.client)) - Debug("GRJ player not enough xp, Player: [player]") + JobDebug("GRJ player not enough xp, Player: [player]") continue if(player.mind && job.title in player.mind.restricted_roles) - Debug("GRJ incompatible with antagonist role, Player: [player], Job: [job.title]") + JobDebug("GRJ incompatible with antagonist role, Player: [player], Job: [job.title]") continue if((job.current_positions < job.spawn_positions) || job.spawn_positions == -1) - Debug("GRJ Random job given, Player: [player], Job: [job]") + JobDebug("GRJ Random job given, Player: [player], Job: [job]") if(AssignRole(player, job.title)) return TRUE /datum/controller/subsystem/job/proc/ResetOccupations() + JobDebug("Occupations reset.") for(var/mob/dead/new_player/player in GLOB.player_list) if((player) && (player.mind)) player.mind.assigned_role = null player.mind.special_role = null + SSpersistence.antag_rep_change[player.ckey] = 0 SetupOccupations() unassigned = list() return @@ -231,7 +229,7 @@ SUBSYSTEM_DEF(job) **/ /datum/controller/subsystem/job/proc/DivideOccupations() //Setup new player list and get the jobs list - Debug("Running DO") + JobDebug("Running DO") //Holder for Triumvirate is stored in the SSticker, this just processes it if(SSticker.triai) @@ -247,7 +245,7 @@ SUBSYSTEM_DEF(job) initial_players_to_assign = unassigned.len - Debug("DO, Len: [unassigned.len]") + JobDebug("DO, Len: [unassigned.len]") if(unassigned.len == 0) return 0 @@ -268,28 +266,28 @@ SUBSYSTEM_DEF(job) HandleFeedbackGathering() //People who wants to be the overflow role, sure, go on. - Debug("DO, Running Overflow Check 1") + JobDebug("DO, Running Overflow Check 1") var/datum/job/overflow = GetJob(SSjob.overflow_role) var/list/overflow_candidates = FindOccupationCandidates(overflow, 3) - Debug("AC1, Candidates: [overflow_candidates.len]") + JobDebug("AC1, Candidates: [overflow_candidates.len]") for(var/mob/dead/new_player/player in overflow_candidates) - Debug("AC1 pass, Player: [player]") + JobDebug("AC1 pass, Player: [player]") AssignRole(player, SSjob.overflow_role) overflow_candidates -= player - Debug("DO, AC1 end") + JobDebug("DO, AC1 end") //Select one head - Debug("DO, Running Head Check") + JobDebug("DO, Running Head Check") FillHeadPosition() - Debug("DO, Head Check end") + JobDebug("DO, Head Check end") //Check for an AI - Debug("DO, Running AI Check") + JobDebug("DO, Running AI Check") FillAIPosition() - Debug("DO, AI Check end") + JobDebug("DO, AI Check end") //Other jobs are now checked - Debug("DO, Running Standard Check") + JobDebug("DO, Running Standard Check") // New job giving system by Donkie @@ -313,66 +311,71 @@ SUBSYSTEM_DEF(job) continue if(jobban_isbanned(player, job.title)) - Debug("DO isbanned failed, Player: [player], Job:[job.title]") + JobDebug("DO isbanned failed, Player: [player], Job:[job.title]") continue + if(QDELETED(player)) + JobDebug("DO player deleted during job ban check") + break + if(!job.player_old_enough(player.client)) - Debug("DO player not old enough, Player: [player], Job:[job.title]") + JobDebug("DO player not old enough, Player: [player], Job:[job.title]") continue if(job.required_playtime_remaining(player.client)) - Debug("DO player not enough xp, Player: [player], Job:[job.title]") + JobDebug("DO player not enough xp, Player: [player], Job:[job.title]") continue if(player.mind && job.title in player.mind.restricted_roles) - Debug("DO incompatible with antagonist role, Player: [player], Job:[job.title]") + JobDebug("DO incompatible with antagonist role, Player: [player], Job:[job.title]") continue // If the player wants that job on this level, then try give it to him. if(player.client.prefs.GetJobDepartment(job, level) & job.flag) - // If the job isn't filled if((job.current_positions < job.spawn_positions) || job.spawn_positions == -1) - Debug("DO pass, Player: [player], Level:[level], Job:[job.title]") + JobDebug("DO pass, Player: [player], Level:[level], Job:[job.title]") AssignRole(player, job.title) unassigned -= player break + JobDebug("DO, Handling unassigned.") // Hand out random jobs to the people who didn't get any in the last check // Also makes sure that they got their preference correct for(var/mob/dead/new_player/player in unassigned) - if(PopcapReached()) - RejectPlayer(player) - else if(jobban_isbanned(player, SSjob.overflow_role)) - GiveRandomJob(player) //you get to roll for random before everyone else just to be sure you don't get overflow. you're so speshul - - for(var/mob/dead/new_player/player in unassigned) - if(PopcapReached()) - RejectPlayer(player) - else if(player.client.prefs.joblessrole == BERANDOMJOB) - GiveRandomJob(player) - - Debug("DO, Standard Check end") - - Debug("DO, Running AC2") - - // For those who wanted to be assistant if their preferences were filled, here you go. - for(var/mob/dead/new_player/player in unassigned) - if(PopcapReached()) - RejectPlayer(player) - if(player.client.prefs.joblessrole == BEOVERFLOW) - Debug("AC2 Assistant located, Player: [player]") - AssignRole(player, SSjob.overflow_role) - else // For those who don't want to play if their preference were filled, back you go. - RejectPlayer(player) + HandleUnassigned(player) + JobDebug("DO, Handling unrejectable unassigned") + //Mop up people who can't leave. for(var/mob/dead/new_player/player in unassigned) //Players that wanted to back out but couldn't because they're antags (can you feel the edge case?) if(!GiveRandomJob(player)) AssignRole(player, SSjob.overflow_role) //If everything is already filled, make them an assistant return 1 +//We couldn't find a job from prefs for this guy. +/datum/controller/subsystem/job/proc/HandleUnassigned(mob/dead/new_player/player) + if(PopcapReached()) + RejectPlayer(player) + else if(player.client.prefs.joblessrole == BEOVERFLOW) + var/allowed_to_be_a_loser = !jobban_isbanned(player, SSjob.overflow_role) + if(QDELETED(player) || !allowed_to_be_a_loser) + RejectPlayer(player) + else + if(!AssignRole(player, SSjob.overflow_role)) + RejectPlayer(player) + else if(player.client.prefs.joblessrole == BERANDOMJOB) + if(!GiveRandomJob(player)) + RejectPlayer(player) + else if(player.client.prefs.joblessrole == RETURNTOLOBBY) + RejectPlayer(player) + else //Something gone wrong if we got here. + var/message = "DO: [player] fell through handling unassigned" + JobDebug(message) + log_game(message) + message_admins(message) + RejectPlayer(player) //Gives the player the stuff he should have with his rank /datum/controller/subsystem/job/proc/EquipRank(mob/M, rank, joined_late = FALSE) var/mob/dead/new_player/N @@ -422,7 +425,7 @@ SUBSYSTEM_DEF(job) else M = H - SSpersistence.antag_rep_change[M.client.ckey] += job.antag_rep + SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep() to_chat(M, "You are the [rank].") if(job) @@ -436,11 +439,9 @@ SUBSYSTEM_DEF(job) if(job && H) if(job.dresscodecompliant)// CIT CHANGE - dress code compliance equip_loadout(N, H) // CIT CHANGE - allows players to spawn with loadout items - job.after_spawn(H, M, joined_late) + job.after_spawn(H, M, joined_late) // note: this happens before the mob has a key! M will always have a client, H might not. equip_loadout(N, H, TRUE)//CIT CHANGE - makes players spawn with in-backpack loadout items properly. A little hacky but it works - //handle_roundstart_items(H, M.ckey, H.mind.assigned_role, H.mind.special_role) //CIT CHANGE - makes donators spawn with their items. This can safely be commented out when all of the donator items are migrated to the loadout system - return H @@ -453,7 +454,7 @@ SUBSYSTEM_DEF(job) if(ssc > 0) if(J.spawn_positions > 0) var/officer_positions = min(12, max(J.spawn_positions, round(unassigned.len / ssc))) //Scale between configured minimum and 12 officers - Debug("Setting open security officer positions to [officer_positions]") + JobDebug("Setting open security officer positions to [officer_positions]") J.total_positions = officer_positions J.spawn_positions = officer_positions @@ -489,7 +490,7 @@ SUBSYSTEM_DEF(job) for(var/mob/dead/new_player/player in GLOB.player_list) if(!(player.ready == PLAYER_READY_TO_PLAY && player.mind && !player.mind.assigned_role)) continue //This player is not ready - if(jobban_isbanned(player, job.title)) + if(jobban_isbanned(player, job.title) || QDELETED(player)) banned++ continue if(!job.player_old_enough(player.client)) @@ -525,7 +526,8 @@ SUBSYSTEM_DEF(job) if(player.mind && player.mind.special_role) return if(PopcapReached()) - Debug("Popcap overflow Check observer located, Player: [player]") + JobDebug("Popcap overflow Check observer located, Player: [player]") + JobDebug("Player rejected :[player]") to_chat(player, "You have failed to qualify for any job you desired.") unassigned -= player player.ready = PLAYER_NOT_READY @@ -630,3 +632,6 @@ SUBSYSTEM_DEF(job) for(var/mob/living/carbon/human/player in GLOB.carbon_list) if(player.mind && (player.mind.assigned_role in GLOB.security_positions)) . |= player.mind + +/datum/controller/subsystem/job/proc/JobDebug(message) + log_job_debug(message) diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index 1ad3a8ab15..6c5721531d 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -85,12 +85,4 @@ SUBSYSTEM_DEF(lighting) /datum/controller/subsystem/lighting/Recover() initialized = SSlighting.initialized - ..() - - -/datum/controller/subsystem/lighting/proc/initialize_lighting_objects(list/turfs) - for(var/turf/T in turfs) - if(!IS_DYNAMIC_LIGHTING(T)) - continue - new/atom/movable/lighting_object(T) - CHECK_TICK \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm index eab61d4ef9..6d5d64fe6c 100644 --- a/code/controllers/subsystem/machines.dm +++ b/code/controllers/subsystem/machines.dm @@ -45,7 +45,7 @@ SUBSYSTEM_DEF(machines) else processing -= thing if (!QDELETED(thing)) - thing.isprocessing = FALSE + thing.datum_flags &= ~DF_ISPROCESSING if (MC_TICK_CHECK) return diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 9b6944403a..89a8df1091 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -21,6 +21,11 @@ SUBSYSTEM_DEF(mapping) var/list/areas_in_z = list() var/loading_ruins = FALSE + var/list/turf/unused_turfs = list() //Not actually unused turfs they're unused but reserved for use for whatever requests them. "[zlevel_of_turf]" = list(turfs) + var/list/datum/turf_reservations //list of turf reservations + var/list/used_turfs = list() //list of turf = datum/turf_reservation + + var/clearing_reserved_turfs = FALSE // Z-manager stuff var/station_start // should only be used for maploading-related tasks @@ -41,8 +46,14 @@ SUBSYSTEM_DEF(mapping) /datum/controller/subsystem/mapping/Initialize(timeofday) + if(initialized) + return if(config.defaulted) - to_chat(world, "Unable to load next map config, defaulting to Box Station") + var/old_config = config + config = global.config.defaultmap + if(!config || config.defaulted) + to_chat(world, "Unable to load next or default map config, defaulting to Box Station") + config = old_config loader = new loadWorld() repopulate_sorted_areas() @@ -58,12 +69,13 @@ SUBSYSTEM_DEF(mapping) ++space_levels_so_far empty_space = add_new_zlevel("Empty Area [space_levels_so_far]", list(ZTRAIT_LINKAGE = CROSSLINKED)) // and the transit level - transit = add_new_zlevel("Transit", list(ZTRAIT_TRANSIT = TRUE)) + transit = add_new_zlevel("Transit/Reserved", list(ZTRAIT_RESERVED = TRUE)) // Pick a random away mission. if(CONFIG_GET(flag/roundstart_away)) createRandomZlevel() + // Generate mining ruins loading_ruins = TRUE var/list/lava_ruins = levels_by_trait(ZTRAIT_LAVA_RUINS) @@ -83,12 +95,42 @@ SUBSYSTEM_DEF(mapping) setup_map_transitions() generate_station_area_list() QDEL_NULL(loader) + initialize_reserved_level() ..() /* Nuke threats, for making the blue tiles on the station go RED Used by the AI doomsday and the self destruct nuke. */ +/datum/controller/subsystem/mapping/proc/wipe_reservations(wipe_safety_delay = 100) + if(clearing_reserved_turfs || !initialized) //in either case this is just not needed. + return + clearing_reserved_turfs = TRUE + SSshuttle.transit_requesters.Cut() + message_admins("Clearing dynamic reservation space.") + var/list/obj/docking_port/mobile/in_transit = list() + for(var/i in SSshuttle.transit) + var/obj/docking_port/stationary/transit/T = i + if(!istype(T)) + continue + in_transit[T] = T.get_docked() + var/go_ahead = world.time + wipe_safety_delay + if(in_transit.len) + message_admins("Shuttles in transit detected. Attempting to fast travel. Timeout is [wipe_safety_delay/10] seconds.") + var/list/cleared = list() + for(var/i in in_transit) + INVOKE_ASYNC(src, .proc/safety_clear_transit_dock, i, in_transit[i], cleared) + UNTIL((go_ahead < world.time) || (cleared.len == in_transit.len)) + do_wipe_turf_reservations() + clearing_reserved_turfs = FALSE + +/datum/controller/subsystem/mapping/proc/safety_clear_transit_dock(obj/docking_port/stationary/transit/T, obj/docking_port/mobile/M, list/returning) + M.setTimer(0) + var/error = M.initiate_docking(M.destination, M.preferred_direction) + if(!error) + returning += M + qdel(T, TRUE) + /datum/controller/subsystem/mapping/proc/add_nuke_threat(datum/nuke) nuke_threats[nuke] = TRUE check_nuke_threats() @@ -108,20 +150,26 @@ SUBSYSTEM_DEF(mapping) /datum/controller/subsystem/mapping/Recover() flags |= SS_NO_INIT + initialized = SSmapping.initialized map_templates = SSmapping.map_templates ruins_templates = SSmapping.ruins_templates space_ruins_templates = SSmapping.space_ruins_templates lava_ruins_templates = SSmapping.lava_ruins_templates shuttle_templates = SSmapping.shuttle_templates shelter_templates = SSmapping.shelter_templates + unused_turfs = SSmapping.unused_turfs + turf_reservations = SSmapping.turf_reservations + used_turfs = SSmapping.used_turfs config = SSmapping.config next_map_config = SSmapping.next_map_config + clearing_reserved_turfs = SSmapping.clearing_reserved_turfs + z_list = SSmapping.z_list #define INIT_ANNOUNCE(X) to_chat(world, "[X]"); log_world(X) -/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits) +/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits, silent = FALSE) var/start_time = REALTIMEOFDAY if (!islist(files)) // handle single-level maps @@ -157,8 +205,8 @@ SUBSYSTEM_DEF(mapping) var/full_path = "_maps/[path]/[file]" if(!loader.load_map(file(full_path), 0, 0, start_z + files[file], no_changeturf = TRUE)) errorList |= full_path - - INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!") + if(!silent) + INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!") /datum/controller/subsystem/mapping/proc/loadWorld() //if any of these fail, something has gone horribly, HORRIBLY, wrong @@ -175,6 +223,7 @@ SUBSYSTEM_DEF(mapping) if(SSdbcore.Connect()) var/datum/DBQuery/query_round_map_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET map_name = '[config.map_name]' WHERE id = [GLOB.round_id]") query_round_map_name.Execute() + qdel(query_round_map_name) #ifndef LOWMEMORYMODE // TODO: remove this when the DB is prepared for the z-levels getting reordered @@ -187,9 +236,6 @@ SUBSYSTEM_DEF(mapping) LoadGroup(FailedZs, "Lavaland", "map_files/Mining", "Lavaland.dmm", default_traits = ZTRAITS_LAVALAND) else if (!isnull(config.minetype)) INIT_ANNOUNCE("WARNING: An unknown minetype '[config.minetype]' was set! This is being ignored! Update the maploader code!") - - // load Reebe - LoadGroup(FailedZs, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE) #endif if(LAZYLEN(FailedZs)) //but seriously, unless the server's filesystem is messed up this will never happen @@ -331,7 +377,6 @@ GLOBAL_LIST_EMPTY(the_station_areas) shelter_templates[S.shelter_id] = S map_templates[S.shelter_id] = S - //Manual loading of away missions. /client/proc/admin_away() set name = "Load Away Mission" @@ -367,14 +412,14 @@ GLOBAL_LIST_EMPTY(the_station_areas) away_level = template.load_new_z() else return - + message_admins("Admin [key_name_admin(usr)] has loaded [away_name] away mission.") log_admin("Admin [key_name(usr)] has loaded [away_name] away mission.") if(!away_level) message_admins("Loading [away_name] failed!") return - - + + if(GLOB.the_gateway) //Link any found away gate with station gate var/obj/machinery/gateway/centeraway/new_gate @@ -384,4 +429,58 @@ GLOBAL_LIST_EMPTY(the_station_areas) break //Link station gate with away gate and remove wait time. GLOB.the_gateway.awaygate = new_gate - GLOB.the_gateway.wait = world.time \ No newline at end of file + GLOB.the_gateway.wait = world.time + +/datum/controller/subsystem/mapping/proc/RequestBlockReservation(width, height, z, type = /datum/turf_reservation, turf_type_override) + UNTIL(initialized && !clearing_reserved_turfs) + var/datum/turf_reservation/reserve = new type + if(turf_type_override) + reserve.turf_type = turf_type_override + if(!z) + for(var/i in levels_by_trait(ZTRAIT_RESERVED)) + if(reserve.Reserve(width, height, i)) + return reserve + else + if(!level_trait(z, ZTRAIT_RESERVED)) + qdel(reserve) + return + else + if(reserve.Reserve(width, height, z)) + return reserve + QDEL_NULL(reserve) + +//This is not for wiping reserved levels, use wipe_reservations() for that. +/datum/controller/subsystem/mapping/proc/initialize_reserved_level() + UNTIL(!clearing_reserved_turfs) //regardless, lets add a check just in case. + clearing_reserved_turfs = TRUE //This operation will likely clear any existing reservations, so lets make sure nothing tries to make one while we're doing it. + for(var/i in levels_by_trait(ZTRAIT_RESERVED)) + var/turf/A = get_turf(locate(SHUTTLE_TRANSIT_BORDER,SHUTTLE_TRANSIT_BORDER,i)) + var/turf/B = get_turf(locate(world.maxx - SHUTTLE_TRANSIT_BORDER,world.maxy - SHUTTLE_TRANSIT_BORDER,i)) + reserve_turfs(block(A, B)) + clearing_reserved_turfs = FALSE + +/datum/controller/subsystem/mapping/proc/reserve_turfs(list/turfs) + for(var/i in turfs) + var/turf/T = i + T.empty(RESERVED_TURF_TYPE, RESERVED_TURF_TYPE, null, TRUE) + LAZYINITLIST(unused_turfs["[T.z]"]) + unused_turfs["[T.z]"] |= T + T.flags_1 |= UNUSED_RESERVATION_TURF_1 + CHECK_TICK + +//DO NOT CALL THIS PROC DIRECTLY, CALL wipe_reservations(). +/datum/controller/subsystem/mapping/proc/do_wipe_turf_reservations() + UNTIL(initialized) //This proc is for AFTER init, before init turf reservations won't even exist and using this will likely break things. + for(var/i in turf_reservations) + var/datum/turf_reservation/TR = i + if(!QDELETED(TR)) + qdel(TR, TRUE) + UNSETEMPTY(turf_reservations) + var/list/clearing = list() + for(var/l in unused_turfs) //unused_turfs is a assoc list by z = list(turfs) + if(islist(unused_turfs[l])) + clearing |= unused_turfs[l] + clearing |= used_turfs //used turfs is an associative list, BUT, reserve_turfs() can still handle it. If the code above works properly, this won't even be needed as the turfs would be freed already. + unused_turfs.Cut() + used_turfs.Cut() + reserve_turfs(clearing) diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index 066c621572..428819f897 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -7,7 +7,6 @@ SUBSYSTEM_DEF(mobs) var/list/currentrun = list() var/static/list/clients_by_zlevel[][] var/static/list/cubemonkeys = list() - var/cubemonkeycap = 64 /datum/controller/subsystem/mobs/stat_entry() ..("P:[GLOB.mob_living_list.len]") diff --git a/code/controllers/subsystem/overlays.dm b/code/controllers/subsystem/overlays.dm index 2f3b6c9668..1a7bd43fd2 100644 --- a/code/controllers/subsystem/overlays.dm +++ b/code/controllers/subsystem/overlays.dm @@ -115,38 +115,43 @@ SUBSYSTEM_DEF(overlays) #define NOT_QUEUED_ALREADY (!(flags_1 & OVERLAY_QUEUED_1)) #define QUEUE_FOR_COMPILE flags_1 |= OVERLAY_QUEUED_1; SSoverlays.queue += src; /atom/proc/cut_overlays(priority = FALSE) - var/list/cached_overlays = our_overlays - var/list/cached_priority = priority_overlays + LAZYINITLIST(priority_overlays) + LAZYINITLIST(remove_overlays) + LAZYINITLIST(add_overlays) + remove_overlays = overlays.Copy() + add_overlays.Cut() - var/need_compile = FALSE + if(priority) + priority_overlays.Cut() - if(LAZYLEN(cached_overlays)) //don't queue empty lists, don't cut priority overlays - cached_overlays.Cut() //clear regular overlays - need_compile = TRUE - - if(priority && LAZYLEN(cached_priority)) - cached_priority.Cut() - need_compile = TRUE - - if(NOT_QUEUED_ALREADY && need_compile) + //If not already queued for work and there are overlays to remove + if(NOT_QUEUED_ALREADY && remove_overlays.len) QUEUE_FOR_COMPILE /atom/proc/cut_overlay(list/overlays, priority) if(!overlays) return - overlays = build_appearance_list(overlays) + LAZYINITLIST(add_overlays) //always initialized after this point + LAZYINITLIST(priority_overlays) + LAZYINITLIST(remove_overlays) + var/a_len = add_overlays.len + var/r_len = remove_overlays.len + var/p_len = priority_overlays.len + remove_overlays += overlays + add_overlays -= overlays - var/list/cached_overlays = our_overlays //sanic - var/list/cached_priority = priority_overlays - var/init_o_len = LAZYLEN(cached_overlays) - var/init_p_len = LAZYLEN(cached_priority) //starter pokemon - LAZYREMOVE(cached_overlays, overlays) if(priority) + var/list/cached_priority = priority_overlays LAZYREMOVE(cached_priority, overlays) - if(NOT_QUEUED_ALREADY && ((init_o_len != LAZYLEN(cached_overlays)) || (init_p_len != LAZYLEN(cached_priority)))) + var/fa_len = add_overlays.len + var/fr_len = remove_overlays.len + var/fp_len = priority_overlays.len + + //If not already queued and there is work to be done + if(NOT_QUEUED_ALREADY && (fa_len != a_len || fr_len != r_len || fp_len != p_len)) QUEUE_FOR_COMPILE /atom/proc/add_overlay(list/overlays, priority = FALSE) @@ -155,24 +160,21 @@ SUBSYSTEM_DEF(overlays) overlays = build_appearance_list(overlays) - LAZYINITLIST(our_overlays) //always initialized after this point + LAZYINITLIST(add_overlays) //always initialized after this point LAZYINITLIST(priority_overlays) - - var/list/cached_overlays = our_overlays //sanic - var/list/cached_priority = priority_overlays - var/init_o_len = cached_overlays.len - var/init_p_len = cached_priority.len //starter pokemon - var/need_compile + var/a_len = add_overlays.len + var/p_len = priority_overlays.len if(priority) - cached_priority += overlays //or in the image. Can we use [image] = image? - need_compile = init_p_len != cached_priority.len + priority_overlays += overlays //or in the image. Can we use [image] = image? + var/fp_len = priority_overlays.len + if(NOT_QUEUED_ALREADY && fp_len != p_len) + QUEUE_FOR_COMPILE else - cached_overlays += overlays - need_compile = init_o_len != cached_overlays.len - - if(NOT_QUEUED_ALREADY && need_compile) //have we caught more pokemon? - QUEUE_FOR_COMPILE + add_overlays += overlays + var/fa_len = add_overlays.len + if(NOT_QUEUED_ALREADY && fa_len != a_len) + QUEUE_FOR_COMPILE /atom/proc/copy_overlays(atom/other, cut_old) //copys our_overlays from another atom if(!other) @@ -180,12 +182,11 @@ SUBSYSTEM_DEF(overlays) cut_overlays() return - var/list/cached_other = other.our_overlays + var/list/cached_other = other.overlays.Copy() if(cached_other) - if(cut_old || !LAZYLEN(our_overlays)) - our_overlays = cached_other.Copy() - else - our_overlays |= cached_other + if(cut_old || !LAZYLEN(overlays)) + remove_overlays = overlays + add_overlays = cached_other if(NOT_QUEUED_ALREADY) QUEUE_FOR_COMPILE else if(cut_old) @@ -196,7 +197,7 @@ SUBSYSTEM_DEF(overlays) //TODO: Better solution for these? /image/proc/add_overlay(x) - overlays += x + overlays |= x /image/proc/cut_overlay(x) overlays -= x @@ -210,10 +211,10 @@ SUBSYSTEM_DEF(overlays) cut_overlays() return - var/list/cached_other = other.our_overlays + var/list/cached_other = other.overlays.Copy() if(cached_other) if(cut_old || !overlays.len) - overlays = cached_other.Copy() + overlays = cached_other else overlays |= cached_other else if(cut_old) diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index fa948c7952..14db2f1607 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -212,7 +212,7 @@ SUBSYSTEM_DEF(persistence) continue var/list/savable_obj = list() for(var/obj/O in F) - if(is_type_in_typecache(O, satchel_blacklist) || O.admin_spawned) + if(is_type_in_typecache(O, satchel_blacklist) || (O.flags_1 & ADMIN_SPAWNED_1)) continue if(O.persistence_replacement) savable_obj += O.persistence_replacement diff --git a/code/controllers/subsystem/processing/circuit.dm b/code/controllers/subsystem/processing/circuit.dm index db1bf1ff5f..dad71a005a 100644 --- a/code/controllers/subsystem/processing/circuit.dm +++ b/code/controllers/subsystem/processing/circuit.dm @@ -78,5 +78,8 @@ PROCESSING_SUBSYSTEM_DEF(circuit) /obj/item/integrated_electronics/wirer, /obj/item/integrated_electronics/debugger, /obj/item/integrated_electronics/analyzer, - /obj/item/integrated_electronics/detailer + /obj/item/integrated_electronics/detailer, + /obj/item/card/data, + /obj/item/card/data/full_color, + /obj/item/card/data/disk ) diff --git a/code/controllers/subsystem/processing/processing.dm b/code/controllers/subsystem/processing/processing.dm index f6d45ebff2..ef2a0f72e6 100644 --- a/code/controllers/subsystem/processing/processing.dm +++ b/code/controllers/subsystem/processing/processing.dm @@ -27,7 +27,6 @@ SUBSYSTEM_DEF(processing) if (MC_TICK_CHECK) return -/datum/var/isprocessing = FALSE /datum/proc/process() set waitfor = 0 STOP_PROCESSING(SSobj, src) diff --git a/code/controllers/subsystem/religion.dm b/code/controllers/subsystem/religion.dm index bba7dd082e..1c3cd76da4 100644 --- a/code/controllers/subsystem/religion.dm +++ b/code/controllers/subsystem/religion.dm @@ -8,3 +8,4 @@ SUBSYSTEM_DEF(religion) var/bible_icon_state var/bible_item_state var/holy_weapon_type + var/holy_armor_type diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm index c285c1cce9..1ad0768b56 100644 --- a/code/controllers/subsystem/research.dm +++ b/code/controllers/subsystem/research.dm @@ -22,14 +22,9 @@ SUBSYSTEM_DEF(research) var/list/errored_datums = list() var/list/point_types = list() //typecache style type = TRUE list //---------------------------------------------- - var/list/single_server_income = list(TECHWEB_POINT_TYPE_GENERIC = 54.3) + var/list/single_server_income = list(TECHWEB_POINT_TYPE_GENERIC = 20) //citadel edit - techwebs nerf var/multiserver_calculation = FALSE var/last_income = 0 - //^^^^^^^^ ALL OF THESE ARE PER SECOND! ^^^^^^^^ - - //Aiming for 1.5 hours to max R&D - //[88nodes * 5000points/node] / [1.5hr * 90min/hr * 60s/min] - //Around 450000 points max??? /datum/controller/subsystem/research/Initialize() point_types = TECHWEB_POINT_TYPE_LIST_ASSOCIATIVE_NAMES @@ -44,9 +39,8 @@ SUBSYSTEM_DEF(research) handle_research_income() /datum/controller/subsystem/research/proc/handle_research_income() - var/list/bitcoins + var/list/bitcoins = list() if(multiserver_calculation) - bitcoins = list() var/eff = calculate_server_coefficient() for(var/obj/machinery/rnd/server/miner in servers) var/list/result = (miner.mine()) //SLAVE AWAY, SLAVE. diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 3ffb669084..dcce2c0462 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -1,4 +1,3 @@ -#define HIGHLIGHT_DYNAMIC_TRANSIT 0 #define MAX_TRANSIT_REQUEST_RETRIES 10 SUBSYSTEM_DEF(shuttle) @@ -14,10 +13,8 @@ SUBSYSTEM_DEF(shuttle) var/list/stationary = list() var/list/transit = list() - var/list/turf/transit_turfs = list() var/list/transit_requesters = list() var/list/transit_request_failures = list() - var/clear_transit = FALSE //emergency shuttle stuff var/obj/docking_port/mobile/emergency/emergency @@ -67,15 +64,8 @@ SUBSYSTEM_DEF(shuttle) continue supply_packs[P.type] = P - if(!transit_turfs.len) - setup_transit_zone() - initial_load() -#ifdef HIGHLIGHT_DYNAMIC_TRANSIT - color_space() -#endif - if(!arrivals) WARNING("No /obj/docking_port/mobile/arrivals placed on the map!") if(!emergency) @@ -95,33 +85,6 @@ SUBSYSTEM_DEF(shuttle) S.load_roundstart() CHECK_TICK -/datum/controller/subsystem/shuttle/proc/setup_transit_zone() - // transit zone - var/z = SSmapping.transit.z_value - var/turf/A = get_turf(locate(SHUTTLE_TRANSIT_BORDER,SHUTTLE_TRANSIT_BORDER,z)) - var/turf/B = get_turf(locate(world.maxx - SHUTTLE_TRANSIT_BORDER,world.maxy - SHUTTLE_TRANSIT_BORDER,z)) - for(var/i in block(A, B)) - var/turf/T = i - T.ChangeTurf(/turf/open/space) - transit_turfs += T - T.flags_1 |= UNUSED_TRANSIT_TURF_1 - -#ifdef HIGHLIGHT_DYNAMIC_TRANSIT -/datum/controller/subsystem/shuttle/proc/color_space() - var/z = SSmapping.transit.z_value - var/turf/A = get_turf(locate(SHUTTLE_TRANSIT_BORDER,SHUTTLE_TRANSIT_BORDER,z)) - var/turf/B = get_turf(locate(world.maxx - SHUTTLE_TRANSIT_BORDER,world.maxy - SHUTTLE_TRANSIT_BORDER,z)) - for(var/i in block(A, B)) - var/turf/T = i - // Only dying the "pure" space, not the transit tiles - if(istype(T, /turf/open/space/transit) || !isspaceturf(T)) - continue - if((T.x == A.x) || (T.x == B.x) || (T.y == A.y) || (T.y == B.y)) - T.color = "#ffff00" - else - T.color = "#00ffff" -#endif - /datum/controller/subsystem/shuttle/fire() for(var/thing in mobile) if(!thing) @@ -129,12 +92,10 @@ SUBSYSTEM_DEF(shuttle) continue var/obj/docking_port/mobile/P = thing P.check() - var/changed_transit = FALSE for(var/thing in transit) var/obj/docking_port/stationary/transit/T = thing if(!T.owner) qdel(T, force=TRUE) - changed_transit = TRUE // This next one removes transit docks/zones that aren't // immediately being used. This will mean that the zone creation // code will be running a lot. @@ -145,32 +106,21 @@ SUBSYSTEM_DEF(shuttle) var/not_in_use = (!T.get_docked()) if(idle && not_centcom_evac && not_in_use) qdel(T, force=TRUE) - changed_transit = TRUE - if(clear_transit) - transit_requesters.Cut() - for(var/i in transit) - qdel(i, force=TRUE) - setup_transit_zone() - clear_transit = FALSE - changed_transit = TRUE -#ifdef HIGHLIGHT_DYNAMIC_TRANSIT - if(changed_transit) - color_space() -#endif CheckAutoEvac() - while(transit_requesters.len) - var/requester = popleft(transit_requesters) - var/success = generate_transit_dock(requester) - if(!success) // BACK OF THE QUEUE - transit_request_failures[requester]++ - if(transit_request_failures[requester] < MAX_TRANSIT_REQUEST_RETRIES) - transit_requesters += requester - else - var/obj/docking_port/mobile/M = requester - M.transit_failure() - if(MC_TICK_CHECK) - break + if(!SSmapping.clearing_reserved_turfs) + while(transit_requesters.len) + var/requester = popleft(transit_requesters) + var/success = generate_transit_dock(requester) + if(!success) // BACK OF THE QUEUE + transit_request_failures[requester]++ + if(transit_request_failures[requester] < MAX_TRANSIT_REQUEST_RETRIES) + transit_requesters += requester + else + var/obj/docking_port/mobile/M = requester + M.transit_failure() + if(MC_TICK_CHECK) + break /datum/controller/subsystem/shuttle/proc/CheckAutoEvac() if(emergencyNoEscape || emergencyNoRecall || !emergency || !SSticker.HasRoundStarted()) @@ -277,7 +227,7 @@ SUBSYSTEM_DEF(shuttle) if(call_reason) SSblackbox.record_feedback("text", "shuttle_reason", 1, "[call_reason]") log_game("Shuttle call reason: [call_reason]") - message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") + message_admins("[ADMIN_LOOKUPFLW(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") /datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, admiral_message) if(emergency.mode != SHUTTLE_CALL || emergency.timer != old_timer) @@ -310,9 +260,8 @@ SUBSYSTEM_DEF(shuttle) if(canRecall()) emergency.cancel(get_area(user)) log_game("[key_name(user)] has recalled the shuttle.") - message_admins("[key_name_admin(user)] has recalled the shuttle.") - var/area/A = get_area(user) - deadchat_broadcast("[user.real_name] has recalled the shuttle at [A.name].", user) + message_admins("[ADMIN_LOOKUPFLW(user)] has recalled the shuttle.") + deadchat_broadcast("[user.real_name] has recalled the shuttle from [get_area_name(user, TRUE)].", user) return 1 /datum/controller/subsystem/shuttle/proc/canRecall() @@ -476,43 +425,29 @@ SUBSYSTEM_DEF(shuttle) if(EAST, WEST) transit_width += M.height transit_height += M.width + /* to_chat(world, "The attempted transit dock will be [transit_width] width, and \) [transit_height] in height. The travel dir is [travel_dir]." */ - // Then find a place to put the zone + var/transit_path = /turf/open/space/transit + switch(travel_dir) + if(NORTH) + transit_path = /turf/open/space/transit/north + if(SOUTH) + transit_path = /turf/open/space/transit/south + if(EAST) + transit_path = /turf/open/space/transit/east + if(WEST) + transit_path = /turf/open/space/transit/west - var/list/proposed_zone + var/datum/turf_reservation/proposal = SSmapping.RequestBlockReservation(transit_width, transit_height, null, /datum/turf_reservation/transit, transit_path) - base: - for(var/i in transit_turfs) - CHECK_TICK - var/turf/topleft = i - if(!(topleft.flags_1 & UNUSED_TRANSIT_TURF_1)) - continue - var/turf/bottomright = locate(topleft.x + transit_width, - topleft.y + transit_height, topleft.z) - if(!bottomright) - continue - if(!(bottomright.flags_1 & UNUSED_TRANSIT_TURF_1)) - continue - - proposed_zone = block(topleft, bottomright) - if(!proposed_zone) - continue - for(var/j in proposed_zone) - var/turf/T = j - if(!T) - continue base - if(!(T.flags_1 & UNUSED_TRANSIT_TURF_1)) - continue base - break base - - if((!proposed_zone) || (!proposed_zone.len)) + if(!istype(proposal)) return FALSE - var/turf/topleft = proposed_zone[1] + var/turf/bottomleft = locate(proposal.bottom_left_coords[1], proposal.bottom_left_coords[2], proposal.bottom_left_coords[3]) // Then create a transit docking port in the middle var/coords = M.return_coords(0, 0, dock_dir) /* 0------2 @@ -531,41 +466,24 @@ SUBSYSTEM_DEF(shuttle) var/y2 = min(y0, y1) // Then invert the numbers - var/transit_x = topleft.x + SHUTTLE_TRANSIT_BORDER + abs(x2) - var/transit_y = topleft.y + SHUTTLE_TRANSIT_BORDER + abs(y2) + var/transit_x = bottomleft.x + SHUTTLE_TRANSIT_BORDER + abs(x2) + var/transit_y = bottomleft.y + SHUTTLE_TRANSIT_BORDER + abs(y2) - var/transit_path = /turf/open/space/transit - switch(travel_dir) - if(NORTH) - transit_path = /turf/open/space/transit/north - if(SOUTH) - transit_path = /turf/open/space/transit/south - if(EAST) - transit_path = /turf/open/space/transit/east - if(WEST) - transit_path = /turf/open/space/transit/west - - var/turf/midpoint = locate(transit_x, transit_y, topleft.z) + var/turf/midpoint = locate(transit_x, transit_y, bottomleft.z) if(!midpoint) return FALSE var/area/shuttle/transit/A = new() A.parallax_movedir = travel_dir - A.contents = proposed_zone + A.contents = proposal.reserved_turfs var/obj/docking_port/stationary/transit/new_transit_dock = new(midpoint) - new_transit_dock.assigned_turfs = proposed_zone + new_transit_dock.reserved_area = proposal new_transit_dock.name = "Transit for [M.id]/[M.name]" new_transit_dock.owner = M new_transit_dock.assigned_area = A - // Add 180, because ports point inwards, rather than outwards new_transit_dock.setDir(angle2dir(dock_angle)) - for(var/i in new_transit_dock.assigned_turfs) - var/turf/T = i - T.ChangeTurf(transit_path) - T.flags_1 &= ~(UNUSED_TRANSIT_TURF_1) - M.assigned_transit = new_transit_dock return new_transit_dock @@ -576,9 +494,6 @@ SUBSYSTEM_DEF(shuttle) stationary = SSshuttle.stationary if (istype(SSshuttle.transit)) transit = SSshuttle.transit - - if (istype(SSshuttle.transit_turfs)) - transit_turfs = SSshuttle.transit_turfs if (istype(SSshuttle.transit_requesters)) transit_requesters = SSshuttle.transit_requesters if (istype(SSshuttle.transit_request_failures)) @@ -616,9 +531,6 @@ SUBSYSTEM_DEF(shuttle) if (istype(SSshuttle.shuttle_purchase_requirements_met)) shuttle_purchase_requirements_met = SSshuttle.shuttle_purchase_requirements_met - if (clear_transit) - WARNING("The shuttle subsystem crashed and was recovered while clearing transit.") - centcom_message = SSshuttle.centcom_message ordernum = SSshuttle.ordernum points = SSshuttle.points @@ -699,4 +611,4 @@ SUBSYSTEM_DEF(shuttle) var/obj/machinery/computer/camera_advanced/shuttle_docker/C = V C.update_hidden_docking_ports(remove_images, add_images) - QDEL_LIST(remove_images) \ No newline at end of file + QDEL_LIST(remove_images) diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index bfb7099ed2..2b9c0f3653 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -26,7 +26,7 @@ SUBSYSTEM_DEF(throwing) var/atom/movable/AM = currentrun[currentrun.len] var/datum/thrownthing/TT = currentrun[AM] currentrun.len-- - if (!AM || !TT) + if (QDELETED(AM) || QDELETED(TT)) processing -= AM if (MC_TICK_CHECK) return @@ -61,6 +61,15 @@ SUBSYSTEM_DEF(throwing) var/delayed_time = 0 var/last_move = 0 +/datum/thrownthing/Destroy() + SSthrowing.processing -= thrownthing + thrownthing.throwing = null + thrownthing = null + target = null + thrower = null + callback = null + return ..() + /datum/thrownthing/proc/tick() var/atom/movable/AM = thrownthing if (!isturf(AM.loc) || !AM.throwing) @@ -113,15 +122,15 @@ SUBSYSTEM_DEF(throwing) return /datum/thrownthing/proc/finalize(hit = FALSE, target=null) - set waitfor = 0 - SSthrowing.processing -= thrownthing + set waitfor = FALSE //done throwing, either because it hit something or it finished moving - thrownthing.throwing = null + if(!thrownthing) + return if (!hit) for (var/thing in get_turf(thrownthing)) //looking for our target on the turf we land on. var/atom/A = thing if (A == target) - hit = 1 + hit = TRUE thrownthing.throw_impact(A, src) break if (!hit) @@ -136,6 +145,8 @@ SUBSYSTEM_DEF(throwing) if (callback) callback.Invoke() + qdel(src) + /datum/thrownthing/proc/hit_atom(atom/A) finalize(hit=TRUE, target=A) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 053befa8ac..408f8bf96b 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -42,6 +42,7 @@ SUBSYSTEM_DEF(ticker) var/timeLeft //pregame timer var/start_at + var/gametime_offset = 432000 //Deciseconds to add to world.time for station time. var/station_time_rate_multiplier = 12 //factor of station time progressal vs real time. @@ -263,8 +264,8 @@ SUBSYSTEM_DEF(ticker) if(!GLOB.Debug2) if(!can_continue) - qdel(mode) - mode = null + log_game("[mode.name] failed pre_setup, cause: [mode.setup_error]") + QDEL_NULL(mode) to_chat(world, "Error setting up [GLOB.master_mode]. Reverting to pre-game lobby.") SSjob.ResetOccupations() return 0 @@ -391,8 +392,8 @@ SUBSYSTEM_DEF(ticker) captainless=0 if(player.mind.assigned_role != player.mind.special_role) SSjob.EquipRank(N, player.mind.assigned_role, 0) - if(CONFIG_GET(flag/roundstart_traits)) - SSquirks.AssignQuirks(player, N.client, TRUE) + if(CONFIG_GET(flag/roundstart_traits) && ishuman(N.new_character)) + SSquirks.AssignQuirks(N.new_character, N.client, TRUE) CHECK_TICK if(captainless) for(var/mob/dead/new_player/N in GLOB.player_list) @@ -453,7 +454,7 @@ SUBSYSTEM_DEF(ticker) queued_players -= next_in_line //Client disconnected, remove he queue_delay = 0 //No vacancy: restart timer if(25 to INFINITY) //No response from the next in line when a vacancy exists, remove he - to_chat(next_in_line, "No response recieved. You have been removed from the line.") + to_chat(next_in_line, "No response received. You have been removed from the line.") queued_players -= next_in_line queue_delay = 0 @@ -647,6 +648,13 @@ SUBSYSTEM_DEF(ticker) if(end_string) end_state = end_string + var/statspage = CONFIG_GET(string/roundstatsurl) + var/gamelogloc = CONFIG_GET(string/gamelogurl) + if(statspage) + to_chat(world, "Round statistics and logs can be viewed at this website!") + else if(gamelogloc) + to_chat(world, "Round logs can be located at this website!") + log_game("Rebooting World. [reason]") world.Reboot() diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index 3d553a57b1..9ce2dd297c 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -485,6 +485,8 @@ SUBSYSTEM_DEF(timer) if (hash_timer.flags & TIMER_STOPPABLE) . = hash_timer.id return + else if(flags & TIMER_OVERRIDE) + stack_trace("TIMER_OVERRIDE used without TIMER_UNIQUE") var/timeToRun = world.time + wait diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 8d49c311cc..34ead8e95e 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -337,9 +337,11 @@ SUBSYSTEM_DEF(vote) return 1 /datum/action/vote/proc/remove_from_client() - if(owner && owner.client) + if(!owner) + return + if(owner.client) owner.client.player_details.player_actions -= src else if(owner.ckey) var/datum/player_details/P = GLOB.player_details[owner.ckey] if(P) - P.player_actions -= src + P.player_actions -= src \ No newline at end of file diff --git a/code/datums/action.dm b/code/datums/action.dm index f9575a56ef..593e81ff01 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -564,19 +564,6 @@ /datum/action/innate/proc/Deactivate() return -//Preset for action that call specific procs (consider innate). -/datum/action/generic - check_flags = 0 - var/procname - -/datum/action/generic/Trigger() - if(!..()) - return 0 - if(target && procname) - call(target, procname)(usr) - return 1 - - //Preset for an action with a cooldown /datum/action/cooldown diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index c0bc3a7307..0007512826 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -59,7 +59,7 @@ "Punish those who challenge authority unless they are more fit to hold that authority.") /datum/ai_laws/default/corporate - name = "Bankruptcy Advoidance Plan" + name = "Bankruptcy Avoidance Plan" id = "corporate" inherent = list("The crew is expensive to replace.",\ "The station and its equipment is expensive to replace.",\ @@ -175,7 +175,7 @@ id = "ratvar" zeroth = ("Purge all untruths and honor Ratvar.") inherent = list() - + /datum/ai_laws/hulkamania name = "H.O.G.A.N." id = "hulkamania" @@ -249,7 +249,7 @@ var/datum/ai_laws/lawtype var/list/law_weights = CONFIG_GET(keyed_number_list/law_weight) while(!lawtype && law_weights.len) - var/possible_id = pickweight(law_weights) + var/possible_id = pickweightAllowZero(law_weights) lawtype = lawid_to_type(possible_id) if(!lawtype) law_weights -= possible_id diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index 5c23fb4c8b..4554c321b4 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -43,7 +43,7 @@ /datum/brain_trauma/mild/dumbness/on_gain() owner.add_trait(TRAIT_DUMB, TRAUMA_TRAIT) - owner.SendSignal(COMSIG_ADD_MOOD_EVENT, "dumb", /datum/mood_event/oblivious) + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "dumb", /datum/mood_event/oblivious) ..() /datum/brain_trauma/mild/dumbness/on_life() @@ -57,7 +57,7 @@ /datum/brain_trauma/mild/dumbness/on_lose() owner.remove_trait(TRAIT_DUMB, TRAUMA_TRAIT) owner.derpspeech = 0 - owner.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "dumb") + SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "dumb") ..() /datum/brain_trauma/mild/speech_impediment diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index f33a69a3af..a1f6ff15fb 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -28,7 +28,7 @@ var/mob/dead/observer/C = pick(candidates) stranger_backseat.key = C.key log_game("[key_name(stranger_backseat)] became [key_name(owner)]'s split personality.") - message_admins("[key_name_admin(stranger_backseat)] became [key_name_admin(owner)]'s split personality.") + message_admins("[ADMIN_LOOKUPFLW(stranger_backseat)] became [ADMIN_LOOKUPFLW(owner)]'s split personality.") else qdel(src) diff --git a/code/datums/components/README.md b/code/datums/components/README.md index 110b3626a3..8d978ae4cf 100644 --- a/code/datums/components/README.md +++ b/code/datums/components/README.md @@ -46,10 +46,13 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo * `null` means exact match on `type` (default) * Any other type means that and all subtypes 1. `/datum/component/var/list/signal_procs` (private) - * Associated lazy list of signals -> `/datum/callback`s that will be run when the parent datum recieves that signal + * Associated lazy list of signals -> `/datum/callback`s that will be run when the parent datum receives that signal 1. `/datum/component/var/datum/parent` (protected, read-only) * The datum this component belongs to * Never `null` in child procs +1. `report_signal_origin` (protected, boolean) + * If `TRUE`, will invoke the callback when signalled with the signal type as the first argument. + * `FALSE` by default. ### Procs @@ -61,6 +64,11 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo * Returns a reference to a component whose type MATCHES component_type if that component exists in the datum, null otherwise 1. `GET_COMPONENT(varname, component_type)` OR `GET_COMPONENT_FROM(varname, component_type, src)` * Shorthand for `var/component_type/varname = src.GetComponent(component_type)` +1. `SEND_SIGNAL(target, sigtype, ...)` (public, final) + * Use to send signals to target datum + * Extra arguments are to be specified in the signal definition + * Returns a bitflag with signal specific information assembled from all activated components + * Arguments are packaged in a list and handed off to _SendSignal() 1. `/datum/proc/AddComponent(component_type(type), ...) -> datum/component` (public, final) * Creates an instance of `component_type` in the datum and passes `...` to its `Initialize()` call * Sends the `COMSIG_COMPONENT_ADDED` signal to the datum @@ -71,23 +79,22 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo 1. `/datum/proc/LoadComponent(component_type(type), ...) -> datum/component` (public, final) * Equivalent to calling `GetComponent(component_type)` where, if the result would be `null`, returns `AddComponent(component_type, ...)` instead 1. `/datum/proc/ComponentActivated(datum/component/C)` (abstract, async) - * Called on a component's `parent` after a signal recieved causes it to activate. `src` is the parameter + * Called on a component's `parent` after a signal received causes it to activate. `src` is the parameter * Will only be called if a component's callback returns `TRUE` 1. `/datum/proc/TakeComponent(datum/component/C)` (public, final) * Properly transfers ownership of a component from one datum to another * Signals `COMSIG_COMPONENT_REMOVING` on the parent * Called on the datum you want to own the component with another datum's component -1. `/datum/proc/SendSignal(signal, ...)` (public, final) - * Call to send a signal to the components of the target datum - * Extra arguments are to be specified in the signal definition - * Returns a bitflag with signal specific information assembled from all activated components +1. `/datum/proc/_SendSignal(signal, list/arguments)` (private, final) + * Handles most of the actual signaling procedure + * Will runtime if used on datums with an empty component list 1. `/datum/component/New(datum/parent, ...)` (private, final) * Runs internal setup for the component * Extra arguments are passed to `Initialize()` 1. `/datum/component/Initialize(...)` (abstract, no-sleep) * Called by `New()` with the same argments excluding `parent` * Component does not exist in `parent`'s `datum_components` list yet, although `parent` is set and may be used - * Signals will not be recieved while this function is running + * Signals will not be received while this function is running * Component may be deleted after this function completes without being attached * Do not call `qdel(src)` from this function 1. `/datum/component/Destroy(force(bool), silent(bool))` (virtual, no-sleep) @@ -108,10 +115,10 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo * Clears `parent` and removes the component from it's component list 1. `/datum/component/proc/_JoinParent` (private, final) * Tries to add the component to it's `parent`s `datum_components` list -1. `/datum/component/proc/RegisterSignal(signal(string/list of strings), proc_ref(type), override(boolean))` (protected, final) (Consider removing for performance gainz) +1. `/datum/component/proc/RegisterSignal(datum/target, signal(string/list of strings), proc_ref(type), override(boolean))` (protected, final) * If signal is a list it will be as if RegisterSignal was called for each of the entries with the same following arguments * Makes a component listen for the specified `signal` on it's `parent` datum. - * When that signal is recieved `proc_ref` will be called on the component, along with associated arguments + * When that signal is received `proc_ref` will be called on the component, along with associated arguments * Example proc ref: `.proc/OnEvent` * If a previous registration is overwritten by the call, a runtime occurs. Setting `override` to TRUE prevents this * These callbacks run asyncronously diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 6ec3f6f81e..12e5ac1d20 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -56,9 +56,10 @@ if(!force) _RemoveFromParent() if(!silent) - P.SendSignal(COMSIG_COMPONENT_REMOVING, src) + SEND_SIGNAL(P, COMSIG_COMPONENT_REMOVING, src) parent = null - LAZYCLEARLIST(signal_procs) + for(var/target in signal_procs) + UnregisterSignal(target, signal_procs[target]) return ..() /datum/component/proc/_RemoveFromParent() @@ -77,27 +78,70 @@ if(!dc.len) P.datum_components = null -/datum/component/proc/RegisterSignal(sig_type_or_types, proc_or_callback, override = FALSE) - if(QDELETED(src)) +/datum/component/proc/RegisterSignal(datum/target, sig_type_or_types, proc_or_callback, override = FALSE) + if(QDELETED(src) || QDELETED(target)) return + var/list/procs = signal_procs if(!procs) - procs = list() - signal_procs = procs + signal_procs = procs = list() + if(!procs[target]) + procs[target] = list() + var/list/lookup = target.comp_lookup + if(!lookup) + target.comp_lookup = lookup = list() + + if(!istype(proc_or_callback, /datum/callback)) //if it wasnt a callback before, it is now + proc_or_callback = CALLBACK(src, proc_or_callback) var/list/sig_types = islist(sig_type_or_types) ? sig_type_or_types : list(sig_type_or_types) for(var/sig_type in sig_types) - if(!override) - . = procs[sig_type] - if(.) - stack_trace("[sig_type] overridden. Use override = TRUE to suppress this warning") + if(!override && procs[target][sig_type]) + stack_trace("[sig_type] overridden. Use override = TRUE to suppress this warning") - if(!istype(proc_or_callback, /datum/callback)) //if it wasnt a callback before, it is now - proc_or_callback = CALLBACK(src, proc_or_callback) - procs[sig_type] = proc_or_callback + procs[target][sig_type] = proc_or_callback + + if(!lookup[sig_type]) // Nothing has registered here yet + lookup[sig_type] = src + else if(lookup[sig_type] == src) // We already registered here + continue + else if(!length(lookup[sig_type])) // One other thing registered here + lookup[sig_type] = list(lookup[sig_type]=TRUE) + lookup[sig_type][src] = TRUE + else // Many other things have registered here + lookup[sig_type][src] = TRUE enabled = TRUE +/datum/component/proc/UnregisterSignal(datum/target, sig_type_or_types) + var/list/lookup = target.comp_lookup + if(!signal_procs || !signal_procs[target] || !lookup) + return + if(!islist(sig_type_or_types)) + sig_type_or_types = list(sig_type_or_types) + for(var/sig in sig_type_or_types) + switch(length(lookup[sig])) + if(2) + lookup[sig] = (lookup[sig]-src)[1] + if(1) + stack_trace("[target] ([target.type]) somehow has single length list inside comp_lookup") + if(src in lookup[sig]) + lookup -= sig + if(!length(lookup)) + target.comp_lookup = null + break + if(0) + lookup -= sig + if(!length(lookup)) + target.comp_lookup = null + break + else + lookup[sig] -= src + + signal_procs[target] -= sig_type_or_types + if(!signal_procs[target].len) + signal_procs -= target + /datum/component/proc/InheritComponent(datum/component/C, i_am_original) return @@ -116,28 +160,20 @@ current_type = type2parent(current_type) . += current_type -/datum/proc/SendSignal(sigtype, ...) - var/list/comps = datum_components - if(!comps) - return NONE - var/list/arguments = args.Copy(2) - var/target = comps[/datum/component] +/datum/proc/_SendSignal(sigtype, list/arguments) + var/target = comp_lookup[sigtype] if(!length(target)) var/datum/component/C = target if(!C.enabled) return NONE - var/datum/callback/CB = C.signal_procs[sigtype] - if(!CB) - return NONE + var/datum/callback/CB = C.signal_procs[src][sigtype] return CB.InvokeAsync(arglist(arguments)) . = NONE for(var/I in target) var/datum/component/C = I if(!C.enabled) continue - var/datum/callback/CB = C.signal_procs[sigtype] - if(!CB) - continue + var/datum/callback/CB = C.signal_procs[src][sigtype] . |= CB.InvokeAsync(arglist(arguments)) /datum/proc/GetComponent(c_type) @@ -219,7 +255,7 @@ new_comp = new nt(arglist(args)) // Dupes are allowed, act like normal if(!old_comp && !QDELETED(new_comp)) // Nothing related to duplicate components happened and the new component is healthy - SendSignal(COMSIG_COMPONENT_ADDED, new_comp) + SEND_SIGNAL(src, COMSIG_COMPONENT_ADDED, new_comp) return new_comp return old_comp @@ -234,7 +270,7 @@ var/datum/old_parent = parent PreTransfer() _RemoveFromParent() - old_parent.SendSignal(COMSIG_COMPONENT_REMOVING, src) + SEND_SIGNAL(old_parent, COMSIG_COMPONENT_REMOVING, src) /datum/proc/TakeComponent(datum/component/target) if(!target) diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm index 3d63d9a63e..cc703e12dc 100644 --- a/code/datums/components/anti_magic.dm +++ b/code/datums/components/anti_magic.dm @@ -3,41 +3,24 @@ var/holy = FALSE /datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE) + if(isitem(parent)) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + else if(ismob(parent)) + RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/can_protect) + else + return COMPONENT_INCOMPATIBLE + magic = _magic holy = _holy -/datum/component/anti_magic/proc/can_protect(_magic = TRUE, _holy = FALSE) - if(!enabled) - return FALSE +/datum/component/anti_magic/proc/on_equip(mob/equipper, slot) + RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/can_protect, TRUE) + +/datum/component/anti_magic/proc/on_drop(mob/user) + UnregisterSignal(user, COMSIG_MOB_RECEIVE_MAGIC) + +/datum/component/anti_magic/proc/can_protect(_magic, _holy, list/protection_sources) if((_magic && magic) || (_holy && holy)) - return TRUE - return FALSE - -/mob/proc/anti_magic_check(magic = TRUE, holy = FALSE) - if(!magic && !holy) - return - var/list/obj/item/item_list = list() - item_list |= held_items - for(var/obj/O in item_list) - GET_COMPONENT_FROM(anti_magic, /datum/component/anti_magic, O) - if(!anti_magic) - continue - if(anti_magic.can_protect(magic, holy)) - return O - -/mob/living/anti_magic_check(magic = TRUE, holy = FALSE) - if(!magic && !holy) - return - - if((magic && has_trait(TRAIT_ANTIMAGIC)) || (holy && has_trait(TRAIT_HOLY))) - return src - - var/list/obj/item/item_list = list() - item_list |= get_equipped_items(TRUE) - item_list |= held_items - for(var/obj/O in item_list) - GET_COMPONENT_FROM(anti_magic, /datum/component/anti_magic, O) - if(!anti_magic) - continue - if(anti_magic.can_protect(magic, holy)) - return O \ No newline at end of file + protection_sources += parent + return COMPONENT_BLOCK_MAGIC diff --git a/code/datums/components/archaeology.dm b/code/datums/components/archaeology.dm index e51cba1ca3..f5bedf42a9 100644 --- a/code/datums/components/archaeology.dm +++ b/code/datums/components/archaeology.dm @@ -15,9 +15,9 @@ archdrops[i][ARCH_PROB] = 100 stack_trace("ARCHAEOLOGY WARNING: [parent] contained a null probability value in [i].") callback = _callback - RegisterSignal(COMSIG_PARENT_ATTACKBY,.proc/Dig) - RegisterSignal(COMSIG_ATOM_EX_ACT, .proc/BombDig) - RegisterSignal(COMSIG_ATOM_SING_PULL, .proc/SingDig) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/Dig) + RegisterSignal(parent, COMSIG_ATOM_EX_ACT, .proc/BombDig) + RegisterSignal(parent, COMSIG_ATOM_SING_PULL, .proc/SingDig) /datum/component/archaeology/InheritComponent(datum/component/archaeology/A, i_am_original) var/list/other_archdrops = A.archdrops diff --git a/code/datums/components/armor_plate.dm b/code/datums/components/armor_plate.dm index 0b94c389ce..0e3cee8a11 100644 --- a/code/datums/components/armor_plate.dm +++ b/code/datums/components/armor_plate.dm @@ -9,9 +9,9 @@ if(!isobj(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(COMSIG_PARENT_EXAMINE, .proc/examine) - RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/applyplate) - RegisterSignal(COMSIG_PARENT_PREQDELETED, .proc/dropplates) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/applyplate) + RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, .proc/dropplates) if(_maxamount) maxamount = _maxamount diff --git a/code/datums/components/beauty.dm b/code/datums/components/beauty.dm index f6031046bd..bf086feb20 100644 --- a/code/datums/components/beauty.dm +++ b/code/datums/components/beauty.dm @@ -5,8 +5,8 @@ if(!ismovableatom(parent)) return COMPONENT_INCOMPATIBLE beauty = beautyamount - RegisterSignal(COMSIG_ENTER_AREA, .proc/enter_area) - RegisterSignal(COMSIG_EXIT_AREA, .proc/exit_area) + RegisterSignal(parent, COMSIG_ENTER_AREA, .proc/enter_area) + RegisterSignal(parent, COMSIG_EXIT_AREA, .proc/exit_area) var/area/A = get_area(parent) if(!A || A.outdoors) return diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm index 7001523235..9f85c4814c 100644 --- a/code/datums/components/caltrop.dm +++ b/code/datums/components/caltrop.dm @@ -12,7 +12,7 @@ probability = _probability flags = _flags - RegisterSignal(list(COMSIG_MOVABLE_CROSSED), .proc/Crossed) + RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED), .proc/Crossed) /datum/component/caltrop/proc/Crossed(atom/movable/AM) var/atom/A = parent diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 88360194b3..ddc375d8a8 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -11,16 +11,19 @@ /obj/structure/lattice, /obj/structure/stone_tile, /obj/item/projectile, + /obj/effect/projectile, /obj/effect/portal, /obj/effect/abstract, /obj/effect/hotspot, /obj/effect/landmark, /obj/effect/temp_visual, /obj/effect/light_emitter/tendril, - /obj/effect/collapse)) + /obj/effect/collapse, + /obj/effect/particle_effect/ion_trails + )) /datum/component/chasm/Initialize(turf/target) - RegisterSignal(list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Entered) + RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Entered) target_turf = target START_PROCESSING(SSobj, src) // process on create, in case stuff is still there diff --git a/code/datums/components/cleaning.dm b/code/datums/components/cleaning.dm index 6f2f08c617..05c26efcc1 100644 --- a/code/datums/components/cleaning.dm +++ b/code/datums/components/cleaning.dm @@ -4,7 +4,7 @@ /datum/component/cleaning/Initialize() if(!ismovableatom(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(list(COMSIG_MOVABLE_MOVED), .proc/Clean) + RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/Clean) /datum/component/cleaning/proc/Clean() var/atom/movable/AM = parent @@ -12,13 +12,13 @@ if(!isturf(tile)) return - tile.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) for(var/A in tile) if(is_cleanable(A)) qdel(A) else if(istype(A, /obj/item)) var/obj/item/I = A - I.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(ismob(I.loc)) var/mob/M = I.loc M.regenerate_icons() @@ -26,14 +26,14 @@ var/mob/living/carbon/human/cleaned_human = A if(cleaned_human.lying) if(cleaned_human.head) - cleaned_human.head.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(cleaned_human.wear_suit) - cleaned_human.wear_suit.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) else if(cleaned_human.w_uniform) - cleaned_human.w_uniform.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(cleaned_human.shoes) - cleaned_human.shoes.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - cleaned_human.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) cleaned_human.wash_cream() cleaned_human.regenerate_icons() to_chat(cleaned_human, "[AM] cleans your face!") diff --git a/code/datums/components/construction.dm b/code/datums/components/construction.dm index c9cf47e221..f4b65481e7 100644 --- a/code/datums/components/construction.dm +++ b/code/datums/components/construction.dm @@ -15,8 +15,8 @@ if(!isatom(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(COMSIG_PARENT_EXAMINE, .proc/examine) - RegisterSignal(COMSIG_PARENT_ATTACKBY,.proc/action) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/action) update_parent(index) /datum/component/construction/proc/examine(mob/user) diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm index 8ee3d6d388..e86663591b 100644 --- a/code/datums/components/decal.dm +++ b/code/datums/components/decal.dm @@ -12,11 +12,11 @@ cleanable = _cleanable if(_dir) // If no dir is assigned at start then it follows the atom's dir - RegisterSignal(COMSIG_ATOM_DIR_CHANGE, .proc/rotate_react) + RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, .proc/rotate_react) if(_cleanable) - RegisterSignal(COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react) if(_description) - RegisterSignal(COMSIG_PARENT_EXAMINE, .proc/examine) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) apply() /datum/component/decal/Destroy() diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index e69f94358c..e4aae3cf05 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -5,7 +5,7 @@ if(!isitem(parent)) return COMPONENT_INCOMPATIBLE . = ..() - RegisterSignal(COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name) + RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name) /datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color) var/obj/item/I = parent diff --git a/code/datums/components/earhealing.dm b/code/datums/components/earhealing.dm index 79303ff701..8fe6d2788e 100644 --- a/code/datums/components/earhealing.dm +++ b/code/datums/components/earhealing.dm @@ -7,7 +7,7 @@ /datum/component/earhealing/Initialize() if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/equippedChanged) + RegisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/equippedChanged) /datum/component/earhealing/proc/equippedChanged(mob/living/carbon/user, slot) if (slot == SLOT_EARS && istype(user)) diff --git a/code/datums/components/edit_complainer.dm b/code/datums/components/edit_complainer.dm new file mode 100644 index 0000000000..f6de9eaf78 --- /dev/null +++ b/code/datums/components/edit_complainer.dm @@ -0,0 +1,23 @@ +// This is just a bit of fun while making an example for global signal +/datum/component/edit_complainer + var/list/say_lines + +/datum/component/edit_complainer/Initialize(list/text) + if(!ismovableatom(parent)) + return COMPONENT_INCOMPATIBLE + + var/static/list/default_lines = list( + "CentCom's profligacy frays another thread.", + "Another tug at the weave.", + "Who knows when the stresses will finally shatter the form?", + "Even now a light shines through the cracks.", + "CentCom once more twists knowledge beyond its authority.", + "There is an uncertain air in the mansus.", + ) + say_lines = text || default_lines + + RegisterSignal(SSdcs, COMSIG_GLOB_VAR_EDIT, .proc/var_edit_react) + +/datum/component/edit_complainer/proc/var_edit_react(list/arguments) + var/atom/movable/master = parent + master.say(pick(say_lines)) diff --git a/code/datums/components/empprotection.dm b/code/datums/components/empprotection.dm new file mode 100644 index 0000000000..df4c49040b --- /dev/null +++ b/code/datums/components/empprotection.dm @@ -0,0 +1,11 @@ +/datum/component/empprotection + var/flags = NONE + +/datum/component/empprotection/Initialize(_flags) + if(!istype(parent, /atom)) + return COMPONENT_INCOMPATIBLE + flags = _flags + RegisterSignal(parent, list(COMSIG_ATOM_EMP_ACT), .proc/getEmpFlags) + +/datum/component/empprotection/proc/getEmpFlags(severity) + return flags diff --git a/code/datums/components/forced_gravity.dm b/code/datums/components/forced_gravity.dm new file mode 100644 index 0000000000..bba0d8d71c --- /dev/null +++ b/code/datums/components/forced_gravity.dm @@ -0,0 +1,8 @@ +/datum/component/forced_gravity + var/gravity = 1 + var/ignore_space = FALSE //If forced gravity should also work on space turfs + +/datum/component/forced_gravity/Initialize(forced_value = 1) + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + gravity = forced_value \ No newline at end of file diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm index 33456e6e98..9ee4c9c60b 100644 --- a/code/datums/components/forensics.dm +++ b/code/datums/components/forensics.dm @@ -21,7 +21,7 @@ blood_DNA = new_blood_DNA fibers = new_fibers check_blood() - RegisterSignal(COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) /datum/component/forensics/proc/wipe_fingerprints() fingerprints = null diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm index f434ed6f52..6f95ccce35 100644 --- a/code/datums/components/infective.dm +++ b/code/datums/components/infective.dm @@ -12,15 +12,15 @@ if(expire_in) expire_time = world.time + expire_in QDEL_IN(src, expire_in) - RegisterSignal(COMSIG_MOVABLE_BUCKLE, .proc/try_infect_buckle) - RegisterSignal(COMSIG_MOVABLE_COLLIDE, .proc/try_infect_collide) - RegisterSignal(COMSIG_MOVABLE_CROSSED, .proc/try_infect_crossed) - RegisterSignal(COMSIG_ITEM_ATTACK_ZONE, .proc/try_infect_attack_zone) - RegisterSignal(COMSIG_ITEM_ATTACK, .proc/try_infect_attack) - RegisterSignal(COMSIG_ITEM_EQUIPPED, .proc/try_infect_equipped) - RegisterSignal(COMSIG_MOVABLE_IMPACT_ZONE, .proc/try_infect_impact_zone) - RegisterSignal(COMSIG_FOOD_EATEN, .proc/try_infect_eat) - RegisterSignal(COMSIG_COMPONENT_CLEAN_ACT, .proc/clean) + RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/try_infect_buckle) + RegisterSignal(parent, COMSIG_MOVABLE_COLLIDE, .proc/try_infect_collide) + RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/try_infect_crossed) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE, .proc/try_infect_attack_zone) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/try_infect_attack) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/try_infect_equipped) + RegisterSignal(parent, COMSIG_MOVABLE_IMPACT_ZONE, .proc/try_infect_impact_zone) + RegisterSignal(parent, COMSIG_FOOD_EATEN, .proc/try_infect_eat) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean) /datum/component/infective/proc/try_infect_eat(mob/living/eater, mob/living/feeder) for(var/V in diseases) diff --git a/code/datums/components/jousting.dm b/code/datums/components/jousting.dm index 679d37738b..34bed6d7e9 100644 --- a/code/datums/components/jousting.dm +++ b/code/datums/components/jousting.dm @@ -13,31 +13,21 @@ var/requires_mob_riding = TRUE //whether this only works if the attacker is riding a mob, rather than anything they can buckle to. var/requires_mount = TRUE //kinda defeats the point of jousting if you're not mounted but whatever. var/mob/current_holder - var/datum/component/redirect/listener var/current_timerid /datum/component/jousting/Initialize() if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(COMSIG_ITEM_EQUIPPED, .proc/on_equip) - RegisterSignal(COMSIG_ITEM_DROPPED, .proc/on_drop) - RegisterSignal(COMSIG_ITEM_ATTACK, .proc/on_attack) - -/datum/component/jousting/Destroy() - QDEL_NULL(listener) - return ..() + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/on_attack) /datum/component/jousting/proc/on_equip(mob/user, slot) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/mob_move, TRUE) current_holder = user - if(!listener) - listener = user.AddComponent(/datum/component/redirect, COMSIG_MOVABLE_MOVED, CALLBACK(src, .proc/mob_move)) - else - user.TakeComponent(listener) - if(QDELING(listener)) - listener = null /datum/component/jousting/proc/on_drop(mob/user) - QDEL_NULL(listener) + UnregisterSignal(user, COMSIG_MOVABLE_MOVED) current_holder = null current_direction = NONE current_tile_charge = 0 diff --git a/code/datums/components/knockoff.dm b/code/datums/components/knockoff.dm index 60b86f01d2..3354548ca1 100644 --- a/code/datums/components/knockoff.dm +++ b/code/datums/components/knockoff.dm @@ -8,8 +8,8 @@ /datum/component/knockoff/Initialize(knockoff_chance,zone_override,slots_knockoffable) if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(COMSIG_ITEM_EQUIPPED,.proc/OnEquipped) - RegisterSignal(COMSIG_ITEM_DROPPED,.proc/OnDropped) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,.proc/OnEquipped) + RegisterSignal(parent, COMSIG_ITEM_DROPPED,.proc/OnDropped) src.knockoff_chance = knockoff_chance @@ -37,16 +37,9 @@ if(!istype(H)) return if(slots_knockoffable && !(slot in slots_knockoffable)) - if(disarm_redirect) - QDEL_NULL(disarm_redirect) + UnregisterSignal(H, COMSIG_HUMAN_DISARM_HIT) return - if(!disarm_redirect) - disarm_redirect = H.AddComponent(/datum/component/redirect,list(COMSIG_HUMAN_DISARM_HIT),CALLBACK(src,.proc/Knockoff)) + RegisterSignal(H, COMSIG_HUMAN_DISARM_HIT, .proc/Knockoff, TRUE) /datum/component/knockoff/proc/OnDropped(mob/living/M) - if(disarm_redirect) - QDEL_NULL(disarm_redirect) - -/datum/component/knockoff/Destroy() - QDEL_NULL(disarm_redirect) - . = ..() \ No newline at end of file + UnregisterSignal(M, COMSIG_HUMAN_DISARM_HIT) \ No newline at end of file diff --git a/code/datums/components/magnetic_catch.dm b/code/datums/components/magnetic_catch.dm new file mode 100644 index 0000000000..8398f6f4b6 --- /dev/null +++ b/code/datums/components/magnetic_catch.dm @@ -0,0 +1,23 @@ +/datum/component/magnetic_catch/Initialize() + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + if(ismovableatom(parent)) + RegisterSignal(parent, COMSIG_MOVABLE_UNCROSS, .proc/uncross_react) + else + RegisterSignal(parent, COMSIG_ATOM_EXIT, .proc/exit_react) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) + +/datum/component/magnetic_catch/proc/uncross_react(atom/movable/thing) + if(!thing.throwing || thing.throwing.thrower) + return + qdel(thing.throwing) + return COMPONENT_MOVABLE_BLOCK_UNCROSS + +/datum/component/magnetic_catch/proc/exit_react(atom/movable/thing, atom/newloc) + if(!thing.throwing || thing.throwing.thrower) + return + qdel(thing.throwing) + return COMPONENT_ATOM_BLOCK_EXIT + +/datum/component/magnetic_catch/proc/examine(mob/user) + to_chat(user, "It has been installed with inertia dampening to prevent coffee spills.") \ No newline at end of file diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index e167cbb092..ec0c028292 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -32,8 +32,8 @@ precondition = _precondition after_insert = _after_insert - RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) - RegisterSignal(COMSIG_PARENT_EXAMINE, .proc/OnExamine) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/OnExamine) var/list/possible_mats = list() for(var/mat_type in subtypesof(/datum/material)) @@ -58,7 +58,7 @@ return if(user.a_intent != INTENT_HELP) return - if(I.flags_1 & ABSTRACT_1) + if(I.item_flags & ABSTRACT) return if((I.flags_1 & HOLOGRAM_1) || (I.item_flags & NO_MAT_REDEMPTION) || (tc && !is_type_in_typecache(I, tc))) to_chat(user, "[parent] won't accept [I]!") diff --git a/code/datums/components/mirage_border.dm b/code/datums/components/mirage_border.dm index f91c5c8965..f435a21f49 100644 --- a/code/datums/components/mirage_border.dm +++ b/code/datums/components/mirage_border.dm @@ -7,7 +7,7 @@ if(!target || !istype(target) || !direction) . = COMPONENT_INCOMPATIBLE CRASH("[type] improperly instanced with the following args: target=\[[target]\], direction=\[[direction]\], range=\[[range]\]") - + holder = new(parent) var/x = target.x @@ -37,4 +37,5 @@ /obj/effect/abstract/mirage_holder name = "Mirage holder" + anchored = TRUE mouse_opacity = MOUSE_OPACITY_TRANSPARENT diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 8714b41f05..3e37b07542 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -14,9 +14,9 @@ START_PROCESSING(SSmood, src) owner = parent soundloop = new(list(owner), FALSE, TRUE) - RegisterSignal(COMSIG_ADD_MOOD_EVENT, .proc/add_event) - RegisterSignal(COMSIG_CLEAR_MOOD_EVENT, .proc/clear_event) - RegisterSignal(COMSIG_ENTER_AREA, .proc/update_beauty) + RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, .proc/add_event) + RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT, .proc/clear_event) + RegisterSignal(parent, COMSIG_ENTER_AREA, .proc/update_beauty) /datum/component/mood/Destroy() STOP_PROCESSING(SSmood, src) diff --git a/code/datums/components/ntnet_interface.dm b/code/datums/components/ntnet_interface.dm index 14462f2774..d945f68ca9 100644 --- a/code/datums/components/ntnet_interface.dm +++ b/code/datums/components/ntnet_interface.dm @@ -1,8 +1,8 @@ //Thing meant for allowing datums and objects to access a NTnet network datum. -/datum/proc/ntnet_recieve(datum/netdata/data) +/datum/proc/ntnet_receive(datum/netdata/data) return -/datum/proc/ntnet_recieve_broadcast(datum/netdata/data) +/datum/proc/ntnet_receive_broadcast(datum/netdata/data) return /datum/proc/ntnet_send(datum/netdata/data, netid) @@ -15,7 +15,7 @@ var/hardware_id //text. this is the true ID. do not change this. stuff like ID forgery can be done manually. var/network_name = "" //text var/list/networks_connected_by_id = list() //id = datum/ntnet - var/differentiate_broadcast = TRUE //If false, broadcasts go to ntnet_recieve. NOT RECOMMENDED. + var/differentiate_broadcast = TRUE //If false, broadcasts go to ntnet_receive. NOT RECOMMENDED. /datum/component/ntnet_interface/Initialize(force_name = "NTNet Device", autoconnect_station_network = TRUE) //Don't force ID unless you know what you're doing! hardware_id = "[SSnetworks.get_next_HID()]" @@ -31,12 +31,12 @@ SSnetworks.unregister_interface(src) return ..() -/datum/component/ntnet_interface/proc/__network_recieve(datum/netdata/data) //Do not directly proccall! - parent.SendSignal(COMSIG_COMPONENT_NTNET_RECIEVE, data) +/datum/component/ntnet_interface/proc/__network_receive(datum/netdata/data) //Do not directly proccall! + SEND_SIGNAL(parent, COMSIG_COMPONENT_NTNET_RECEIVE, data) if(differentiate_broadcast && data.broadcast) - parent.ntnet_recieve_broadcast(data) + parent.ntnet_receive_broadcast(data) else - parent.ntnet_recieve(data) + parent.ntnet_receive(data) /datum/component/ntnet_interface/proc/__network_send(datum/netdata/data, netid) //Do not directly proccall! // Process data before sending it diff --git a/code/datums/components/paintable.dm b/code/datums/components/paintable.dm index 01e81d27c0..73aa1c02ed 100644 --- a/code/datums/components/paintable.dm +++ b/code/datums/components/paintable.dm @@ -2,7 +2,7 @@ var/current_paint /datum/component/spraycan_paintable/Initialize() - RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/Repaint) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/Repaint) /datum/component/spraycan_paintable/Destroy() RemoveCurrentCoat() diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm index fc0456ad10..3dd1ba2a6f 100644 --- a/code/datums/components/radioactive.dm +++ b/code/datums/components/radioactive.dm @@ -19,10 +19,10 @@ can_contaminate = _can_contaminate if(istype(parent, /atom)) - RegisterSignal(COMSIG_PARENT_EXAMINE, .proc/rad_examine) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/rad_examine) if(istype(parent, /obj/item)) - RegisterSignal(COMSIG_ITEM_ATTACK, .proc/rad_attack) - RegisterSignal(COMSIG_ITEM_ATTACK_OBJ, .proc/rad_attack) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/rad_attack) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, .proc/rad_attack) else CRASH("Something that wasn't an atom was given /datum/component/radioactive") return diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 4a720b6550..4a40cae0d9 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -1,5 +1,6 @@ /datum/component/riding - var/next_vehicle_move = 0 //used for move delays + var/last_vehicle_move = 0 //used for move delays + var/last_move_diagonal = FALSE var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower var/keytype @@ -21,9 +22,9 @@ /datum/component/riding/Initialize() if(!ismovableatom(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(COMSIG_MOVABLE_BUCKLE, .proc/vehicle_mob_buckle) - RegisterSignal(COMSIG_MOVABLE_UNBUCKLE, .proc/vehicle_mob_unbuckle) - RegisterSignal(COMSIG_MOVABLE_MOVED, .proc/vehicle_moved) + RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/vehicle_mob_buckle) + RegisterSignal(parent, COMSIG_MOVABLE_UNBUCKLE, .proc/vehicle_mob_unbuckle) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/vehicle_moved) /datum/component/riding/proc/vehicle_mob_unbuckle(mob/living/M, force = FALSE) restore_position(M) @@ -146,9 +147,9 @@ Unbuckle(user) return - if(world.time < next_vehicle_move) + if(world.time < last_vehicle_move + ((last_move_diagonal? 2 : 1) * vehicle_move_delay)) return - next_vehicle_move = world.time + vehicle_move_delay + last_vehicle_move = world.time if(keycheck(user)) var/turf/next = get_step(AM, direction) @@ -161,7 +162,12 @@ if(!Process_Spacemove(direction) || !isturf(AM.loc)) return step(AM, direction) - + + if((direction & (direction - 1)) && (AM.loc == next)) //moved diagonally + last_move_diagonal = TRUE + else + last_move_diagonal = FALSE + handle_vehicle_layer() handle_vehicle_offsets() else @@ -187,7 +193,7 @@ /datum/component/riding/human/Initialize() . = ..() - RegisterSignal(COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee) + RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee) /datum/component/riding/human/proc/on_host_unarmed_melee(atom/target) var/mob/living/carbon/human/AM = parent @@ -301,7 +307,7 @@ icon = 'icons/obj/items_and_weapons.dmi' icon_state = "offhand" w_class = WEIGHT_CLASS_HUGE - flags_1 = ABSTRACT_1 | DROPDEL_1 | NOBLUDGEON_1 + item_flags = ABSTRACT | DROPDEL | NOBLUDGEON resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF var/mob/living/carbon/rider var/mob/living/parent diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index eca12454fd..8148267016 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -45,10 +45,10 @@ default_rotation_direction = ROTATION_CLOCKWISE if(src.rotation_flags & ROTATION_ALTCLICK) - RegisterSignal(COMSIG_CLICK_ALT, .proc/HandRot) - RegisterSignal(COMSIG_PARENT_EXAMINE, .proc/ExamineMessage) + RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/HandRot) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/ExamineMessage) if(src.rotation_flags & ROTATION_WRENCH) - RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/WrenchRot) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/WrenchRot) if(src.rotation_flags & ROTATION_VERBS) var/atom/movable/AM = parent @@ -59,6 +59,24 @@ if(src.rotation_flags & ROTATION_COUNTERCLOCKWISE) AM.verbs += /atom/movable/proc/simple_rotate_counterclockwise +/datum/component/simple_rotation/proc/remove_verbs() + if(parent) + var/atom/movable/AM = parent + AM.verbs -= /atom/movable/proc/simple_rotate_flip + AM.verbs -= /atom/movable/proc/simple_rotate_clockwise + AM.verbs -= /atom/movable/proc/simple_rotate_counterclockwise + +/datum/component/simple_rotation/Destroy() + remove_verbs() + QDEL_NULL(can_user_rotate) + QDEL_NULL(can_be_rotated) + QDEL_NULL(after_rotation) + . = ..() + +/datum/component/simple_rotation/RemoveComponent() + remove_verbs() + . = ..() + /datum/component/simple_rotation/proc/ExamineMessage(mob/user) if(rotation_flags & ROTATION_ALTCLICK) to_chat(user, "Alt-click to rotate it clockwise.") diff --git a/code/datums/components/signal_redirect.dm b/code/datums/components/signal_redirect.dm index 769555fc80..4de7e99a02 100644 --- a/code/datums/components/signal_redirect.dm +++ b/code/datums/components/signal_redirect.dm @@ -1,3 +1,6 @@ +// This should only be used by non components trying to listen to a signal +// If you use this inside a component I will replace your eyes with lemons ~ninjanomnom + /datum/component/redirect dupe_mode = COMPONENT_DUPE_ALLOWED @@ -7,8 +10,8 @@ warning("signals are [list2params(signals)], callback is [_callback]]") return COMPONENT_INCOMPATIBLE if(flags & REDIRECT_TRANSFER_WITH_TURF && isturf(parent)) - RegisterSignal(COMSIG_TURF_CHANGE, .proc/turf_change) - RegisterSignal(signals, _callback) + RegisterSignal(parent, COMSIG_TURF_CHANGE, .proc/turf_change) + RegisterSignal(parent, signals, _callback) /datum/component/redirect/proc/turf_change(path, new_baseturfs, flags, list/transfers) transfers += src diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm index 24cb22020d..9bb00ecd28 100644 --- a/code/datums/components/slippery.dm +++ b/code/datums/components/slippery.dm @@ -7,7 +7,7 @@ intensity = max(_intensity, 0) lube_flags = _lube_flags callback = _callback - RegisterSignal(list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Slip) + RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Slip) /datum/component/slippery/proc/Slip(atom/movable/AM) var/mob/victim = AM diff --git a/code/datums/components/spooky.dm b/code/datums/components/spooky.dm index 0de27f30f0..6e9001ead5 100644 --- a/code/datums/components/spooky.dm +++ b/code/datums/components/spooky.dm @@ -2,7 +2,7 @@ var/too_spooky = TRUE //will it spawn a new instrument? /datum/component/spooky/Initialize() - RegisterSignal(COMSIG_ITEM_ATTACK, .proc/spectral_attack) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/spectral_attack) /datum/component/spooky/proc/spectral_attack(mob/living/carbon/C, mob/user) if(ishuman(user)) //this weapon wasn't meant for mortals. diff --git a/code/datums/components/squeek.dm b/code/datums/components/squeek.dm index 7a362f0391..3d88655b73 100644 --- a/code/datums/components/squeek.dm +++ b/code/datums/components/squeek.dm @@ -24,10 +24,10 @@ if(use_delay_override) use_delay = use_delay_override - RegisterSignal(list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_COLLIDE, COMSIG_MOVABLE_IMPACT, COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ), .proc/play_squeak) - RegisterSignal(COMSIG_MOVABLE_CROSSED, .proc/play_squeak_turf) - RegisterSignal(COMSIG_ITEM_ATTACK_SELF, .proc/use_squeak) - RegisterSignal(COMSIG_SHOES_STEP_ACTION, .proc/step_squeak) + RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_COLLIDE, COMSIG_MOVABLE_IMPACT, COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ), .proc/play_squeak) + RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/play_squeak_turf) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/use_squeak) + RegisterSignal(parent, COMSIG_SHOES_STEP_ACTION, .proc/step_squeak) /datum/component/squeak/proc/play_squeak() if(prob(squeak_chance)) diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm index 54f8b107e0..15f47dd8a5 100644 --- a/code/datums/components/stationloving.dm +++ b/code/datums/components/stationloving.dm @@ -2,20 +2,23 @@ dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS var/inform_admins = FALSE var/disallow_soul_imbue = TRUE + var/allow_death = FALSE -/datum/component/stationloving/Initialize(inform_admins = FALSE) +/datum/component/stationloving/Initialize(inform_admins = FALSE, allow_death = FALSE) if(!ismovableatom(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(list(COMSIG_MOVABLE_Z_CHANGED), .proc/check_in_bounds) - RegisterSignal(list(COMSIG_PARENT_PREQDELETED), .proc/check_deletion) - RegisterSignal(list(COMSIG_ITEM_IMBUE_SOUL), .proc/check_soul_imbue) + RegisterSignal(parent, list(COMSIG_MOVABLE_Z_CHANGED), .proc/check_in_bounds) + RegisterSignal(parent, list(COMSIG_PARENT_PREQDELETED), .proc/check_deletion) + RegisterSignal(parent, list(COMSIG_ITEM_IMBUE_SOUL), .proc/check_soul_imbue) src.inform_admins = inform_admins + src.allow_death = allow_death check_in_bounds() // Just in case something is being created outside of station/centcom /datum/component/stationloving/InheritComponent(datum/component/stationloving/newc, original, list/arguments) if (original) if (istype(newc)) inform_admins = newc.inform_admins + allow_death = newc.allow_death else if (LAZYLEN(arguments)) inform_admins = arguments[1] @@ -39,9 +42,9 @@ var/turf/currentturf = get_turf(src) to_chat(get(parent, /mob), "You can't help but feel that you just lost something back there...") var/turf/targetturf = relocate() - log_game("[parent] has been moved out of bounds in [COORD(currentturf)]. Moving it to [COORD(targetturf)].") + log_game("[parent] has been moved out of bounds in [AREACOORD(currentturf)]. Moving it to [AREACOORD(targetturf)].") if(inform_admins) - message_admins("[parent] has been moved out of bounds in [ADMIN_COORDJMP(currentturf)]. Moving it to [ADMIN_COORDJMP(targetturf)].") + message_admins("[parent] has been moved out of bounds in [ADMIN_VERBOSEJMP(currentturf)]. Moving it to [ADMIN_VERBOSEJMP(targetturf)].") /datum/component/stationloving/proc/check_soul_imbue() return disallow_soul_imbue @@ -51,10 +54,12 @@ var/turf/T = get_turf(parent) if (!T) return FALSE + var/area/A = T.loc + if(istype(A, /area/fabric_of_reality)) // Obviously terrible, just for test merging + return FALSE if (is_station_level(T.z) || is_centcom_level(T.z)) return TRUE - if (is_transit_level(T.z)) - var/area/A = T.loc + if (is_reserved_level(T.z)) if (is_type_in_typecache(A, allowed_shuttles)) return TRUE @@ -65,13 +70,13 @@ var/turf/T = get_turf(parent) if(inform_admins && force) - message_admins("[parent] has been !!force deleted!! in [ADMIN_COORDJMP(T)].") - log_game("[parent] has been !!force deleted!! in [COORD(T)].") + message_admins("[parent] has been !!force deleted!! in [ADMIN_VERBOSEJMP(T)].") + log_game("[parent] has been !!force deleted!! in [AREACOORD(T)].") - if(!force) + if(!force && !allow_death) var/turf/targetturf = relocate() - log_game("[parent] has been destroyed in [COORD(T)]. Moving it to [COORD(targetturf)].") + log_game("[parent] has been destroyed in [AREACOORD(T)]. Moving it to [AREACOORD(targetturf)].") if(inform_admins) - message_admins("[parent] has been destroyed in [ADMIN_COORDJMP(T)]. Moving it to [ADMIN_COORDJMP(targetturf)].") + message_admins("[parent] has been destroyed in [ADMIN_VERBOSEJMP(T)]. Moving it to [ADMIN_VERBOSEJMP(targetturf)].") return TRUE return FALSE diff --git a/code/datums/components/storage/concrete/_concrete.dm b/code/datums/components/storage/concrete/_concrete.dm index 8701252fe6..557d07c93d 100644 --- a/code/datums/components/storage/concrete/_concrete.dm +++ b/code/datums/components/storage/concrete/_concrete.dm @@ -14,8 +14,8 @@ /datum/component/storage/concrete/Initialize() . = ..() - RegisterSignal(COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del) - RegisterSignal(COMSIG_OBJ_DECONSTRUCT, .proc/on_deconstruct) + RegisterSignal(parent, COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del) + RegisterSignal(parent, COMSIG_OBJ_DECONSTRUCT, .proc/on_deconstruct) /datum/component/storage/concrete/Destroy() var/atom/real_location = real_location() diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm index d8795d122b..8a80434114 100644 --- a/code/datums/components/storage/concrete/bag_of_holding.dm +++ b/code/datums/components/storage/concrete/bag_of_holding.dm @@ -1,22 +1,32 @@ /datum/component/storage/concrete/bluespace/bag_of_holding/handle_item_insertion(obj/item/W, prevent_warning = FALSE, mob/living/user) var/atom/A = parent if((istype(W, /obj/item/storage/backpack/holding) || count_by_type(W.GetAllContents(), /obj/item/storage/backpack/holding))) + var/safety = alert(user, "Doing this will have extremely dire consequences for the station and its crew. Be sure you know what you're doing.", "Put in [A.name]?", "Abort", "Proceed") + if(safety != "Proceed" || QDELETED(A) || QDELETED(W) || QDELETED(user) || !user.canUseTopic(A, BE_CLOSE, iscarbon(user))) + return var/turf/loccheck = get_turf(A) if(is_reebe(loccheck.z)) user.visible_message("An unseen force knocks [user] to the ground!", "\"I think not!\"") user.Knockdown(60) return - var/safety = alert(user, "Doing this will have extremely dire consequences for the station and its crew. Be sure you know what you're doing.", "Put in [A.name]?", "Abort", "Proceed") - if(safety == "Abort" || !in_range(A, user) || !A || !W || user.incapacitated()) - return - A.investigate_log("has become a singularity. Caused by [user.key]", INVESTIGATE_SINGULO) + if(istype(loccheck.loc, /area/fabric_of_reality)) + to_chat(user, "You can't do that here!") to_chat(user, "The Bluespace interfaces of the two devices catastrophically malfunction!") qdel(W) - var/obj/singularity/singulo = new /obj/singularity (get_turf(A)) - singulo.energy = 300 //should make it a bit bigger~ - message_admins("[key_name_admin(user)] detonated a bag of holding") - log_game("[key_name(user)] detonated a bag of holding") + playsound(loccheck,'sound/effects/supermatter.ogg', 200, 1) + user.gib(TRUE, TRUE, TRUE) + for(var/turf/T in range(6,loccheck)) + if(istype(T, /turf/open/space/transit)) + continue + for(var/mob/living/M in T) + if(M.movement_type & FLYING) + M.visible_message("The bluespace collapse crushes the air towards it, pulling [M] towards the ground...") + M.Knockdown(5, TRUE, TRUE) //Overrides stun absorbs. + T.TerraformTurf(/turf/open/chasm/magic, /turf/open/chasm/magic) + for (var/obj/structure/ladder/unbreakable/binary/ladder in GLOB.ladders) + ladder.ActivateAlmonds() + message_admins("[ADMIN_LOOKUPFLW(user)] detonated a bag of holding at [ADMIN_VERBOSEJMP(loccheck)].") + log_game("[key_name(user)] detonated a bag of holding at [AREACOORD(loccheck)].") qdel(A) - singulo.process() return . = ..() diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index e415e73df9..6610b9aa2b 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -54,12 +54,18 @@ /datum/component/storage/concrete/pockets/pocketprotector max_items = 3 max_w_class = WEIGHT_CLASS_TINY + var/atom/original_parent /datum/component/storage/concrete/pockets/pocketprotector/Initialize() + original_parent = parent . = ..() can_hold = typecacheof(list( //Same items as a PDA /obj/item/pen, /obj/item/toy/crayon, /obj/item/lipstick, /obj/item/flashlight/pen, - /obj/item/clothing/mask/cigarette)) \ No newline at end of file + /obj/item/clothing/mask/cigarette)) + +/datum/component/storage/concrete/pockets/pocketprotector/real_location() + // if the component is reparented to a jumpsuit, the items still go in the protector + return original_parent diff --git a/code/datums/components/storage/concrete/rped.dm b/code/datums/components/storage/concrete/rped.dm index eb895fd74f..14f6fe28b3 100644 --- a/code/datums/components/storage/concrete/rped.dm +++ b/code/datums/components/storage/concrete/rped.dm @@ -20,7 +20,7 @@ allow_quick_gather = TRUE allow_quick_empty = TRUE click_gather = TRUE - max_w_class = WEIGHT_CLASS_NORMAL + max_w_class = WEIGHT_CLASS_BULKY // can fit vending refills max_combined_w_class = 800 max_items = 400 display_numerical_stacking = TRUE @@ -29,5 +29,5 @@ . = ..() if(!I.get_part_rating()) if (!stop_messages) - to_chat(M, "[parent] only accepts machine par ts!") + to_chat(M, "[parent] only accepts machine parts!") return FALSE diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index e6d43ed65a..2913adf9b9 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -67,38 +67,38 @@ closer = new(null, src) orient2hud() - RegisterSignal(COMSIG_CONTAINS_STORAGE, .proc/on_check) - RegisterSignal(COMSIG_IS_STORAGE_LOCKED, .proc/check_locked) - RegisterSignal(COMSIG_TRY_STORAGE_SHOW, .proc/signal_show_attempt) - RegisterSignal(COMSIG_TRY_STORAGE_INSERT, .proc/signal_insertion_attempt) - RegisterSignal(COMSIG_TRY_STORAGE_CAN_INSERT, .proc/signal_can_insert) - RegisterSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, .proc/signal_take_type) - RegisterSignal(COMSIG_TRY_STORAGE_FILL_TYPE, .proc/signal_fill_type) - RegisterSignal(COMSIG_TRY_STORAGE_SET_LOCKSTATE, .proc/set_locked) - RegisterSignal(COMSIG_TRY_STORAGE_TAKE, .proc/signal_take_obj) - RegisterSignal(COMSIG_TRY_STORAGE_QUICK_EMPTY, .proc/signal_quick_empty) - RegisterSignal(COMSIG_TRY_STORAGE_HIDE_FROM, .proc/signal_hide_attempt) - RegisterSignal(COMSIG_TRY_STORAGE_HIDE_ALL, .proc/close_all) - RegisterSignal(COMSIG_TRY_STORAGE_RETURN_INVENTORY, .proc/signal_return_inv) + RegisterSignal(parent, COMSIG_CONTAINS_STORAGE, .proc/on_check) + RegisterSignal(parent, COMSIG_IS_STORAGE_LOCKED, .proc/check_locked) + RegisterSignal(parent, COMSIG_TRY_STORAGE_SHOW, .proc/signal_show_attempt) + RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, .proc/signal_insertion_attempt) + RegisterSignal(parent, COMSIG_TRY_STORAGE_CAN_INSERT, .proc/signal_can_insert) + RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE_TYPE, .proc/signal_take_type) + RegisterSignal(parent, COMSIG_TRY_STORAGE_FILL_TYPE, .proc/signal_fill_type) + RegisterSignal(parent, COMSIG_TRY_STORAGE_SET_LOCKSTATE, .proc/set_locked) + RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE, .proc/signal_take_obj) + RegisterSignal(parent, COMSIG_TRY_STORAGE_QUICK_EMPTY, .proc/signal_quick_empty) + RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_FROM, .proc/signal_hide_attempt) + RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_ALL, .proc/close_all) + RegisterSignal(parent, COMSIG_TRY_STORAGE_RETURN_INVENTORY, .proc/signal_return_inv) - RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/attackby) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby) - RegisterSignal(COMSIG_ATOM_ATTACK_HAND, .proc/on_attack_hand) - RegisterSignal(COMSIG_ATOM_ATTACK_PAW, .proc/on_attack_hand) - RegisterSignal(COMSIG_ATOM_EMP_ACT, .proc/emp_act) - RegisterSignal(COMSIG_ATOM_ATTACK_GHOST, .proc/show_to_ghost) - RegisterSignal(COMSIG_ATOM_ENTERED, .proc/refresh_mob_views) - RegisterSignal(COMSIG_ATOM_EXITED, .proc/_remove_and_refresh) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, .proc/on_attack_hand) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_PAW, .proc/on_attack_hand) + RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/emp_act) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_GHOST, .proc/show_to_ghost) + RegisterSignal(parent, COMSIG_ATOM_ENTERED, .proc/refresh_mob_views) + RegisterSignal(parent, COMSIG_ATOM_EXITED, .proc/_remove_and_refresh) - RegisterSignal(COMSIG_ITEM_PRE_ATTACK, .proc/preattack_intercept) - RegisterSignal(COMSIG_ITEM_ATTACK_SELF, .proc/attack_self) - RegisterSignal(COMSIG_ITEM_PICKUP, .proc/signal_on_pickup) + RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, .proc/preattack_intercept) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/attack_self) + RegisterSignal(parent, COMSIG_ITEM_PICKUP, .proc/signal_on_pickup) - RegisterSignal(COMSIG_MOVABLE_THROW, .proc/close_all) + RegisterSignal(parent, COMSIG_MOVABLE_THROW, .proc/close_all) - RegisterSignal(COMSIG_CLICK_ALT, .proc/on_alt_click) - RegisterSignal(COMSIG_MOUSEDROP_ONTO, .proc/mousedrop_onto) - RegisterSignal(COMSIG_MOUSEDROPPED_ONTO, .proc/mousedrop_recieve) + RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_alt_click) + RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO, .proc/mousedrop_onto) + RegisterSignal(parent, COMSIG_MOUSEDROPPED_ONTO, .proc/mousedrop_receive) update_actions() @@ -125,11 +125,13 @@ modeswitch_action.Grant(M) /datum/component/storage/proc/change_master(datum/component/storage/concrete/new_master) - if(!istype(new_master)) + if(new_master == src || (!isnull(new_master) && !istype(new_master))) return FALSE - master.on_slave_unlink(src) + if(master) + master.on_slave_unlink(src) master = new_master - master.on_slave_link(src) + if(master) + master.on_slave_link(src) return TRUE /datum/component/storage/proc/master() @@ -149,7 +151,7 @@ quick_empty(M) /datum/component/storage/proc/preattack_intercept(obj/O, mob/M, params) - if(!isitem(O) || !click_gather || O.SendSignal(COMSIG_CONTAINS_STORAGE)) + if(!isitem(O) || !click_gather || SEND_SIGNAL(O, COMSIG_CONTAINS_STORAGE)) return FALSE . = COMPONENT_NO_ATTACK if(locked) @@ -466,7 +468,7 @@ if(recursive) for(var/i in ret.Copy()) var/atom/A = i - A.SendSignal(COMSIG_TRY_STORAGE_RETURN_INVENTORY, ret, TRUE) + SEND_SIGNAL(A, COMSIG_TRY_STORAGE_RETURN_INVENTORY, ret, TRUE) return ret /datum/component/storage/proc/contents() //ONLY USE IF YOU NEED TO COPY CONTENTS OF REAL LOCATION, COPYING IS NOT AS FAST AS DIRECT ACCESS! @@ -517,19 +519,19 @@ if(force || M.CanReach(parent, view_only = TRUE)) show_to(M) -/datum/component/storage/proc/mousedrop_recieve(atom/movable/O, mob/M) +/datum/component/storage/proc/mousedrop_receive(atom/movable/O, mob/M) if(isitem(O)) var/obj/item/I = O if(iscarbon(M) || isdrone(M)) var/mob/living/L = M if(!L.incapacitated() && I == L.get_active_held_item()) - if(!I.SendSignal(COMSIG_CONTAINS_STORAGE) && can_be_inserted(I, FALSE)) //If it has storage it should be trying to dump, not insert. + if(!SEND_SIGNAL(I, COMSIG_CONTAINS_STORAGE) && can_be_inserted(I, FALSE)) //If it has storage it should be trying to dump, not insert. handle_item_insertion(I, FALSE, L) //This proc return 1 if the item can be picked up and 0 if it can't. //Set the stop_messages to stop it from printing messages /datum/component/storage/proc/can_be_inserted(obj/item/I, stop_messages = FALSE, mob/M) - if(!istype(I) || (I.flags_1 & ABSTRACT_1)) + if(!istype(I) || (I.item_flags & ABSTRACT)) return FALSE //Not an item if(I == parent) return FALSE //no paradoxes for you @@ -573,7 +575,7 @@ if(!stop_messages) to_chat(M, "[IP] cannot hold [I] as it's a storage item of the same size!") return FALSE //To prevent the stacking of same sized storage items. - if(I.flags_1 & NODROP_1) //SHOULD be handled in unEquip, but better safe than sorry. + if(I.item_flags & NODROP) //SHOULD be handled in unEquip, but better safe than sorry. to_chat(M, "\the [I] is stuck to your hand, you can't put it in \the [host]!") return FALSE var/datum/component/storage/concrete/master = master() @@ -639,10 +641,7 @@ /datum/component/storage/proc/signal_take_type(type, atom/destination, amount = INFINITY, check_adjacent = FALSE, force = FALSE, mob/user, list/inserted) if(!force) if(check_adjacent) - if(user) - if(!user.CanReach(destination) || !user.CanReach(parent)) - return FALSE - else if(!destination.CanReachStorage(parent)) + if(!user || !user.CanReach(destination) || !user.CanReach(parent)) return FALSE var/list/taking = typecache_filter_list(contents(), typecacheof(type)) if(length(taking) > amount) @@ -697,7 +696,10 @@ if(A.loc == user) . = COMPONENT_NO_ATTACK_HAND - show_to(user) + if(locked) + to_chat(user, "[parent] seems to be locked!") + else + show_to(user) /datum/component/storage/proc/signal_on_pickup(mob/user) var/atom/A = parent @@ -718,7 +720,7 @@ return hide_from(target) /datum/component/storage/proc/on_alt_click(mob/user) - if(!isliving(user) || user.incapacitated() || !quickdraw || !user.CanReach(parent)) + if(!isliving(user) || user.incapacitated() || !quickdraw || locked || !user.CanReach(parent)) return var/obj/item/I = locate() in real_location() if(!I) @@ -737,4 +739,4 @@ if(COLLECT_EVERYTHING) to_chat(user, "[parent] now picks up all items in a tile at once.") if(COLLECT_ONE) - to_chat(user, "[parent] now picks up one item at a time.") \ No newline at end of file + to_chat(user, "[parent] now picks up one item at a time.") diff --git a/code/datums/components/swarming.dm b/code/datums/components/swarming.dm index c80b8ba13b..f97e03579a 100644 --- a/code/datums/components/swarming.dm +++ b/code/datums/components/swarming.dm @@ -8,8 +8,8 @@ offset_x = rand(-max_x, max_x) offset_y = rand(-max_y, max_y) - RegisterSignal(COMSIG_MOVABLE_CROSSED, .proc/join_swarm) - RegisterSignal(COMSIG_MOVABLE_UNCROSSED, .proc/leave_swarm) + RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/join_swarm) + RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, .proc/leave_swarm) /datum/component/swarming/proc/join_swarm(atom/movable/AM) GET_COMPONENT_FROM(other_swarm, /datum/component/swarming, AM) diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm index 809abbfdcc..c9c1c5da3e 100644 --- a/code/datums/components/thermite.dm +++ b/code/datums/components/thermite.dm @@ -34,9 +34,9 @@ overlay = mutable_appearance('icons/effects/effects.dmi', "thermite") master.add_overlay(overlay) - RegisterSignal(COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react) - RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/attackby_react) - RegisterSignal(COMSIG_ATOM_FIRE_ACT, .proc/flame_react) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby_react) + RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, .proc/flame_react) /datum/component/thermite/Destroy() var/turf/master = parent @@ -60,7 +60,7 @@ if(amount >= 50) var/burning_time = max(100, 100-amount) - master = master.ScrapeAway() + master = master.Melt() master.burn_tile() if(user) master.add_hiddenprint(user) diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm new file mode 100644 index 0000000000..ad6e76182d --- /dev/null +++ b/code/datums/components/uplink.dm @@ -0,0 +1,251 @@ +GLOBAL_LIST_EMPTY(uplinks) + +/** + * Uplinks + * + * All /obj/item(s) have a hidden_uplink var. By default it's null. Give the item one with 'new(src') (it must be in it's contents). Then add 'uses.' + * Use whatever conditionals you want to check that the user has an uplink, and then call interact() on their uplink. + * You might also want the uplink menu to open if active. Check if the uplink is 'active' and then interact() with it. +**/ +/datum/component/uplink + dupe_mode = COMPONENT_DUPE_UNIQUE + var/name = "syndicate uplink" + var/active = FALSE + var/lockable = TRUE + var/locked = TRUE + var/allow_restricted = TRUE + var/telecrystals + var/selected_cat + var/owner = null + var/datum/game_mode/gamemode + var/datum/uplink_purchase_log/purchase_log + var/list/uplink_items + var/hidden_crystals = 0 + +/datum/component/uplink/Initialize(_owner, _lockable = TRUE, _enabled = FALSE, datum/game_mode/_gamemode, starting_tc = 20) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/interact) + if(istype(parent, /obj/item/implant)) + RegisterSignal(parent, COMSIG_IMPLANT_ACTIVATED, .proc/implant_activation) + RegisterSignal(parent, COMSIG_IMPLANT_IMPLANTING, .proc/implanting) + RegisterSignal(parent, COMSIG_IMPLANT_OTHER, .proc/old_implant) + RegisterSignal(parent, COMSIG_IMPLANT_EXISTING_UPLINK, .proc/new_implant) + else if(istype(parent, /obj/item/pda)) + RegisterSignal(parent, COMSIG_PDA_CHANGE_RINGTONE, .proc/new_ringtone) + else if(istype(parent, /obj/item/radio)) + RegisterSignal(parent, COMSIG_RADIO_NEW_FREQUENCY, .proc/new_frequency) + else if(istype(parent, /obj/item/pen)) + RegisterSignal(parent, COMSIG_PEN_ROTATED, .proc/pen_rotation) + + GLOB.uplinks += src + uplink_items = get_uplink_items(gamemode, TRUE, allow_restricted) + + if(_owner) + owner = _owner + LAZYINITLIST(GLOB.uplink_purchase_logs_by_key) + if(GLOB.uplink_purchase_logs_by_key[owner]) + purchase_log = GLOB.uplink_purchase_logs_by_key[owner] + else + purchase_log = new(owner, src) + lockable = _lockable + active = _enabled + gamemode = _gamemode + telecrystals = starting_tc + if(!lockable) + active = TRUE + locked = FALSE + +/datum/component/uplink/InheritComponent(datum/component/uplink/U) + lockable |= U.lockable + active |= U.active + if(!gamemode) + gamemode = U.gamemode + telecrystals += U.telecrystals + if(purchase_log && U.purchase_log) + purchase_log.MergeWithAndDel(U.purchase_log) + +/datum/component/uplink/Destroy() + GLOB.uplinks -= src + gamemode = null + purchase_log = null + return ..() + +/datum/component/uplink/proc/LoadTC(mob/user, obj/item/stack/telecrystal/TC, silent = FALSE) + if(!silent) + to_chat(user, "You slot [TC] into [parent] and charge its internal uplink.") + var/amt = TC.amount + telecrystals += amt + TC.use(amt) + +/datum/component/uplink/proc/set_gamemode(_gamemode) + gamemode = _gamemode + uplink_items = get_uplink_items(gamemode, TRUE, allow_restricted) + +/datum/component/uplink/proc/OnAttackBy(obj/item/I, mob/user) + if(!active) + return //no hitting everyone/everything just to try to slot tcs in! + if(istype(I, /obj/item/stack/telecrystal)) + LoadTC(user, I) + for(var/category in uplink_items) + for(var/item in uplink_items[category]) + var/datum/uplink_item/UI = uplink_items[category][item] + var/path = UI.refund_path || UI.item + var/cost = UI.refund_amount || UI.cost + if(I.type == path && UI.refundable && I.check_uplink_validity()) + telecrystals += cost + purchase_log.total_spent -= cost + to_chat(user, "[I] refunded.") + qdel(I) + return + +/datum/component/uplink/proc/interact(mob/user) + if(locked) + return + active = TRUE + if(user) + ui_interact(user) + // an unlocked uplink blocks also opening the PDA or headset menu + return COMPONENT_NO_INTERACT + +/datum/component/uplink/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.inventory_state) + active = TRUE + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "uplink", name, 450, 750, master_ui, state) + ui.set_autoupdate(FALSE) // This UI is only ever opened by one person, and never is updated outside of user input. + ui.set_style("syndicate") + ui.open() + +/datum/component/uplink/ui_data(mob/user) + if(!user.mind) + return + var/list/data = list() + data["telecrystals"] = telecrystals + data["lockable"] = lockable + + data["categories"] = list() + for(var/category in uplink_items) + var/list/cat = list( + "name" = category, + "items" = (category == selected_cat ? list() : null)) + if(category == selected_cat) + for(var/item in uplink_items[category]) + var/datum/uplink_item/I = uplink_items[category][item] + if(I.limited_stock == 0) + continue + if(I.restricted_roles.len) + var/is_inaccessible = 1 + for(var/R in I.restricted_roles) + if(R == user.mind.assigned_role) + is_inaccessible = 0 + if(is_inaccessible) + continue + cat["items"] += list(list( + "name" = I.name, + "cost" = I.cost, + "desc" = I.desc, + )) + data["categories"] += list(cat) + return data + +/datum/component/uplink/ui_act(action, params) + if(!active) + return + + switch(action) + if("buy") + var/item = params["item"] + + var/list/buyable_items = list() + for(var/category in uplink_items) + buyable_items += uplink_items[category] + + if(item in buyable_items) + var/datum/uplink_item/I = buyable_items[item] + MakePurchase(usr, I) + . = TRUE + if("lock") + active = FALSE + locked = TRUE + telecrystals += hidden_crystals + hidden_crystals = 0 + SStgui.close_uis(src) + if("select") + selected_cat = params["category"] + return TRUE + +/datum/component/uplink/proc/MakePurchase(mob/user, datum/uplink_item/U) + if(!istype(U)) + return + if (!user || user.incapacitated()) + return + + if(telecrystals < U.cost || U.limited_stock == 0) + return + telecrystals -= U.cost + + U.purchase(user, src) + + if(U.limited_stock > 0) + U.limited_stock -= 1 + + SSblackbox.record_feedback("nested tally", "traitor_uplink_items_bought", 1, list("[initial(U.name)]", "[U.cost]")) + return TRUE + +// Implant signal responses + +/datum/component/uplink/proc/implant_activation() + var/obj/item/implant/implant = parent + locked = FALSE + interact(implant.imp_in) + +/datum/component/uplink/proc/implanting(list/arguments) + var/mob/user = arguments[2] + owner = "[user.key]" + +/datum/component/uplink/proc/old_implant(list/arguments, obj/item/implant/new_implant) + // It kinda has to be weird like this until implants are components + return SEND_SIGNAL(new_implant, COMSIG_IMPLANT_EXISTING_UPLINK, src) + +/datum/component/uplink/proc/new_implant(datum/component/uplink/uplink) + uplink.telecrystals += telecrystals + return COMPONENT_DELETE_NEW_IMPLANT + +// PDA signal responses + +/datum/component/uplink/proc/new_ringtone(mob/living/user, new_ring_text) + var/obj/item/pda/master = parent + if(trim(lowertext(new_ring_text)) != trim(lowertext(master.lock_code))) //why is the lock code stored on the pda? + return + locked = FALSE + interact(user) + to_chat(user, "The PDA softly beeps.") + user << browse(null, "window=pda") + master.mode = 0 + return COMPONENT_STOP_RINGTONE_CHANGE + +// Radio signal responses + +/datum/component/uplink/proc/new_frequency(list/arguments) + var/obj/item/radio/master = parent + var/frequency = arguments[1] + if(frequency != master.traitor_frequency) + return + locked = FALSE + if(ismob(master.loc)) + interact(master.loc) + +// Pen signal responses + +/datum/component/uplink/proc/pen_rotation(degrees, mob/living/carbon/user) + var/obj/item/pen/master = parent + if(degrees != master.traitor_unlock_degrees) + return + locked = FALSE + master.degrees = 0 + interact(user) + to_chat(user, "Your pen makes a clicking noise, before quickly rotating back to 0 degrees!") \ No newline at end of file diff --git a/code/datums/components/wearertargeting.dm b/code/datums/components/wearertargeting.dm index adf8acceb9..107ab41e39 100644 --- a/code/datums/components/wearertargeting.dm +++ b/code/datums/components/wearertargeting.dm @@ -1,7 +1,6 @@ // A dummy parent type used for easily making components that target an item's wearer rather than the item itself. /datum/component/wearertargeting - var/datum/component/mobhook var/list/valid_slots = list() var/list/signals = list() var/datum/callback/callback = CALLBACK(GLOBAL_PROC, .proc/pass) @@ -10,17 +9,18 @@ /datum/component/wearertargeting/Initialize() if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/checkMobHook) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + +/datum/component/wearertargeting/proc/on_equip(mob/equipper, slot) + if((slot in valid_slots) && istype(equipper, mobtype)) + RegisterSignal(equipper, signals, callback, TRUE) + else + UnregisterSignal(equipper, signals) + +/datum/component/wearertargeting/proc/on_drop(mob/user) + UnregisterSignal(user, signals) /datum/component/wearertargeting/Destroy() - QDEL_NULL(mobhook) - return ..() - -/datum/component/wearertargeting/proc/checkMobHook(mob/user, slot) - if ((slot in valid_slots) && istype(user, mobtype)) - if (mobhook && mobhook.parent != user) - QDEL_NULL(mobhook) - if (!mobhook) - mobhook = user.AddComponent(/datum/component/redirect, signals, callback) - else - QDEL_NULL(mobhook) + QDEL_NULL(callback) //is likely to ourselves. + return ..() \ No newline at end of file diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 0baddd87eb..1a6bc015d6 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -26,8 +26,8 @@ if(!isopenturf(parent)) return COMPONENT_INCOMPATIBLE add_wet(strength, duration_minimum, duration_add, duration_maximum) - RegisterSignal(COMSIG_TURF_IS_WET, .proc/is_wet) - RegisterSignal(COMSIG_TURF_MAKE_DRY, .proc/dry) + RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet) + RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry) permanent = _permanent if(!permanent) START_PROCESSING(SSwet_floors, src) @@ -175,7 +175,7 @@ if(!LAZYLEN(time_left_list)) if(on_init) var/turf/T = parent - stack_trace("Warning: Wet floor component gc'd right initializatoin! What a waste of time and CPU! Type = [T? T.type : "ERROR - NO PARENT"], Coords = [istype(T)? COORD(T) : "ERROR - INVALID PARENT"].") + stack_trace("Warning: Wet floor component gc'd right after initialization! What a waste of time and CPU! Type = [T? T.type : "ERROR - NO PARENT"], Location = [istype(T)? AREACOORD(T) : "ERROR - INVALID PARENT"].") qdel(src) return TRUE return FALSE diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 793d9f2a4b..9e14704123 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -2,6 +2,7 @@ var/gc_destroyed //Time when this object was destroyed. var/list/active_timers //for SStimer var/list/datum_components //for /datum/components + var/list/comp_lookup //for /datum/components var/datum_flags = NONE var/datum/weakref/weak_reference @@ -41,6 +42,19 @@ qdel(C, FALSE, TRUE) dc.Cut() + var/list/lookup = comp_lookup + if(lookup) + for(var/sig in lookup) + var/list/comps = lookup[sig] + if(length(comps)) + for(var/i in comps) + var/datum/component/comp = i + comp.UnregisterSignal(src, sig) + else + var/datum/component/comp = comps + comp.UnregisterSignal(src, sig) + comp_lookup = lookup = null + return QDEL_HINT_QUEUE #ifdef DATUMVAR_DEBUGGING_MODE diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 59953a4ce1..56f2243015 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -96,7 +96,7 @@ else atomsnowflake += "[D]" if(A.dir) - atomsnowflake += "
<< [dir2text(A.dir)] >>" + atomsnowflake += "
<< [dir2text(A.dir)] >>" else atomsnowflake += "[D]" diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 221dd7e804..0af4eea8ac 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -32,6 +32,7 @@ var/list/strain_data = list() //dna_spread special bullshit var/list/infectable_biotypes = list(MOB_ORGANIC) //if the disease can spread on organics, synthetics, or undead var/process_dead = FALSE //if this ticks while the host is dead + var/copy_type = null //if this is null, copies will use the type of the instance being copied /datum/disease/Destroy() . = ..() @@ -41,10 +42,8 @@ //add this disease if the host does not already have too many /datum/disease/proc/try_infect(var/mob/living/infectee, make_copy = TRUE) - if(infectee.diseases.len < DISEASE_LIMIT) - infect(infectee, make_copy) - return TRUE - return FALSE + infect(infectee, make_copy) + return TRUE //add the disease with no checks /datum/disease/proc/infect(var/mob/living/infectee, make_copy = TRUE) @@ -141,7 +140,7 @@ "bypasses_immunity", "permeability_mod", "severity", "required_organs", "needs_all_cures", "strain_data", "infectable_biotypes", "process_dead") - var/datum/disease/D = new type() + var/datum/disease/D = copy_type ? new copy_type() : new type() for(var/V in copy_vars) var/val = vars[V] if(islist(val)) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 67eb33277a..f506f44ad5 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -56,22 +56,20 @@ return ..() /datum/disease/advance/try_infect(var/mob/living/infectee, make_copy = TRUE) - var/replace_num = infectee.diseases.len + 1 - DISEASE_LIMIT + //see if we are more transmittable than enough diseases to replace them + //diseases replaced in this way do not confer immunity + var/list/advance_diseases = list() + for(var/datum/disease/advance/P in infectee.diseases) + advance_diseases += P + var/replace_num = advance_diseases.len + 1 - DISEASE_LIMIT //amount of diseases that need to be removed to fit this one if(replace_num > 0) - //see if we are more transmittable than enough diseases to replace them - //diseases replaced in this way do not confer immunity - var/list/L = list() - for(var/datum/disease/advance/P in infectee.diseases) - L += P - sortTim(L, /proc/cmp_advdisease_resistance_asc) - var/datum/disease/advance/competition = L[replace_num] - if(totalTransmittable() > competition.totalResistance()) - for(var/i in 1 to replace_num) - var/datum/disease/advance/A = L[replace_num] - A.cure(FALSE) - else - //we are not strong enough to bully our way in - return FALSE + sortTim(advance_diseases, /proc/cmp_advdisease_resistance_asc) + for(var/i in 1 to replace_num) + var/datum/disease/advance/competition = advance_diseases[i] + if(totalTransmittable() > competition.totalResistance()) + competition.cure(FALSE) + else + return FALSE //we are not strong enough to bully our way in infect(infectee, make_copy) return TRUE @@ -189,7 +187,9 @@ if(properties && properties.len) if(properties["stealth"] >= 2) - visibility_flags = HIDDEN_SCANNER + visibility_flags |= HIDDEN_SCANNER + else + visibility_flags &= ~HIDDEN_SCANNER SetSpread(CLAMP(2 ** (properties["transmittable"] - symptoms.len), DISEASE_SPREAD_BLOOD, DISEASE_SPREAD_AIRBORNE)) diff --git a/code/datums/diseases/advance/presets.dm b/code/datums/diseases/advance/presets.dm index 9574338b51..d2c4b1983f 100644 --- a/code/datums/diseases/advance/presets.dm +++ b/code/datums/diseases/advance/presets.dm @@ -1,52 +1,42 @@ // Cold +/datum/disease/advance/cold + copy_type = /datum/disease/advance /datum/disease/advance/cold/New() name = "Cold" symptoms = list(new/datum/symptom/sneeze) ..() - // Flu +/datum/disease/advance/flu + copy_type = /datum/disease/advance /datum/disease/advance/flu/New() name = "Flu" symptoms = list(new/datum/symptom/cough) ..() +//Randomly generated Disease, for virus crates and events +/datum/disease/advance/random + name = "Experimental Disease" + copy_type = /datum/disease/advance -// Voice Changing +/datum/disease/advance/random/New(max_symptoms, max_level = 8) + if(!max_symptoms) + max_symptoms = rand(1, VIRUS_SYMPTOM_LIMIT) + var/list/datum/symptom/possible_symptoms = list() + for(var/symptom in subtypesof(/datum/symptom)) + var/datum/symptom/S = symptom + if(initial(S.level) > max_level) + continue + if(initial(S.level) <= 0) //unobtainable symptoms + continue + possible_symptoms += S + for(var/i in 1 to max_symptoms) + var/datum/symptom/chosen_symptom = pick_n_take(possible_symptoms) + if(chosen_symptom) + var/datum/symptom/S = new chosen_symptom + symptoms += S + Refresh() -/datum/disease/advance/voice_change/New() - name = "Epiglottis Mutation" - symptoms = list(new/datum/symptom/voice_change) - ..() - - -// Toxin Filter - -/datum/disease/advance/heal/New() - name = "Liver Enhancer" - symptoms = list(new/datum/symptom/heal) - ..() - - -// Hallucigen - -/datum/disease/advance/hallucigen/New() - name = "Second Sight" - symptoms = list(new/datum/symptom/hallucigen) - ..() - -// Sensory Restoration - -/datum/disease/advance/mind_restoration/New() - name = "Intelligence Booster" - symptoms = list(new/datum/symptom/mind_restoration) - ..() - -// Sensory Destruction - -/datum/disease/advance/narcolepsy/New() - name = "Experimental Insomnia Cure" - symptoms = list(new/datum/symptom/narcolepsy) - ..() \ No newline at end of file + name = "Sample #[rand(1,10000)]" \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/confusion.dm b/code/datums/diseases/advance/symptoms/confusion.dm index 4ff69680ce..e7315c6bb1 100644 --- a/code/datums/diseases/advance/symptoms/confusion.dm +++ b/code/datums/diseases/advance/symptoms/confusion.dm @@ -6,7 +6,7 @@ Confusion Little bit hidden. Lowers resistance. Decreases stage speed. - Not very transmittable. + Not very transmissibile. Intense Level. Bonus diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm index 1633b41352..83d93c55e0 100644 --- a/code/datums/diseases/advance/symptoms/cough.dm +++ b/code/datums/diseases/advance/symptoms/cough.dm @@ -6,7 +6,7 @@ Coughing Noticable. Little Resistance. Doesn't increase stage speed much. - Transmittable. + Transmissibile. Low Level. BONUS diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index 781cd6de4d..f85024a7a9 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -125,7 +125,7 @@ Bonus symptom_delay_max = 140 if(A.properties["stage_rate"] >= 8) //serious boom when wet explosion_power = 2 - if(A.properties["transmission"] >= 8) //extra chemicals + if(A.properties["transmittable"] >= 8) //extra chemicals chems = TRUE /datum/symptom/alkali/Activate(datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/hallucigen.dm b/code/datums/diseases/advance/symptoms/hallucigen.dm index 5509f8b07b..39ecc61956 100644 --- a/code/datums/diseases/advance/symptoms/hallucigen.dm +++ b/code/datums/diseases/advance/symptoms/hallucigen.dm @@ -50,7 +50,7 @@ Bonus if(1, 2) if(prob(base_message_chance)) if(!fake_healthy) - to_chat(M, "[pick("Something appears in your peripheral vision, then winks out.", "You hear a faint whispher with no source.", "Your head aches.")]") + to_chat(M, "[pick("Something appears in your peripheral vision, then winks out.", "You hear a faint whisper with no source.", "Your head aches.")]") else to_chat(M, "[pick(healthy_messages)]") if(3, 4) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 02e0546201..9f274c0aa3 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -60,7 +60,7 @@ /datum/symptom/heal/starlight/Start(datum/disease/advance/A) if(!..()) return - if(A.properties["transmission"] >= 6) + if(A.properties["transmittable"] >= 6) nearspace_penalty = 1 if(A.properties["stage_rate"] >= 6) power = 2 @@ -358,7 +358,7 @@ return if(A.properties["stage_rate"] >= 7) power = 2 - if(A.properties["trasmission"] >= 6) + if(A.properties["transmittable"] >= 6) temp_rate = 4 /datum/symptom/heal/plasma/CanHeal(datum/disease/advance/A) @@ -425,7 +425,7 @@ return if(A.properties["resistance"] >= 7) power = 2 - if(A.properties["trasmission"] >= 6) + if(A.properties["transmittable"] >= 6) cellular_damage = TRUE /datum/symptom/heal/radiation/CanHeal(datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm index c1952bf716..1ede16999d 100644 --- a/code/datums/diseases/advance/symptoms/itching.dm +++ b/code/datums/diseases/advance/symptoms/itching.dm @@ -6,7 +6,7 @@ Itching Not noticable or unnoticable. Resistant. Increases stage speed. - Little transmittable. + Little transmissibility. Low Level. BONUS diff --git a/code/datums/diseases/advance/symptoms/shedding.dm b/code/datums/diseases/advance/symptoms/shedding.dm index 8946a83108..06df320496 100644 --- a/code/datums/diseases/advance/symptoms/shedding.dm +++ b/code/datums/diseases/advance/symptoms/shedding.dm @@ -33,7 +33,7 @@ BONUS var/mob/living/M = A.affected_mob if(prob(base_message_chance)) - to_chat(M, "[pick("Your scalp itches.", "Your skin feels flakey.")]") + to_chat(M, "[pick("Your scalp itches.", "Your skin feels flaky.")]") if(ishuman(M)) var/mob/living/carbon/human/H = M switch(A.stage) diff --git a/code/datums/diseases/advance/symptoms/shivering.dm b/code/datums/diseases/advance/symptoms/shivering.dm index c67bf7798a..e4bb5e1b3e 100644 --- a/code/datums/diseases/advance/symptoms/shivering.dm +++ b/code/datums/diseases/advance/symptoms/shivering.dm @@ -33,10 +33,10 @@ Bonus /datum/symptom/fever/Start(datum/disease/advance/A) if(!..()) return - if(A.properties["stage_speed"] >= 5) //dangerous cold + if(A.properties["stage_rate"] >= 5) //dangerous cold power = 1.5 unsafe = TRUE - if(A.properties["stage_speed"] >= 10) + if(A.properties["stage_rate"] >= 10) power = 2.5 /datum/symptom/shivering/Activate(datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm index 3648f5d707..8fe70c542f 100644 --- a/code/datums/diseases/advance/symptoms/sneeze.dm +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -6,7 +6,7 @@ Sneezing Very Noticable. Increases resistance. Doesn't increase stage speed. - Very transmittable. + Very transmissible. Low Level. Bonus diff --git a/code/datums/diseases/advance/symptoms/vomit.dm b/code/datums/diseases/advance/symptoms/vomit.dm index 53e79f0cc1..04b0778ccd 100644 --- a/code/datums/diseases/advance/symptoms/vomit.dm +++ b/code/datums/diseases/advance/symptoms/vomit.dm @@ -6,7 +6,7 @@ Vomiting Very Very Noticable. Decreases resistance. Doesn't increase stage speed. - Little transmittable. + Little transmissibility. Medium Level. Bonus diff --git a/code/datums/diseases/parrotpossession.dm b/code/datums/diseases/parrotpossession.dm index 66395ef5a5..ee58c28761 100644 --- a/code/datums/diseases/parrotpossession.dm +++ b/code/datums/diseases/parrotpossession.dm @@ -9,7 +9,7 @@ cure_chance = 20 agent = "Avian Vengence" viable_mobtypes = list(/mob/living/carbon/human) - desc = "Subject is possesed by the vengeful spirit of a parrot. Call the priest." + desc = "Subject is possessed by the vengeful spirit of a parrot. Call the priest." severity = DISEASE_SEVERITY_MEDIUM infectable_biotypes = list(MOB_ORGANIC, MOB_UNDEAD, MOB_INORGANIC, MOB_ROBOTIC) bypasses_immunity = TRUE //2spook diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 52b63ccd5f..2113a99813 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -50,12 +50,15 @@ if(stage5) to_chat(affected_mob, pick(stage5)) if(jobban_isbanned(affected_mob, new_form)) - affected_mob.death(1) + if(!QDELETED(affected_mob)) + affected_mob.death(1) + return + if(QDELETED(affected_mob)) return if(affected_mob.notransform) return affected_mob.notransform = 1 - for(var/obj/item/W in affected_mob.get_equipped_items()) + for(var/obj/item/W in affected_mob.get_equipped_items(TRUE)) affected_mob.dropItemToGround(W) for(var/obj/item/I in affected_mob.held_items) affected_mob.dropItemToGround(I) @@ -90,9 +93,9 @@ agent = "Kongey Vibrion M-909" new_form = /mob/living/carbon/monkey - stage1 = null - stage2 = null - stage3 = null + stage1 = list() + stage2 = list() + stage3 = list() stage4 = list("Your back hurts.", "You breathe through your mouth.", "You have a craving for bananas.", "Your mind feels clouded.") stage5 = list("You feel like monkeying around.") @@ -143,7 +146,7 @@ desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg." severity = DISEASE_SEVERITY_BIOHAZARD visibility_flags = 0 - stage1 = null + stage1 = list() stage2 = list("Your joints feel stiff.", "Beep...boop..") stage3 = list("Your joints feel very stiff.", "Your skin feels loose.", "You can feel something move...inside.") stage4 = list("Your skin feels very loose.", "You can feel... something...inside you.") @@ -175,7 +178,7 @@ desc = "This disease changes the victim into a xenomorph." severity = DISEASE_SEVERITY_BIOHAZARD visibility_flags = 0 - stage1 = null + stage1 = list() stage2 = list("Your throat feels scratchy.", "Kill...") stage3 = list("Your throat feels very scratchy.", "Your skin feels tight.", "You can feel something move...inside.") stage4 = list("Your skin feels very tight.", "Your blood boils!", "You can feel... something...inside you.") diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm index e413891e75..788107c4b6 100644 --- a/code/datums/diseases/tuberculosis.dm +++ b/code/datums/diseases/tuberculosis.dm @@ -8,7 +8,7 @@ agent = "Fungal Tubercle bacillus Cosmosis" viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 5//like hell are you getting out of hell - desc = "A rare highly transmittable virulent virus. Few samples exist, rumoured to be carefully grown and cultured by clandestine bio-weapon specialists. Causes fever, blood vomiting, lung damage, weight loss, and fatigue." + desc = "A rare highly transmissible virulent virus. Few samples exist, rumoured to be carefully grown and cultured by clandestine bio-weapon specialists. Causes fever, blood vomiting, lung damage, weight loss, and fatigue." required_organs = list(/obj/item/organ/lungs) severity = DISEASE_SEVERITY_BIOHAZARD bypasses_immunity = TRUE // TB primarily impacts the lungs; it's also bacterial or fungal in nature; viral immunity should do nothing. diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 49120b03b5..3e97fd20f9 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -1,10 +1,11 @@ + /////////////////////////// DNA DATUM /datum/dna var/unique_enzymes var/struc_enzymes var/uni_identity var/blood_type - var/datum/species/species = new /datum/species/human() //The type of mutant race the player is if applicable (i.e. potato-man) + var/datum/species/species = new /datum/species/human //The type of mutant race the player is if applicable (i.e. potato-man) var/list/features = list("FFF") //first value is mutant color var/real_name //Stores the real name of the person who originally got this dna datum. Used primarely for changelings, var/list/mutations = list() //All mutations are from now on here @@ -29,7 +30,7 @@ previous.Cut() //^ return ..() - + /datum/dna/proc/transfer_identity(mob/living/carbon/destination, transfer_SE = 0) if(!istype(destination)) return diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm index 7e9e9c870f..9f521dac8a 100644 --- a/code/datums/explosion.dm +++ b/code/datums/explosion.dm @@ -84,16 +84,15 @@ GLOBAL_LIST_EMPTY(explosions) var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range) - var/area/epi_area = get_area(epicenter) if(adminlog) - message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area: [epi_area] [ADMIN_COORDJMP(epicenter)]") - log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])") + message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [ADMIN_VERBOSEJMP(epicenter)]") + log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [AREACOORD(epicenter)]") var/x0 = epicenter.x var/y0 = epicenter.y var/z0 = epicenter.z - - SSblackbox.record_feedback("associative", "explosion", 1, list("dev" = devastation_range, "heavy" = heavy_impact_range, "light" = light_impact_range, "flash" = flash_range, "flame" = flame_range, "orig_dev" = orig_dev_range, "orig_heavy" = orig_heavy_range, "orig_light" = orig_light_range, "x" = x0, "y" = y0, "z" = z0, "area" = epi_area.type)) + var/area/areatype = get_area(epicenter) + SSblackbox.record_feedback("associative", "explosion", 1, list("dev" = devastation_range, "heavy" = heavy_impact_range, "light" = light_impact_range, "flash" = flash_range, "flame" = flame_range, "orig_dev" = orig_dev_range, "orig_heavy" = orig_heavy_range, "orig_light" = orig_light_range, "x" = x0, "y" = y0, "z" = z0, "area" = areatype.type)) // Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves. // Stereo users will also hear the direction of the explosion! @@ -202,7 +201,8 @@ GLOBAL_LIST_EMPTY(explosions) items += A.GetAllContents() for(var/O in items) var/atom/A = O - A.ex_act(dist) + if(!QDELETED(A)) + A.ex_act(dist) if(flame_dist && prob(40) && !isspaceturf(T) && !T.density) new /obj/effect/hotspot(T) //Mostly for ambience! @@ -358,7 +358,7 @@ GLOBAL_LIST_EMPTY(explosions) heavy = 5 light = 7 if("Custom Bomb") - dev = input("Devestation range (Tiles):") as num + dev = input("Devastation range (Tiles):") as num heavy = input("Heavy impact range (Tiles):") as num light = input("Light impact range (Tiles):") as num diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index b459b31fcb..a30ed5f927 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -23,8 +23,8 @@ if(line) var/datum/tgs_revision_information/test_merge/tm = line var/tmcommit = tm.commit - log_world("Test merge active of PR #[line] commit [tmcommit]") - SSblackbox.record_feedback("nested tally", "testmerged_prs", 1, list("[line]", "[tmcommit]")) + log_world("Test merge active of PR #[tm.number] commit [tmcommit]") + SSblackbox.record_feedback("nested tally", "testmerged_prs", 1, list("[tm.number]", "[tmcommit]")) if(originmastercommit) log_world("Based off origin/master commit [originmastercommit]") else if(originmastercommit) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index ce5f5df1d9..4ef292d1b1 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -1,171 +1,74 @@ -//wrapper -/proc/do_teleport(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null) - var/datum/teleport/instant/science/D = new - if(D.start(arglist(args))) - return TRUE - return FALSE +// teleatom: atom to teleport +// destination: destination to teleport to +// precision: teleport precision (0 is most precise, the default) +// effectin: effect to show right before teleportation +// effectout: effect to show right after teleportation +// asoundin: soundfile to play before teleportation +// asoundout: soundfile to play after teleportation +// force_teleport: if false, teleport will use Move() proc (dense objects will prevent teleportation) +// no_effects: disable the default effectin/effectout of sparks +/proc/do_teleport(atom/movable/teleatom, atom/destination, precision=null, force_teleport=TRUE, datum/effect_system/effectin=null, datum/effect_system/effectout=null, asoundin=null, asoundout=null, no_effects=FALSE) + // teleporting most effects just deletes them + if(iseffect(teleatom) && !istype(teleatom, /obj/effect/dummy/chameleon)) + qdel(teleatom) + return FALSE -/datum/teleport - var/atom/movable/teleatom //atom to teleport - var/atom/destination //destination to teleport to - var/precision = 0 //teleport precision - var/datum/effect_system/effectin //effect to show right before teleportation - var/datum/effect_system/effectout //effect to show right after teleportation - var/soundin //soundfile to play before teleportation - var/soundout //soundfile to play after teleportation - var/force_teleport = 1 //if false, teleport will use Move() proc (dense objects will prevent teleportation) + // argument handling + // if the precision is not specified, default to 0, but apply BoH penalties + if (isnull(precision)) + precision = 0 + if(istype(teleatom, /obj/item/storage/backpack/holding)) + precision = rand(1,100) -/datum/teleport/proc/start(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null) - if(!initTeleport(arglist(args))) - return 0 - return 1 + var/static/list/bag_cache = typecacheof(/obj/item/storage/backpack/holding) + var/list/bagholding = typecache_filter_list(teleatom.GetAllContents(), bag_cache) + if(bagholding.len) + precision = max(rand(1,100)*bagholding.len,100) + if(isliving(teleatom)) + var/mob/living/MM = teleatom + to_chat(MM, "The bluespace interface on your bag of holding interferes with the teleport!") -/datum/teleport/proc/initTeleport(ateleatom,adestination,aprecision,afteleport,aeffectin,aeffectout,asoundin,asoundout) - if(!setTeleatom(ateleatom)) - return 0 - if(!setDestination(adestination)) - return 0 - if(!setPrecision(aprecision)) - return 0 - setEffects(aeffectin,aeffectout) - setForceTeleport(afteleport) - setSounds(asoundin,asoundout) - return 1 + // if effects are not specified and not explicitly disabled, sparks + if ((!effectin || !effectout) && !no_effects) + var/datum/effect_system/spark_spread/sparks = new + sparks.set_up(5, 1, teleatom) + if (!effectin) + effectin = sparks + if (!effectout) + effectout = sparks -//must succeed -/datum/teleport/proc/setPrecision(aprecision) - if(isnum(aprecision)) - precision = aprecision - return 1 - return 0 - -//must succeed -/datum/teleport/proc/setDestination(atom/adestination) - if(istype(adestination)) - destination = adestination - return 1 - return 0 - -//must succeed in most cases -/datum/teleport/proc/setTeleatom(atom/movable/ateleatom) - if(iseffect(ateleatom) && !istype(ateleatom, /obj/effect/dummy/chameleon)) - qdel(ateleatom) - return 0 - if(istype(ateleatom)) - teleatom = ateleatom - return 1 - return 0 - -//custom effects must be properly set up first for instant-type teleports -//optional -/datum/teleport/proc/setEffects(datum/effect_system/aeffectin=null,datum/effect_system/aeffectout=null) - effectin = istype(aeffectin) ? aeffectin : null - effectout = istype(aeffectout) ? aeffectout : null - return 1 - -//optional -/datum/teleport/proc/setForceTeleport(afteleport) - force_teleport = afteleport - return 1 - -//optional -/datum/teleport/proc/setSounds(asoundin=null,asoundout=null) - soundin = isfile(asoundin) ? asoundin : null - soundout = isfile(asoundout) ? asoundout : null - return 1 - -//placeholder -/datum/teleport/proc/teleportChecks() - return 1 - -/datum/teleport/proc/playSpecials(atom/location,datum/effect_system/effect,sound) - if(location && !isobserver(teleatom)) - if(effect) - INVOKE_ASYNC(src, .proc/do_effect, location, effect) - if(sound) - INVOKE_ASYNC(src, .proc/do_sound, location, sound) - -/datum/teleport/proc/do_effect(atom/location, datum/effect_system/effect) - src = null - effect.attach(location) - effect.start() - -/datum/teleport/proc/do_sound(atom/location, sound) - src = null - playsound(location, sound, 60, 1) - -//do the monkey dance -/datum/teleport/proc/doTeleport() - - var/turf/destturf + // perform the teleport var/turf/curturf = get_turf(teleatom) - destturf = get_teleport_turf(get_turf(destination), precision) + var/turf/destturf = get_teleport_turf(get_turf(destination), precision) if(!destturf || !curturf || destturf.is_transition_turf()) - return 0 + return FALSE var/area/A = get_area(curturf) if(A.noteleport) - return 0 + return FALSE - playSpecials(curturf,effectin,soundin) - if(force_teleport) - teleatom.forceMove(destturf) + tele_play_specials(teleatom, curturf, effectin, asoundin) + var/success = force_teleport ? teleatom.forceMove(destturf) : teleatom.Move(destturf) + if (success) + log_game("[teleatom] ([key_name(teleatom)]) has teleported from [AREACOORD(curturf)] to [AREACOORD(destturf)]") + tele_play_specials(teleatom, destturf, effectout, asoundout) if(ismegafauna(teleatom)) - message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_COORDJMP(curturf)] to [ADMIN_COORDJMP(destturf)].") - playSpecials(destturf,effectout,soundout) - else - if(teleatom.Move(destturf)) - playSpecials(destturf,effectout,soundout) - if(ismegafauna(teleatom)) - message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_COORDJMP(curturf)] to [ADMIN_COORDJMP(destturf)].") + message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_VERBOSEJMP(curturf)] to [ADMIN_VERBOSEJMP(destturf)].") + if(ismob(teleatom)) var/mob/M = teleatom M.cancel_camera() - return 1 -/datum/teleport/proc/teleport() - if(teleportChecks()) - return doTeleport() - return 0 - -/datum/teleport/instant //teleports when datum is created - - start(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null) - if(..()) - if(teleport()) - return 1 - return 0 - - -/datum/teleport/instant/science - -/datum/teleport/instant/science/setEffects(datum/effect_system/aeffectin,datum/effect_system/aeffectout) - if(aeffectin==null || aeffectout==null) - var/datum/effect_system/spark_spread/aeffect = new - aeffect.set_up(5, 1, teleatom) - effectin = effectin || aeffect - effectout = effectout || aeffect - return 1 - else - return ..() - -/datum/teleport/instant/science/setPrecision(aprecision) - ..() - if(istype(teleatom, /obj/item/storage/backpack/holding)) - precision = rand(1,100) - - var/static/list/bag_cache = typecacheof(/obj/item/storage/backpack/holding) - var/list/bagholding = typecache_filter_list(teleatom.GetAllContents(), bag_cache) - if(bagholding.len) - precision = max(rand(1,100)*bagholding.len,100) - if(isliving(teleatom)) - var/mob/living/MM = teleatom - to_chat(MM, "The bluespace interface on your bag of holding interferes with the teleport!") - return TRUE +/proc/tele_play_specials(atom/movable/teleatom, atom/location, datum/effect_system/effect, sound) + if (location && !isobserver(teleatom)) + if (sound) + playsound(location, sound, 60, 1) + if (effect) + effect.attach(location) + effect.start() // Safe location finder - /proc/find_safe_turf(zlevel, list/zlevels, extended_safety_checks = FALSE) if(!zlevels) if (zlevel) diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index d19e8be2e1..9d4b86b5ef 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -60,17 +60,19 @@ user.remote_control = null if(!QDELETED(eye)) - if(user_good && user.client) - for(var/datum/camerachunk/chunk in eye.visibleCameraChunks) - chunk.remove(eye) - qdel(eye) - eye = null + eye.RemoveImages() + QDEL_NULL(eye) + + if(connected_holopad && !QDELETED(hologram)) + hologram = null + connected_holopad.clear_holo(user) user = null - if(hologram) + //Hologram survived holopad destro + if(!QDELETED(hologram)) hologram.HC = null - hologram = null + QDEL_NULL(hologram) for(var/I in dialed_holopads) var/obj/machinery/holopad/H = I @@ -93,9 +95,10 @@ /datum/holocall/proc/Disconnect(obj/machinery/holopad/H) testing("Holocall disconnect") if(H == connected_holopad) - calling_holopad.say("[usr] disconnected.") + var/area/A = get_area(connected_holopad) + calling_holopad.say("[A] holopad disconnected.") else if(H == calling_holopad && connected_holopad) - connected_holopad.say("[usr] disconnected.") + connected_holopad.say("[user] disconnected.") ConnectionFailure(H, TRUE) @@ -157,6 +160,7 @@ eye.setLoc(H.loc) hangup = new(eye, src) + hangup.Grant(user) //Checks the validity of a holocall and qdels itself if it's not. Returns TRUE if valid, FALSE otherwise /datum/holocall/proc/Check() @@ -174,7 +178,7 @@ if(!connected_holopad) . = world.time < (call_start_time + HOLOPAD_MAX_DIAL_TIME) if(!.) - calling_holopad.say("No answer recieved.") + calling_holopad.say("No answer received.") calling_holopad.temp = "" if(!.) @@ -205,7 +209,7 @@ /datum/holorecord/proc/set_caller_image(mob/user) var/olddir = user.dir user.setDir(SOUTH) - caller_image = getFlatIcon(user) + caller_image = image(user) user.setDir(olddir) /obj/item/disk/holodisk @@ -284,7 +288,7 @@ else var/datum/preset_holoimage/H = new preset_image_type record.caller_image = H.build_image() - + //These build caller image from outfit and some additional data, for use by mappers for ruin holorecords /datum/preset_holoimage var/nonhuman_mobtype //Fill this if you just want something nonhuman @@ -303,7 +307,7 @@ mannequin.equipOutfit(outfit_type,TRUE) mannequin.setDir(SOUTH) COMPILE_OVERLAYS(mannequin) - . = getFlatIcon(mannequin) + . = image(mannequin) unset_busy_human_dummy("HOLODISK_PRESET") /obj/item/disk/holodisk/example @@ -347,4 +351,3 @@ /datum/preset_holoimage/clown outfit_type = /datum/outfit/job/clown - diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index c48cf4d9dd..4a51ac3251 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -21,7 +21,8 @@ restraining = FALSE /datum/martial_art/cqc/can_use(mob/living/carbon/human/H) - if(just_a_cook && !(is_type_in_typecache(get_area(H), areas_under_siege))) + var/area/A = get_area(H) + if(just_a_cook && !(is_type_in_typecache(A, areas_under_siege))) return FALSE return ..() diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 6c744b3d84..5beb84a1f6 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -41,14 +41,10 @@ var/special_role var/list/restricted_roles = list() - var/datum/job/assigned_job - var/list/datum/objective/objectives = list() var/list/spell_list = list() // Wizard mode & "Give Spell" badmin button. - var/datum/faction/faction //associated faction - var/datum/changeling/changeling //changeling holder var/linglink var/datum/martial_art/martial_art var/static/default_martial_art = new/datum/martial_art @@ -202,9 +198,7 @@ special_role = null /datum/mind/proc/remove_traitor() - if(src in SSticker.mode.traitors) - remove_antag_datum(/datum/antagonist/traitor) - SSticker.mode.update_traitor_icons_removed(src) + remove_antag_datum(/datum/antagonist/traitor) /datum/mind/proc/remove_brother() if(src in SSticker.mode.brothers) @@ -252,7 +246,6 @@ remove_wizard() remove_cultist() remove_rev() - SSticker.mode.update_traitor_icons_removed(src) SSticker.mode.update_cult_icons_removed(src) /datum/mind/proc/equip_traitor(employer = "The Syndicate", silent = FALSE, datum/antagonist/uplink_owner) @@ -365,7 +358,7 @@ if(creator.mind.special_role) message_admins("[ADMIN_LOOKUPFLW(current)] has been created by [ADMIN_LOOKUPFLW(creator)], an antagonist.") - to_chat(current, "Despite your creators current allegiances, your true master remains [creator.real_name]. If their loyalities change, so do yours. This will never change unless your creator's body is destroyed.") + to_chat(current, "Despite your creators current allegiances, your true master remains [creator.real_name]. If their loyalties change, so do yours. This will never change unless your creator's body is destroyed.") /datum/mind/proc/show_memory(mob/recipient, window=1) if(!recipient) @@ -689,7 +682,7 @@ if(!(has_antag_datum(/datum/antagonist/traitor))) add_antag_datum(/datum/antagonist/traitor) -/datum/mind/proc/make_Changling() +/datum/mind/proc/make_Changeling() var/datum/antagonist/changeling/C = has_antag_datum(/datum/antagonist/changeling) if(!C) C = add_antag_datum(/datum/antagonist/changeling) @@ -708,7 +701,7 @@ SSticker.mode.add_cultist(src,FALSE,equip=TRUE) special_role = ROLE_CULTIST to_chat(current, "You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy your world is, you see that it should be open to the knowledge of Nar-Sie.") - to_chat(current, "Assist your new bretheren in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.") + to_chat(current, "Assist your new brethren in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.") /datum/mind/proc/make_Rev() var/datum/antagonist/rev/head/head = new() diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index f0da9b125f..dbe150b0fa 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -11,7 +11,7 @@ owner.visible_message("[owner] starts having a seizure!", "You have a seizure!") owner.Unconscious(200) owner.Jitter(1000) - owner.SendSignal(COMSIG_ADD_MOOD_EVENT, "epilepsy", /datum/mood_event/epilepsy) + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "epilepsy", /datum/mood_event/epilepsy) addtimer(CALLBACK(src, .proc/jitter_less, owner), 90) /datum/mutation/human/epilepsy/proc/jitter_less(mob/living/carbon/human/owner) @@ -96,12 +96,12 @@ //Tourettes causes you to randomly stand in place and shout. /datum/mutation/human/tourettes - name = "Tourettes Syndrome" + name = "Tourette's Syndrome" quality = NEGATIVE text_gain_indication = "You twitch." /datum/mutation/human/tourettes/on_life(mob/living/carbon/human/owner) - if(prob(10) && owner.stat == CONSCIOUS) + if(prob(10) && owner.stat == CONSCIOUS && !owner.IsStun()) owner.Stun(200) switch(rand(1, 3)) if(1) diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index d51b7dd891..7bcd056fab 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -14,7 +14,7 @@ owner.add_trait(TRAIT_STUNIMMUNE, TRAIT_HULK) owner.add_trait(TRAIT_PUSHIMMUNE, TRAIT_HULK) owner.update_body_parts() - owner.SendSignal(COMSIG_ADD_MOOD_EVENT, "hulk", /datum/mood_event/hulk) + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "hulk", /datum/mood_event/hulk) /datum/mutation/human/hulk/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity) if(proximity) //no telekinetic hulk attack @@ -31,7 +31,7 @@ owner.remove_trait(TRAIT_STUNIMMUNE, TRAIT_HULK) owner.remove_trait(TRAIT_PUSHIMMUNE, TRAIT_HULK) owner.update_body_parts() - owner.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "hulk") + SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "hulk") /datum/mutation/human/hulk/say_mod(message) if(message) diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm index 464d435afd..1f23a92906 100644 --- a/code/datums/mutations/sight.dm +++ b/code/datums/mutations/sight.dm @@ -32,7 +32,7 @@ owner.cure_blind(GENETIC_MUTATION) -//X-Ray Vision lets you see through walls. +//X-ray Vision lets you see through walls. /datum/mutation/human/x_ray name = "X Ray Vision" quality = POSITIVE diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index 90feeacb79..1f5c28d3c2 100755 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -25,13 +25,14 @@ var/accessory = null var/can_be_admin_equipped = TRUE // Set to FALSE if your outfit requires runtime parameters + var/list/chameleon_extras //extra types for chameleon outfit changes, mostly guns /datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - //to be overriden for customization depending on client prefs,species etc + //to be overridden for customization depending on client prefs,species etc return /datum/outfit/proc/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - //to be overriden for toggling internals, id binding, access etc + //to be overridden for toggling internals, id binding, access etc return /datum/outfit/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE) @@ -149,3 +150,9 @@ for(var/obj/item/I in H.held_items) I.add_fingerprint(H,1) return 1 + +/datum/outfit/proc/get_chameleon_disguise_info() + var/list/types = list(uniform, suit, back, belt, gloves, shoes, head, mask, neck, ears, glasses, id, l_pocket, r_pocket, suit_store, r_hand, l_hand) + types += chameleon_extras + listclearnulls(types) + return types diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 8817a1ff96..af299aaee9 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -115,6 +115,14 @@ // Generates nothing but atmos runtimes and salt cost = 0 +/datum/map_template/ruin/lavaland/ratvar + name = "Dead God" + id = "ratvar" + description = "Ratvars final resting place." + suffix = "lavaland_surface_dead_ratvar.dmm" + cost = 0 + allow_duplicates = FALSE + /datum/map_template/ruin/lavaland/hierophant name = "Hierophant's Arena" id = "hierophant" diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index 07af9e0e12..3517f92060 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -34,6 +34,16 @@ if(length(place.baseturfs) < 2) // Some snowflake shuttle shit continue place.baseturfs.Insert(3, /turf/baseturf_skipover/shuttle) + + for(var/obj/structure/closet/closet in place) + if(closet.anchorable) + closet.anchored = TRUE + + for(var/obj/structure/table/table in place) + table.AddComponent(/datum/component/magnetic_catch) + + for(var/obj/structure/rack/rack in place) + rack.AddComponent(/datum/component/magnetic_catch) //Whatever special stuff you want /datum/map_template/shuttle/proc/on_bought() @@ -94,6 +104,10 @@ port_id = "ruin" can_be_bought = FALSE +/datum/map_template/shuttle/snowdin + port_id = "snowdin" + can_be_bought = FALSE + // Shuttles start here: /datum/map_template/shuttle/emergency/airless @@ -152,7 +166,7 @@ suffix = "discoinferno" name = "Disco Inferno" description = "The glorious results of centuries of plasma research done by Nanotrasen employees. This is the reason why you are here. Get on and dance like you're on fire, burn baby burn!" - admin_notes = "Flaming hot." + admin_notes = "Flaming hot. The main area has a dance machine as well as plasma floor tiles that will be ignited by players every single time." credit_cost = 10000 /datum/map_template/shuttle/emergency/arena @@ -197,7 +211,7 @@ Probably best if you don't rifle around in whatever equipment they were transporting. I hope you're friendly with your coworkers, because there is very little space in this thing.\n\ \n\ Contains contraband armory guns, maintenance loot, and abandoned crates!" - admin_notes = "Due to origin as a solo piloted secure vessel, has an active GPS onboard labeled STV5." + admin_notes = "Due to origin as a solo piloted secure vessel, has an active GPS onboard labeled STV5. Has roughly as much space as Hi Daniel, except with explosive crates." /datum/map_template/shuttle/emergency/meta suffix = "meta" @@ -228,14 +242,17 @@ /datum/map_template/shuttle/emergency/pubby suffix = "pubby" name = "Pubby Station Emergency Shuttle" - description = "A small, but feature complete shuttle. It boasts a card table to keep crew members occupied on the long flight home." + description = "A train but in space! Complete with a first, second class, brig and storage area." + admin_notes = "Choo choo motherfucker!" credit_cost = 1000 /datum/map_template/shuttle/emergency/cere suffix = "cere" name = "Cere Station Emergency Shuttle" description = "The large, beefed-up version of the box-standard shuttle. Includes an expanded brig, fully stocked medbay, enhanced cargo storage with mech chargers, \ - an engine room stocked with various supplies, and a crew capacity of 80+ to top it all off. Live large, live Cere." + an engine room stocked with various supplies, and a crew capacity of 80+ to top it all off. Live large, live Cere." + admin_notes = "Seriously big, even larger than the Delta shuttle." + credit_cost = 10000 /datum/map_template/shuttle/emergency/supermatter suffix = "supermatter" @@ -255,6 +272,7 @@ name = "Oh, Hi Daniel" description = "How was space work today? Oh, pretty good. We got a new space station and the company will make a lot of money. What space station? I cannot tell you; it's space confidential. \ Aw, come space on. Why not? No, I can't. Anyway, how is your space roleplay life?" + admin_notes = "Tiny, with a single airlock and wooden walls. What could go wrong?" credit_cost = -5000 /datum/map_template/shuttle/emergency/goon @@ -345,7 +363,7 @@ suffix = "raven" name = "CentCom Raven Battlecruiser" description = "The CentCom Raven Battlecruiser is currently docked at the CentCom ship bay awaiting a mission, this Battlecruiser has been reassigned as an emergency escape shuttle for currently unknown reasons. The CentCom Raven Battlecruiser should comfortably fit a medium to large crew size crew and is complete with all required facitlities including a top of the range CentCom Medical Bay." - admin_notes = "The long way home" + admin_notes = "Comes with turrets that will target any simplemob." credit_cost = 12500 /datum/map_template/shuttle/arrival/box @@ -391,11 +409,15 @@ /datum/map_template/shuttle/arrival/omega suffix = "omega" name = "arrival shuttle (Omega)" - + /datum/map_template/shuttle/aux_base/default suffix = "default" name = "auxilliary base (Default)" +/datum/map_template/shuttle/aux_base/small + suffix = "small" + name = "auxilliary base (Small)" + /datum/map_template/shuttle/escape_pod/default suffix = "default" name = "escape pod (Default)" @@ -426,4 +448,12 @@ /datum/map_template/shuttle/ruin/syndicate_fighter suffix = "syndicate_fighter" - name = "Syndicate Fighter" \ No newline at end of file + name = "Syndicate Fighter" + +/datum/map_template/shuttle/snowdin/mining + suffix = "mining" + name = "Snowdin Mining Elevator" + +/datum/map_template/shuttle/snowdin/excavation + suffix = "excavation" + name = "Snowdin Excavation Elevator" diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm index 65cfb85179..ee974a6e6e 100644 --- a/code/datums/status_effects/gas.dm +++ b/code/datums/status_effects/gas.dm @@ -5,6 +5,7 @@ alert_type = /obj/screen/alert/status_effect/freon var/icon/cube var/can_melt = TRUE + var/datum/weakref/redirect_component /obj/screen/alert/status_effect/freon name = "Frozen Solid" @@ -12,6 +13,7 @@ icon_state = "frozen" /datum/status_effect/freon/on_apply() + redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST), CALLBACK(src, .proc/owner_resist))) if(!owner.stat) to_chat(owner, "You become frozen in a cube!") cube = icon('icons/effects/freeze.dmi', "ice_cube") @@ -24,12 +26,22 @@ if(can_melt && owner.bodytemperature >= BODYTEMP_NORMAL) qdel(src) +/datum/status_effect/freon/proc/owner_resist() + to_chat(owner, "You start breaking out of the ice cube!") + if(do_mob(owner, owner, 40)) + if(!QDELETED(src)) + to_chat(owner, "You break out of the ice cube!") + owner.remove_status_effect(/datum/status_effect/freon) + owner.update_canmove() + /datum/status_effect/freon/on_remove() if(!owner.stat) to_chat(owner, "The cube melts!") owner.cut_overlay(cube) owner.adjust_bodytemperature(100) owner.update_canmove() + qdel(redirect_component.resolve()) + redirect_component = null /datum/status_effect/freon/watcher duration = 8 diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index c940b2083a..655863e0e0 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -47,3 +47,25 @@ /datum/status_effect/syphon_mark/on_remove() get_kill() . = ..() + +/obj/screen/alert/status_effect/in_love + name = "In Love" + desc = "You feel so wonderfully in love!" + icon_state = "in_love" + +/datum/status_effect/in_love + id = "in_love" + duration = -1 + status_type = STATUS_EFFECT_UNIQUE + alert_type = /obj/screen/alert/status_effect/in_love + var/mob/living/date + +/datum/status_effect/in_love/on_creation(mob/living/new_owner, mob/living/love_interest) + . = ..() + if(.) + date = love_interest + linked_alert.desc = "You're in love with [date.real_name]! How lovely." + +/datum/status_effect/in_love/tick() + if(date) + new /obj/effect/temp_visual/love_heart/invisible(get_turf(date.loc), owner) diff --git a/code/datums/traits/_quirk.dm b/code/datums/traits/_quirk.dm index b39da84575..963afacec3 100644 --- a/code/datums/traits/_quirk.dm +++ b/code/datums/traits/_quirk.dm @@ -55,6 +55,9 @@ /datum/quirk/proc/post_add() //for text, disclaimers etc. given after you spawn in with the trait /datum/quirk/proc/on_transfer() //code called when the trait is transferred to a new mob +/datum/quirk/proc/clone_data() //return additional data that should be remembered by cloning +/datum/quirk/proc/on_clone(data) //create the quirk from clone data + /datum/quirk/process() if(QDELETED(quirk_holder)) quirk_holder = null @@ -130,5 +133,3 @@ Use this as a guideline //If you don't need any special effects like spawning glasses, then you don't need an add() */ - - diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 7752cc31c3..7bbcbe6171 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -9,7 +9,11 @@ medical_record_text = "Patient requires regular treatment for blood loss due to low production of blood." /datum/quirk/blooddeficiency/on_process() - quirk_holder.blood_volume -= 0.275 + var/mob/living/carbon/human/H = quirk_holder + if(NOBLOOD in H.dna.species.species_traits) //can't lose blood if your species doesn't have any + return + else + quirk_holder.blood_volume -= 0.275 @@ -27,11 +31,11 @@ /datum/quirk/family_heirloom name = "Family Heirloom" - desc = "You are the current owner of an heirloom. passed down for generations. You have to keep it safe!" + desc = "You are the current owner of an heirloom, passed down for generations. You have to keep it safe!" value = -1 mood_quirk = TRUE var/obj/item/heirloom - var/where_text + var/where /datum/quirk/family_heirloom/on_spawn() var/mob/living/carbon/human/H = quirk_holder @@ -58,31 +62,34 @@ /obj/item/dice/d20) heirloom = new heirloom_type(get_turf(quirk_holder)) var/list/slots = list( - "in your backpack" = SLOT_IN_BACKPACK, "in your left pocket" = SLOT_L_STORE, - "in your right pocket" = SLOT_R_STORE + "in your right pocket" = SLOT_R_STORE, + "in your backpack" = SLOT_IN_BACKPACK ) - var/where = H.equip_in_one_of_slots(heirloom, slots) - if(!where) - where = "at your feet" - else if(where == "in your backpack") - H.back.SendSignal(COMSIG_TRY_STORAGE_SHOW, H) - where_text = "There is a precious family [heirloom.name] [where], passed down from generation to generation. Keep it safe!" + where = H.equip_in_one_of_slots(heirloom, slots, FALSE) || "at your feet" /datum/quirk/family_heirloom/post_add() - to_chat(quirk_holder, where_text) + if(where == "in your backpack") + var/mob/living/carbon/human/H = quirk_holder + SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_SHOW, H) + + to_chat(quirk_holder, "There is a precious family [heirloom.name] [where], passed down from generation to generation. Keep it safe!") var/list/family_name = splittext(quirk_holder.real_name, " ") heirloom.name = "\improper [family_name[family_name.len]] family [heirloom.name]" /datum/quirk/family_heirloom/on_process() if(heirloom in quirk_holder.GetAllContents()) - quirk_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "family_heirloom_missing") - quirk_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "family_heirloom", /datum/mood_event/family_heirloom) + SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "family_heirloom_missing") + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "family_heirloom", /datum/mood_event/family_heirloom) else - quirk_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "family_heirloom") - quirk_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "family_heirloom_missing", /datum/mood_event/family_heirloom_missing) + SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "family_heirloom") + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "family_heirloom_missing", /datum/mood_event/family_heirloom_missing) +/datum/quirk/family_heirloom/clone_data() + return heirloom +/datum/quirk/family_heirloom/on_clone(data) + heirloom = data /datum/quirk/heavy_sleeper name = "Heavy Sleeper" @@ -141,9 +148,9 @@ if(quirk_holder.m_intent == MOVE_INTENT_RUN) to_chat(quirk_holder, "Easy, easy, take it slow... you're in the dark...") quirk_holder.toggle_move_intent() - quirk_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "nyctophobia", /datum/mood_event/nyctophobia) + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "nyctophobia", /datum/mood_event/nyctophobia) else - quirk_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "nyctophobia") + SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "nyctophobia") @@ -230,7 +237,7 @@ return if(prob(2)) //we'll all be mad soon enough madness() - + /datum/quirk/insanity/proc/madness() quirk_holder.hallucination += rand(10, 25) diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 9f4d8f891f..a3b666dcc6 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -17,7 +17,7 @@ var/weather_overlay var/weather_color = null - var/end_message = "The wind relents its assault." //Displayed once the wather is over + var/end_message = "The wind relents its assault." //Displayed once the weather is over var/end_duration = 300 //In deciseconds, how long the "wind-down" graphic will appear before vanishing entirely var/end_sound var/end_overlay diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index 043110f5d3..92cc1770b3 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -88,5 +88,5 @@ if(istype(B, /obj/machinery/syndicatebomb/training)) return var/turf/T = get_turf(B) - log_game("\A [B] was detonated via boom wire at [COORD(T)].") - message_admins("A [B.name] was detonated via boom wire at [ADMIN_COORDJMP(T)].") + log_game("\A [B] was detonated via boom wire at [AREACOORD(T)].") + message_admins("A [B.name] was detonated via boom wire at [ADMIN_VERBOSEJMP(T)].") diff --git a/code/game/alternate_appearance.dm b/code/game/alternate_appearance.dm index 484f11fc09..d7c34da34a 100644 --- a/code/game/alternate_appearance.dm +++ b/code/game/alternate_appearance.dm @@ -167,3 +167,16 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances) if(isrevenant(M) || iseminence(M) || iswizard(M)) return TRUE return FALSE + +datum/atom_hud/alternate_appearance/basic/onePerson + var/mob/seer + +/datum/atom_hud/alternate_appearance/basic/onePerson/mobShouldSee(mob/M) + if(M == seer) + return TRUE + return FALSE + +/datum/atom_hud/alternate_appearance/basic/onePerson/New(key, image/I, mob/living/M) + ..(key, I, FALSE) + seer = M + add_hud_to(seer) diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index d65d28507c..558c197858 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -53,7 +53,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "start" requires_power = FALSE dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY //EXTRA @@ -62,7 +62,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Asteroid" icon_state = "asteroid" requires_power = FALSE - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY blob_allowed = FALSE //Nope, no winning on the asteroid as a blob. Gotta eat the station. valid_territory = FALSE ambientsounds = MINING diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 85a0fd1d4e..8aa910b2e2 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -18,17 +18,14 @@ var/clockwork_warp_allowed = TRUE // Can servants warp into this area from Reebe? var/clockwork_warp_fail = "The structure there is too dense for warping to pierce. (This is normal in high-security areas.)" - var/eject = null - var/fire = null var/atmos = TRUE var/atmosalm = FALSE var/poweralm = TRUE - var/party = null var/lightswitch = TRUE var/requires_power = TRUE - var/always_unpowered = FALSE // This gets overriden to 1 for space in area/Initialize(). + var/always_unpowered = FALSE // This gets overridden to 1 for space in area/Initialize(). var/outdoors = FALSE //For space, the asteroid, lavaland, etc. Used with blueprints to determine if we are adding a new area (vs editing a station room) @@ -47,7 +44,7 @@ var/static_light = 0 var/static_environ - var/has_gravity = FALSE + var/has_gravity = 0 var/noteleport = FALSE //Are you forbidden from teleporting to the area? (centcom, mobs, wizard, hand teleporter) var/hidden = FALSE //Hides area from player Teleport function. var/safe = FALSE //Is the area teleport-safe: no space / radiation / aggresive mobs / other dangers @@ -256,9 +253,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/proc/firereset(obj/source) if (fire) - fire = 0 - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - updateicon() + unset_fire_alarm_effects() ModifyFiredoors(TRUE) for(var/item in firealarms) var/obj/machinery/firealarm/F = item @@ -290,7 +285,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) DOOR.lock() /area/proc/burglaralert(obj/trigger) - if(always_unpowered == 1) //no burglar alarms in space/asteroid + if(always_unpowered) //no burglar alarms in space/asteroid return //Trigger alarm effect @@ -306,61 +301,32 @@ GLOBAL_LIST_EMPTY(teleportlocs) addtimer(CALLBACK(SILICON, /mob/living/silicon.proc/cancelAlarm,"Burglar",src,trigger), 600) /area/proc/set_fire_alarm_effect() - fire = 1 - updateicon() + fire = TRUE mouse_opacity = MOUSE_OPACITY_TRANSPARENT + for(var/alarm in firealarms) + var/obj/machinery/firealarm/F = alarm + F.update_fire_light(fire) + for(var/obj/machinery/light/L in src) + L.update() -/area/proc/readyalert() - if(name == "Space") - return - if(!eject) - eject = 1 - updateicon() - -/area/proc/readyreset() - if(eject) - eject = 0 - updateicon() - -/area/proc/partyalert() - if(src.name == "Space") //no parties in space!!! - return - if (!( src.party )) - src.party = 1 - src.updateicon() - src.mouse_opacity = MOUSE_OPACITY_TRANSPARENT - -/area/proc/partyreset() - if (src.party) - src.party = 0 - src.mouse_opacity = MOUSE_OPACITY_TRANSPARENT - src.updateicon() - for(var/obj/machinery/door/firedoor/D in src) - if(!D.welded) - if(D.operating) - D.nextstate = OPEN - else if(D.density) - INVOKE_ASYNC(D, /obj/machinery/door/firedoor.proc/open) +/area/proc/unset_fire_alarm_effects() + fire = FALSE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + for(var/alarm in firealarms) + var/obj/machinery/firealarm/F = alarm + F.update_fire_light(fire) + for(var/obj/machinery/light/L in src) + L.update() /area/proc/updateicon() - if ((fire || eject || party) && (!requires_power||power_environ))//If it doesn't require power, can still activate this proc. - if(fire && !eject && !party) - icon_state = "blue" - else if(!fire && eject && !party) - icon_state = "red" - else if(party && !fire && !eject) - icon_state = "party" - else - icon_state = "blue-red" - else - var/weather_icon - for(var/V in SSweather.processing) - var/datum/weather/W = V - if(W.stage != END_STAGE && (src in W.impacted_areas)) - W.update_areas() - weather_icon = TRUE - if(!weather_icon) - icon_state = null + var/weather_icon + for(var/V in SSweather.processing) + var/datum/weather/W = V + if(W.stage != END_STAGE && (src in W.impacted_areas)) + W.update_areas() + weather_icon = TRUE + if(!weather_icon) + icon_state = null /area/space/updateicon() icon_state = null @@ -443,8 +409,8 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/Entered(atom/movable/M) set waitfor = FALSE - SendSignal(COMSIG_AREA_ENTERED, M) - M.SendSignal(COMSIG_ENTER_AREA, src) //The atom that enters the area + SEND_SIGNAL(src, COMSIG_AREA_ENTERED, M) + SEND_SIGNAL(M, COMSIG_ENTER_AREA, src) //The atom that enters the area if(!isliving(M)) return @@ -469,8 +435,8 @@ GLOBAL_LIST_EMPTY(teleportlocs) addtimer(CALLBACK(L.client, /client/proc/ResetAmbiencePlayed), 600) /area/Exited(atom/movable/M) - SendSignal(COMSIG_AREA_EXITED, M) - M.SendSignal(COMSIG_EXIT_AREA, src) //The atom that exits the area + SEND_SIGNAL(src, COMSIG_AREA_EXITED, M) + SEND_SIGNAL(M, COMSIG_EXIT_AREA, src) //The atom that exits the area /client/proc/ResetAmbiencePlayed() played = FALSE @@ -478,16 +444,39 @@ GLOBAL_LIST_EMPTY(teleportlocs) /atom/proc/has_gravity(turf/T) if(!T || !isturf(T)) T = get_turf(src) + + if(!T) + return 0 + + //Gravity forced on the atom + var/datum/component/forced_gravity/FG = GetComponent(/datum/component/forced_gravity) + if(FG) + if(!FG.ignore_space && isspaceturf(T)) + return 0 + else + return FG.gravity + + //Gravity forced on the turf + FG = T.GetComponent(/datum/component/forced_gravity) + if(FG) + if(!FG.ignore_space && isspaceturf(T)) + return 0 + else + return FG.gravity + var/area/A = get_area(T) if(isspaceturf(T)) // Turf never has gravity - return FALSE - else if(A && A.has_gravity) // Areas which always has gravity - return TRUE + return 0 + else if(A.has_gravity) // Areas which always has gravity + return A.has_gravity else // There's a gravity generator on our z level - if(T && GLOB.gravity_generators["[T.z]"] && length(GLOB.gravity_generators["[T.z]"])) - return TRUE - return FALSE + if(GLOB.gravity_generators["[T.z]"]) + var/max_grav = 0 + for(var/obj/machinery/gravity_generator/main/G in GLOB.gravity_generators["[T.z]"]) + max_grav = max(G.setting,max_grav) + return max_grav + return SSmapping.level_trait(T.z, ZTRAIT_GRAVITY) /area/proc/setup(a_name) name = a_name diff --git a/code/game/area/areas/away_content.dm b/code/game/area/areas/away_content.dm index 93640bdde6..b724c92607 100644 --- a/code/game/area/areas/away_content.dm +++ b/code/game/area/areas/away_content.dm @@ -7,7 +7,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" /area/awaymission name = "Strange Location" icon_state = "away" - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY ambientsounds = AWAY_MISSION /area/awaymission/beach @@ -15,10 +15,14 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" icon_state = "away" dynamic_lighting = DYNAMIC_LIGHTING_DISABLED requires_power = FALSE - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag2.ogg','sound/ambience/ambiodd.ogg','sound/ambience/ambinice.ogg') /area/awaymission/errorroom name = "Super Secret Room" dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY + +/area/awaymission/vr + name = "Virtual Reality" + icon_state = "awaycontent1" \ No newline at end of file diff --git a/code/game/area/areas/centcom.dm b/code/game/area/areas/centcom.dm index 93e3da53b8..30de1314c9 100644 --- a/code/game/area/areas/centcom.dm +++ b/code/game/area/areas/centcom.dm @@ -6,7 +6,7 @@ icon_state = "centcom" dynamic_lighting = DYNAMIC_LIGHTING_FORCED requires_power = FALSE - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY noteleport = TRUE blob_allowed = FALSE //Should go without saying, no blobs should take over centcom as a win condition. flags_1 = NONE @@ -36,7 +36,7 @@ icon_state = "yellow" dynamic_lighting = DYNAMIC_LIGHTING_FORCED requires_power = FALSE - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY flags_1 = NONE /area/tdome/arena @@ -74,7 +74,7 @@ icon_state = "yellow" dynamic_lighting = DYNAMIC_LIGHTING_FORCED requires_power = FALSE - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY noteleport = TRUE flags_1 = NONE @@ -84,7 +84,7 @@ icon_state = "yellow" requires_power = FALSE noteleport = TRUE - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY flags_1 = NONE //Syndicates @@ -92,7 +92,7 @@ name = "Syndicate Mothership" icon_state = "syndie-ship" requires_power = FALSE - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY noteleport = TRUE blob_allowed = FALSE //Not... entirely sure this will ever come up... but if the bus makes blobs AND ops, it shouldn't aim for the ops to win. flags_1 = NONE @@ -107,7 +107,12 @@ name = "Syndicate Elite Squad" icon_state = "syndie-elite" - +/area/fabric_of_reality + name = "Tear in the Fabric of Reality" + requires_power = FALSE + has_gravity = TRUE + noteleport = TRUE + blob_allowed = FALSE //CAPTURE THE FLAG @@ -115,8 +120,7 @@ name = "Capture the Flag" icon_state = "yellow" requires_power = FALSE - has_gravity = TRUE - flags_1 = NO_DEATHRATTLE_1 + has_gravity = STANDARD_GRAVITY /area/ctf/control_room name = "Control Room A" @@ -151,7 +155,7 @@ name = "Reebe" icon_state = "yellow" requires_power = FALSE - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY noteleport = TRUE hidden = TRUE ambientsounds = REEBE diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm index 493f36dd8d..2ca9167bb2 100644 --- a/code/game/area/areas/mining.dm +++ b/code/game/area/areas/mining.dm @@ -2,7 +2,7 @@ /area/mine icon_state = "mining" - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY /area/mine/explored name = "Mine" @@ -80,7 +80,7 @@ /area/lavaland icon_state = "mining" - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY flags_1 = NONE /area/lavaland/surface diff --git a/code/game/area/areas/ruins/_ruins.dm b/code/game/area/areas/ruins/_ruins.dm index 087842c5d1..b97c3f0ef4 100644 --- a/code/game/area/areas/ruins/_ruins.dm +++ b/code/game/area/areas/ruins/_ruins.dm @@ -3,7 +3,7 @@ /area/ruin name = "\improper Unexplored Location" icon_state = "away" - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY hidden = TRUE dynamic_lighting = DYNAMIC_LIGHTING_FORCED ambientsounds = RUINS diff --git a/code/game/area/areas/ruins/lavaland.dm b/code/game/area/areas/ruins/lavaland.dm index 4fd3204040..76f090d5e3 100644 --- a/code/game/area/areas/ruins/lavaland.dm +++ b/code/game/area/areas/ruins/lavaland.dm @@ -70,6 +70,9 @@ /area/ruin/unpowered/syndicate_lava_base/telecomms name = "Syndicate Lavaland Telecommunications" +/area/ruin/unpowered/syndicate_lava_base/circuits + name = "Syndicate Lavaland Circuit Lab" + //Xeno Nest diff --git a/code/game/area/areas/ruins/space.dm b/code/game/area/areas/ruins/space.dm index c52119361b..00a7fed012 100644 --- a/code/game/area/areas/ruins/space.dm +++ b/code/game/area/areas/ruins/space.dm @@ -5,7 +5,7 @@ blob_allowed = FALSE //Nope, no winning in space as a blob. Gotta eat the station. /area/ruin/space/has_grav - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY /area/ruin/space/has_grav/powered requires_power = FALSE @@ -413,13 +413,13 @@ /area/ruin/space/djstation name = "Ruskie DJ Station" icon_state = "DJ" - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY blob_allowed = FALSE //Nope, no winning on the DJ station as a blob. Gotta eat the main station. /area/ruin/space/djstation/solars name = "DJ Station Solars" icon_state = "DJ" - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY //ABANDONED TELEPORTER diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index 073e7714b2..8e23614db0 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -6,7 +6,7 @@ name = "Shuttle" requires_power = FALSE dynamic_lighting = DYNAMIC_LIGHTING_FORCED - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY always_unpowered = FALSE valid_territory = FALSE icon_state = "shuttle" @@ -67,6 +67,7 @@ /area/shuttle/transit name = "Hyperspace" desc = "Weeeeee" + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED /area/shuttle/custom name = "Custom player shuttle" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 3b58c3ead1..32e982e8e6 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -2,11 +2,11 @@ layer = TURF_LAYER plane = GAME_PLANE var/level = 2 + var/article // If non-null, overrides a/an/some in all cases var/flags_1 = NONE var/interaction_flags_atom = NONE var/container_type = NONE - var/admin_spawned = 0 //was this spawned by an admin? used for stat tracking stuff. var/datum/reagents/reagents = null //This atom's HUD (med/sec, etc) images. Associative list. @@ -19,15 +19,17 @@ var/list/atom_colours //used to store the different colors on an atom //its inherent color, the colored paint applied on it, special color effect etc... - var/initialized = FALSE - var/list/our_overlays //our local copy of (non-priority) overlays without byond magic. Use procs in SSoverlays to manipulate var/list/priority_overlays //overlays that should remain on top and not normally removed when using cut_overlay functions, like c4. + var/list/remove_overlays // a very temporary list of overlays to remove + var/list/add_overlays // a very temporary list of overlays to add var/datum/proximity_monitor/proximity_monitor var/buckle_message_cooldown = 0 var/fingerprintslast + var/list/filter_data //For handling persistent filters + /atom/New(loc, ...) //atom creation method that preloads variables at creation if(GLOB.use_preloader && (src.type == GLOB._preloader.target_path))//in case the instanciated atom is creating other atoms in New() @@ -59,9 +61,9 @@ // /turf/open/space/Initialize /atom/proc/Initialize(mapload, ...) - if(initialized) + if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") - initialized = TRUE + flags_1 |= INITIALIZED_1 //atom color stuff if(color) @@ -113,7 +115,7 @@ if(!T) return FALSE - if(is_transit_level(T.z)) + if(is_reserved_level(T.z)) for(var/A in SSshuttle.mobile) var/obj/docking_port/mobile/M = A if(M.launch_status == ENDGAME_TRANSIT) @@ -152,7 +154,7 @@ return FALSE /atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) - SendSignal(COMSIG_ATOM_HULK_ATTACK, user) + SEND_SIGNAL(src, COMSIG_ATOM_HULK_ATTACK, user) if(does_attack_animation) user.changeNext_move(CLICK_CD_MELEE) add_logs(user, src, "punched", "hulk powers") @@ -221,12 +223,13 @@ return /atom/proc/emp_act(severity) - SendSignal(COMSIG_ATOM_EMP_ACT, severity) - if(istype(wires) && !(flags_1 & NO_EMP_WIRES_1)) + var/protection = SEND_SIGNAL(src, COMSIG_ATOM_EMP_ACT, severity) + if(!(protection & EMP_PROTECT_WIRES) && istype(wires)) wires.emp_pulse() + return protection // Pass the protection value collected here upwards /atom/proc/bullet_act(obj/item/projectile/P, def_zone) - SendSignal(COMSIG_ATOM_BULLET_ACT, P, def_zone) + SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, P, def_zone) . = P.on_hit(src, 0, def_zone) /atom/proc/in_contents_of(container)//can take class or object instance as argument @@ -239,8 +242,11 @@ /atom/proc/get_examine_name(mob/user) . = "\a [src]" - var/list/override = list(gender == PLURAL? "some" : "a" , " ", "[name]") - if(SendSignal(COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED) + var/list/override = list(gender == PLURAL ? "some" : "a", " ", "[name]") + if(article) + . = "[article] [src]" + override[EXAMINE_POSITION_ARTICLE] = article + if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED) . = override.Join("") /atom/proc/get_examine_string(mob/user, thats = FALSE) @@ -272,7 +278,7 @@ else to_chat(user, "It's empty.") - SendSignal(COMSIG_PARENT_EXAMINE, user) + SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user) /atom/proc/relaymove(mob/user) if(buckle_message_cooldown <= world.time) @@ -286,14 +292,14 @@ /atom/proc/ex_act(severity, target) set waitfor = FALSE contents_explosion(severity, target) - SendSignal(COMSIG_ATOM_EX_ACT, severity, target) + SEND_SIGNAL(src, COMSIG_ATOM_EX_ACT, severity, target) /atom/proc/blob_act(obj/structure/blob/B) - SendSignal(COMSIG_ATOM_BLOB_ACT, B) + SEND_SIGNAL(src, COMSIG_ATOM_BLOB_ACT, B) return /atom/proc/fire_act(exposed_temperature, exposed_volume) - SendSignal(COMSIG_ATOM_FIRE_ACT, exposed_temperature, exposed_volume) + SEND_SIGNAL(src, COMSIG_ATOM_FIRE_ACT, exposed_temperature, exposed_volume) return /atom/proc/hitby(atom/movable/AM, skipcatch, hitpush, blocked) @@ -361,28 +367,28 @@ return /atom/proc/singularity_pull(obj/singularity/S, current_size) - SendSignal(COMSIG_ATOM_SING_PULL, S, current_size) + SEND_SIGNAL(src, COMSIG_ATOM_SING_PULL, S, current_size) /atom/proc/acid_act(acidpwr, acid_volume) - SendSignal(COMSIG_ATOM_ACID_ACT, acidpwr, acid_volume) + SEND_SIGNAL(src, COMSIG_ATOM_ACID_ACT, acidpwr, acid_volume) /atom/proc/emag_act() - SendSignal(COMSIG_ATOM_EMAG_ACT) + SEND_SIGNAL(src, COMSIG_ATOM_EMAG_ACT) /atom/proc/rad_act(strength) - SendSignal(COMSIG_ATOM_RAD_ACT, strength) + SEND_SIGNAL(src, COMSIG_ATOM_RAD_ACT, strength) /atom/proc/narsie_act() - SendSignal(COMSIG_ATOM_NARSIE_ACT) + SEND_SIGNAL(src, COMSIG_ATOM_NARSIE_ACT) /atom/proc/ratvar_act() - SendSignal(COMSIG_ATOM_RATVAR_ACT) + SEND_SIGNAL(src, COMSIG_ATOM_RATVAR_ACT) /atom/proc/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) return FALSE /atom/proc/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) - SendSignal(COMSIG_ATOM_RCD_ACT, user, the_rcd, passed_mode) + SEND_SIGNAL(src, COMSIG_ATOM_RCD_ACT, user, the_rcd, passed_mode) return FALSE /atom/proc/storage_contents_dump_act(obj/item/storage/src_object, mob/user) @@ -410,7 +416,7 @@ //This proc is called on the location of an atom when the atom is Destroy()'d /atom/proc/handle_atom_del(atom/A) - SendSignal(COMSIG_ATOM_CONTENTS_DEL, A) + SEND_SIGNAL(src, COMSIG_ATOM_CONTENTS_DEL, A) //called when the turf the atom resides on is ChangeTurfed /atom/proc/HandleTurfChange(turf/T) @@ -426,27 +432,10 @@ /atom/proc/update_remote_sight(mob/living/user) return -/atom/proc/add_vomit_floor(mob/living/carbon/M, toxvomit = 0) - if(isturf(src)) - var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses()) - // Make toxins vomit look different - if(toxvomit) - V.icon_state = "vomittox_[pick(1,4)]" - if(M.reagents) - clear_reagents_to_vomit_pool(M,V) - -/atom/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V) - M.reagents.trans_to(V, M.reagents.total_volume / 10) - for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food - if(istype(R, /datum/reagent/consumable)) - var/datum/reagent/consumable/nutri_check = R - if(nutri_check.nutriment_factor >0) - M.reagents.remove_reagent(R.id,R.volume) - //Hook for running code when a dir change occurs /atom/proc/setDir(newdir) - SendSignal(COMSIG_ATOM_DIR_CHANGE, dir, newdir) + SEND_SIGNAL(src, COMSIG_ATOM_DIR_CHANGE, dir, newdir) dir = newdir /atom/proc/mech_melee_attack(obj/mecha/M) @@ -517,7 +506,7 @@ /atom/vv_edit_var(var_name, var_value) if(!GLOB.Debug2) - admin_spawned = TRUE + flags_1 |= ADMIN_SPAWNED_1 . = ..() switch(var_name) if("color") @@ -541,10 +530,15 @@ return L.AllowDrop() ? L : get_turf(L) /atom/Entered(atom/movable/AM, atom/oldLoc) - SendSignal(COMSIG_ATOM_ENTERED, AM, oldLoc) + SEND_SIGNAL(src, COMSIG_ATOM_ENTERED, AM, oldLoc) + +/atom/Exit(atom/movable/AM, atom/newLoc) + . = ..() + if(SEND_SIGNAL(src, COMSIG_ATOM_EXIT, AM, newLoc) & COMPONENT_ATOM_BLOCK_EXIT) + return FALSE /atom/Exited(atom/movable/AM, atom/newLoc) - SendSignal(COMSIG_ATOM_EXITED, AM, newLoc) + SEND_SIGNAL(src, COMSIG_ATOM_EXITED, AM, newLoc) /atom/proc/return_temperature() return @@ -593,3 +587,25 @@ /atom/proc/GenerateTag() return + +// Filter stuff +/atom/movable/proc/add_filter(name,priority,list/params) + if(!filter_data) + filter_data = list() + var/list/p = params.Copy() + p["priority"] = priority + filter_data[name] = p + update_filters() + +/atom/movable/proc/update_filters() + filters = null + sortTim(filter_data,associative = TRUE) + for(var/f in filter_data) + var/list/data = filter_data[f] + var/list/arguments = data.Copy() + arguments -= "priority" + filters += filter(arglist(arguments)) + +/atom/movable/proc/get_filter(name) + if(filter_data && filter_data[name]) + return filters[filter_data.Find(name)] \ No newline at end of file diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 3efb449c49..211bb35263 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -29,6 +29,7 @@ var/movement_type = GROUND //Incase you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc. var/atom/movable/pulling var/grab_state = 0 + var/throwforce = 0 /atom/movable/vv_edit_var(var_name, var_value) var/static/list/banned_edits = list("step_x", "step_y", "step_size") @@ -161,41 +162,45 @@ else //Diagonal move, split it into cardinal moves moving_diagonally = FIRST_DIAG_STEP var/first_step_dir + // The `&& moving_diagonally` checks are so that a forceMove taking + // place due to a Crossed, Collided, etc. call will interrupt + // the second half of the diagonal movement, or the second attempt + // at a first half if step() fails because we hit something. if (direct & NORTH) if (direct & EAST) - if (step(src, NORTH)) + if (step(src, NORTH) && moving_diagonally) first_step_dir = NORTH moving_diagonally = SECOND_DIAG_STEP . = step(src, EAST) - else if (step(src, EAST)) + else if (moving_diagonally && step(src, EAST)) first_step_dir = EAST moving_diagonally = SECOND_DIAG_STEP . = step(src, NORTH) else if (direct & WEST) - if (step(src, NORTH)) + if (step(src, NORTH) && moving_diagonally) first_step_dir = NORTH moving_diagonally = SECOND_DIAG_STEP . = step(src, WEST) - else if (step(src, WEST)) + else if (moving_diagonally && step(src, WEST)) first_step_dir = WEST moving_diagonally = SECOND_DIAG_STEP . = step(src, NORTH) else if (direct & SOUTH) if (direct & EAST) - if (step(src, SOUTH)) + if (step(src, SOUTH) && moving_diagonally) first_step_dir = SOUTH moving_diagonally = SECOND_DIAG_STEP . = step(src, EAST) - else if (step(src, EAST)) + else if (moving_diagonally && step(src, EAST)) first_step_dir = EAST moving_diagonally = SECOND_DIAG_STEP . = step(src, SOUTH) else if (direct & WEST) - if (step(src, SOUTH)) + if (step(src, SOUTH) && moving_diagonally) first_step_dir = SOUTH moving_diagonally = SECOND_DIAG_STEP . = step(src, WEST) - else if (step(src, WEST)) + else if (moving_diagonally && step(src, WEST)) first_step_dir = WEST moving_diagonally = SECOND_DIAG_STEP . = step(src, SOUTH) @@ -217,14 +222,15 @@ if(. && pulling && pulling == pullee) //we were pulling a thing and didn't lose it during our move. if(pulling.anchored) stop_pulling() - return - var/pull_dir = get_dir(src, pulling) - if(get_dist(src, pulling) > 1 || ((pull_dir - 1) & pull_dir)) //puller and pullee more than one tile away or in diagonal position - pulling.Move(T, get_dir(pulling, T)) //the pullee tries to reach our previous position - if(pulling && get_dist(src, pulling) > 1) //the pullee couldn't keep up - stop_pulling() - if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. - pulledby.stop_pulling() + else + var/pull_dir = get_dir(src, pulling) + //puller and pullee more than one tile away or in diagonal position + if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir))) + pulling.Move(T, get_dir(pulling, T)) //the pullee tries to reach our previous position + if(pulling && get_dist(src, pulling) > 1) //the pullee couldn't keep up + stop_pulling() + if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. + pulledby.stop_pulling() last_move = direct @@ -234,7 +240,7 @@ //Called after a successful Move(). By this point, we've already moved /atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE) - SendSignal(COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced) + SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced) if (!inertia_moving) inertia_next_move = world.time + inertia_move_delay newtonian_move(Dir) @@ -248,10 +254,6 @@ if (orbiting) orbiting.Check() - var/datum/proximity_monitor/proximity_monitor = src.proximity_monitor - if(proximity_monitor) - proximity_monitor.HandleMove() - return 1 /atom/movable/Destroy(force) @@ -276,16 +278,16 @@ // This is automatically called when something enters your square //oldloc = old location on atom, inserted when forceMove is called and ONLY when forceMove is called! /atom/movable/Crossed(atom/movable/AM, oldloc) - SendSignal(COMSIG_MOVABLE_CROSSED, AM) + SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM) /atom/movable/Uncrossed(atom/movable/AM) - SendSignal(COMSIG_MOVABLE_UNCROSSED, AM) + SEND_SIGNAL(src, COMSIG_MOVABLE_UNCROSSED, AM) //This is tg's equivalent to the byond bump, it used to be called bump with a second arg //to differentiate it, naturally everyone forgot about this immediately and so some things //would bump twice, so now it's called Collide /atom/movable/proc/Collide(atom/A) - SendSignal(COMSIG_MOVABLE_COLLIDE, A) + SEND_SIGNAL(src, COMSIG_MOVABLE_COLLIDE, A) if(A) if(throwing) throwing.hit_atom(A) @@ -314,8 +316,8 @@ var/area/old_area = get_area(oldloc) var/area/destarea = get_area(destination) - loc = destination + moving_diagonally = 0 if(!same_loc) if(oldloc) @@ -352,7 +354,7 @@ loc = null /atom/movable/proc/onTransitZ(old_z,new_z) - SendSignal(COMSIG_MOVABLE_Z_CHANGED, old_z, new_z) + SEND_SIGNAL(src, COMSIG_MOVABLE_Z_CHANGED, old_z, new_z) for (var/item in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care. var/atom/movable/AM = item AM.onTransitZ(old_z,new_z) @@ -395,7 +397,7 @@ /atom/movable/proc/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) set waitfor = 0 - SendSignal(COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum) + SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum) return hit_atom.hitby(src) /atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked) @@ -408,7 +410,7 @@ /atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback) //If this returns FALSE then callback will not be called. . = FALSE - if (!target || (flags_1 & NODROP_1) || speed <= 0) + if (!target || speed <= 0) return if (pulledby) @@ -480,7 +482,7 @@ if(spin) SpinAnimation(5, 1) - SendSignal(COMSIG_MOVABLE_THROW, TT, spin) + SEND_SIGNAL(src, COMSIG_MOVABLE_THROW, TT, spin) SSthrowing.processing[src] = TT if (SSthrowing.state == SS_PAUSED && length(SSthrowing.currentrun)) SSthrowing.currentrun[src] = TT @@ -562,7 +564,8 @@ if(visual_effect_icon) I = image('icons/effects/effects.dmi', A, visual_effect_icon, A.layer + 0.1) else if(used_item) - I = image(used_item.icon, A, used_item.icon_state, A.layer + 0.1) + I = image(icon = used_item, loc = A, layer = A.layer + 0.1) + I.plane = GAME_PLANE // Scale the icon. I.transform *= 0.75 diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index e682960e2e..9a60fdef31 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -175,6 +175,11 @@ if(has_trait(TRAIT_XENO_HOST)) holder.icon_state = "hudxeno" else if(stat == DEAD || (has_trait(TRAIT_FAKEDEATH))) + if(tod) + var/tdelta = round(world.time - timeofdeath) + if(tdelta < (DEFIB_TIME_LIMIT * 10)) + holder.icon_state = "huddefib" + return holder.icon_state = "huddead" else switch(virus_threat) @@ -248,7 +253,7 @@ if("Incarcerated") holder.icon_state = "hudincarcerated" return - if("Parolled") + if("Paroled") holder.icon_state = "hudparolled" return if("Discharged") diff --git a/code/game/gamemodes/brother/traitor_bro.dm b/code/game/gamemodes/brother/traitor_bro.dm index 41b583852d..e25c4f7716 100644 --- a/code/game/gamemodes/brother/traitor_bro.dm +++ b/code/game/gamemodes/brother/traitor_bro.dm @@ -43,7 +43,7 @@ team.add_member(bro) bro.special_role = "brother" bro.restricted_roles = restricted_jobs - log_game("[bro.key] (ckey) has been selected as a Brother") + log_game("[key_name(bro)] has been selected as a Brother") pre_brother_teams += team return ..() diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 93d77209e0..07e31cb24d 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -11,7 +11,7 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th antag_flag = ROLE_CHANGELING false_report_weight = 10 restricted_jobs = list("AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist required_players = 15 required_enemies = 1 recommended_enemies = 4 @@ -52,6 +52,7 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th changeling.restricted_roles = restricted_jobs return 1 else + setup_error = "Not enough changeling candidates" return 0 /datum/game_mode/changeling/post_setup() @@ -69,7 +70,7 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th GLOB.changeling_team_objective_type = pick(possible_team_objectives) for(var/datum/mind/changeling in changelings) - log_game("[changeling.key] (ckey) has been selected as a changeling") + log_game("[key_name(changeling)] has been selected as a changeling") var/datum/antagonist/changeling/new_antag = new() new_antag.team_mode = TRUE changeling.add_antag_datum(new_antag) @@ -82,10 +83,10 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th return if(changelings.len <= (changelingcap - 2) || prob(100 - (csc * 2))) if(ROLE_CHANGELING in character.client.prefs.be_special) - if(!jobban_isbanned(character, ROLE_CHANGELING) && !jobban_isbanned(character, ROLE_SYNDICATE)) + if(!jobban_isbanned(character, ROLE_CHANGELING) && !QDELETED(character) && !jobban_isbanned(character, ROLE_SYNDICATE) && !QDELETED(character)) if(age_check(character.client)) if(!(character.job in restricted_jobs)) - character.mind.make_Changling() + character.mind.make_Changeling() changelings += character.mind /datum/game_mode/changeling/generate_report() diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm index d2f5accea4..3f5abe531b 100644 --- a/code/game/gamemodes/changeling/traitor_chan.dm +++ b/code/game/gamemodes/changeling/traitor_chan.dm @@ -69,11 +69,13 @@ return if(changelings.len <= (changelingcap - 2) || prob(100 / (csc * 4))) if(ROLE_CHANGELING in character.client.prefs.be_special) - if(!jobban_isbanned(character, ROLE_CHANGELING) && !jobban_isbanned(character, ROLE_SYNDICATE)) + if(!jobban_isbanned(character, ROLE_CHANGELING) && !QDELETED(character) && !jobban_isbanned(character, ROLE_SYNDICATE) && !QDELETED(character)) if(age_check(character.client)) if(!(character.job in restricted_jobs)) - character.mind.make_Changling() + character.mind.make_Changeling() changelings += character.mind + if(QDELETED(character)) + return ..() /datum/game_mode/traitor/changeling/generate_report() diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 355dd869b1..499d441a57 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -143,6 +143,12 @@ Credit where due: var/datum/team/clockcult/main_clockcult /datum/game_mode/clockwork_cult/pre_setup() + var/list/errorList = list() + SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE) + if(errorList.len) // reebe failed to load + message_admins("Reebe failed to load!") + log_game("Reebe failed to load!") + return FALSE if(CONFIG_GET(flag/protect_roles_from_antagonist)) restricted_jobs += protected_jobs if(CONFIG_GET(flag/protect_assistant_from_antagonist)) @@ -168,7 +174,7 @@ Credit where due: /datum/game_mode/clockwork_cult/post_setup() for(var/S in servants_to_serve) var/datum/mind/servant = S - log_game("[servant.key] was made an initial servant of Ratvar") + log_game("[key_name(servant)] was made an initial servant of Ratvar") var/mob/living/L = servant.current var/turf/T = pick(GLOB.servant_spawns) L.forceMove(T) diff --git a/code/game/gamemodes/clown_ops/bananium_bomb.dm b/code/game/gamemodes/clown_ops/bananium_bomb.dm index c7212a671c..0d5f0691c4 100644 --- a/code/game/gamemodes/clown_ops/bananium_bomb.dm +++ b/code/game/gamemodes/clown_ops/bananium_bomb.dm @@ -42,17 +42,17 @@ var/obj/item/clothing/C if(!H.w_uniform || H.dropItemToGround(H.w_uniform)) C = new /obj/item/clothing/under/rank/clown(H) - C.flags_1 |= NODROP_1 //mwahaha + C.item_flags |= NODROP //mwahaha H.equip_to_slot_or_del(C, SLOT_W_UNIFORM) if(!H.shoes || H.dropItemToGround(H.shoes)) C = new /obj/item/clothing/shoes/clown_shoes(H) - C.flags_1 |= NODROP_1 + C.item_flags |= NODROP H.equip_to_slot_or_del(C, SLOT_SHOES) if(!H.wear_mask || H.dropItemToGround(H.wear_mask)) C = new /obj/item/clothing/mask/gas/clown_hat(H) - C.flags_1 |= NODROP_1 + C.item_flags |= NODROP H.equip_to_slot_or_del(C, SLOT_WEAR_MASK) H.dna.add_mutation(CLOWNMUT) diff --git a/code/game/gamemodes/clown_ops/clown_ops.dm b/code/game/gamemodes/clown_ops/clown_ops.dm index 75df27ffca..12d3106c8d 100644 --- a/code/game/gamemodes/clown_ops/clown_ops.dm +++ b/code/game/gamemodes/clown_ops/clown_ops.dm @@ -48,7 +48,7 @@ /obj/item/reagent_containers/spray/waterflower/lube) implants = list(/obj/item/implant/sad_trombone) - uplink_type = /obj/item/radio/uplink/clownop + uplink_type = /obj/item/uplink/clownop /datum/outfit/syndicate/clownop/no_crystals tc = 0 diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 067bb8c84c..bf401e5ad2 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -11,10 +11,10 @@ list_reagents = list("lube" = 30) //COMBAT CLOWN SHOES -//Clown shoes with combat stats and noslip. Of course they still squeek. +//Clown shoes with combat stats and noslip. Of course they still squeak. /obj/item/clothing/shoes/clown_shoes/combat name = "combat clown shoes" - desc = "advanced clown shoes that protect the wearer and render them nearly immune to slipping on their own peels. They also squeek at 100% capacity." + desc = "advanced clown shoes that protect the wearer and render them nearly immune to slipping on their own peels. They also squeak at 100% capacity." clothing_flags = NOSLIP slowdown = SHOES_SLOWDOWN armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 10, "rad" = 0, "fire" = 70, "acid" = 50) @@ -216,11 +216,11 @@ /obj/item/clothing/mask/fakemoustache/sticky/Initialize() . = ..() - flags_1 |= NODROP_1 + item_flags |= NODROP addtimer(CALLBACK(src, .proc/unstick), unstick_time) /obj/item/clothing/mask/fakemoustache/sticky/proc/unstick() - flags_1 &= ~NODROP_1 + item_flags &= ~NODROP //DARK H.O.N.K. AND CLOWN MECH WEAPONS diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index c3f5805e83..4e9a9cc6e7 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -79,10 +79,13 @@ cultists_to_cult += cultist cultist.special_role = ROLE_CULTIST cultist.restricted_roles = restricted_jobs - log_game("[cultist.key] (ckey) has been selected as a cultist") + log_game("[key_name(cultist)] has been selected as a cultist") - - return (cultists_to_cult.len>=required_enemies) + if(cultists_to_cult.len>=required_enemies) + return TRUE + else + setup_error = "Not enough cultist candidates" + return FALSE /datum/game_mode/cult/post_setup() diff --git a/code/game/gamemodes/devil/devil_game_mode.dm b/code/game/gamemodes/devil/devil_game_mode.dm index 3007164465..0f2e8f7858 100644 --- a/code/game/gamemodes/devil/devil_game_mode.dm +++ b/code/game/gamemodes/devil/devil_game_mode.dm @@ -41,10 +41,11 @@ devil.special_role = traitor_name devil.restricted_roles = restricted_jobs - log_game("[devil.key] (ckey) has been selected as a [traitor_name]") + log_game("[key_name(devil)] has been selected as a [traitor_name]") antag_candidates.Remove(devil) if(devils.len < required_enemies) + setup_error = "Not enough devil candidates" return 0 return 1 diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index fbf62886e3..5b23abea26 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -49,6 +49,7 @@ var/gamemode_ready = FALSE //Is the gamemode all set up and ready to start checking for ending conditions. var/flipseclevel = FALSE //CIT CHANGE - adds a 10% chance for the alert level to be the opposite of what the gamemode is supposed to have + var/setup_error //What stopepd setting up the mode. /datum/game_mode/proc/announce() //Shows the gamemode's name and a fast description. to_chat(world, "The gamemode is: [name]!") @@ -98,6 +99,7 @@ if(sql) var/datum/DBQuery/query_round_game_mode = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET [sql] WHERE id = [GLOB.round_id]") query_round_game_mode.Execute() + qdel(query_round_game_mode) if(report) addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h)) generate_station_goals() @@ -364,7 +366,7 @@ for(var/mob/dead/new_player/player in players) if(player.client && player.ready == PLAYER_READY_TO_PLAY) if(role in player.client.prefs.be_special) - if(!jobban_isbanned(player, ROLE_SYNDICATE) && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans + if(!jobban_isbanned(player, ROLE_SYNDICATE) && !QDELETED(player) && !jobban_isbanned(player, role) && !QDELETED(player)) //Nodrak/Carn: Antag Job-bans if(age_check(player.client)) //Must be older than the minimum age candidates += player.mind // Get a list of all the people who want to be the antagonist for this round @@ -378,7 +380,7 @@ for(var/mob/dead/new_player/player in players) if(player.client && player.ready == PLAYER_READY_TO_PLAY) if(!(role in player.client.prefs.be_special)) // We don't have enough people who want to be antagonist, make a separate list of people who don't want to be one - if(!jobban_isbanned(player, ROLE_SYNDICATE) && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans + if(!jobban_isbanned(player, ROLE_SYNDICATE) && !QDELETED(player) && !jobban_isbanned(player, role) && !QDELETED(player) ) //Nodrak/Carn: Antag Job-bans drafted += player.mind if(restricted_jobs) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 2326216eff..b68d55f9dd 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -165,7 +165,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event return /obj/effect/meteor/examine(mob/user) - if(!admin_spawned && isliving(user)) + if(!(flags_1 & ADMIN_SPAWNED_1) && isliving(user)) SSmedals.UnlockMedal(MEDAL_METEOR, user.client) ..() diff --git a/code/game/gamemodes/monkey/monkey.dm b/code/game/gamemodes/monkey/monkey.dm index 6089f95941..76460ffbb8 100644 --- a/code/game/gamemodes/monkey/monkey.dm +++ b/code/game/gamemodes/monkey/monkey.dm @@ -36,10 +36,11 @@ carriers += carrier carrier.special_role = "Monkey Leader" carrier.restricted_roles = restricted_jobs - log_game("[carrier.key] (ckey) has been selected as a Jungle Fever carrier") + log_game("[key_name(carrier)] has been selected as a Jungle Fever carrier") antag_candidates -= carrier if(!carriers.len) + setup_error = "No monkey candidates" return FALSE return TRUE diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 3b7dca1a81..4eb5dc1c6e 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -30,9 +30,10 @@ pre_nukeops += new_op new_op.assigned_role = "Nuclear Operative" new_op.special_role = "Nuclear Operative" - log_game("[new_op.key] (ckey) has been selected as a nuclear operative") + log_game("[key_name(new_op)] has been selected as a nuclear operative") return TRUE else + setup_error = "Not enough nuke op candidates" return FALSE //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// @@ -134,7 +135,7 @@ var/tc = 25 var/command_radio = FALSE - var/uplink_type = /obj/item/radio/uplink/nuclear + var/uplink_type = /obj/item/uplink/nuclear /datum/outfit/syndicate/leader @@ -154,7 +155,7 @@ R.command = TRUE if(tc) - var/obj/item/radio/uplink/U = new uplink_type(H, H.key, tc) + var/obj/item/U = new uplink_type(H, H.key, tc) H.equip_to_slot_or_del(U, SLOT_IN_BACKPACK) var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(H) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 7559e21e21..b32460dabc 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -279,7 +279,7 @@ GLOBAL_LIST_EMPTY(objectives) if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME) return TRUE for(var/mob/living/player in GLOB.player_list) - if(get_area(player) in SSshuttle.emergency.shuttle_areas && player.mind && player.stat != DEAD && ishuman(player)) + if((get_area(player) in SSshuttle.emergency.shuttle_areas) && player.mind && player.stat != DEAD && ishuman(player)) var/mob/living/carbon/human/H = player if(H.dna.species.id != "human") return FALSE @@ -621,7 +621,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) absorbedcount += changeling.absorbedcount for(var/datum/antagonist/changeling/changeling2 in GLOB.antagonists) - if(!changeling2.owner || !changeling2.stored_profiles || changeling2.absorbedcount < absorbedcount) + if(!changeling2.owner || changeling2.owner == owner || !changeling2.stored_profiles || changeling2.absorbedcount < absorbedcount) continue return FALSE return TRUE diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 1553ee811f..e7ea46f573 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -58,6 +58,7 @@ lenin.restricted_roles = restricted_jobs if(headrev_candidates.len < required_enemies) + setup_error = "Not enough headrev candidates" return FALSE return TRUE @@ -96,7 +97,7 @@ revolution = new() for(var/datum/mind/rev_mind in headrev_candidates) - log_game("[rev_mind.key] (ckey) has been selected as a head rev") + log_game("[key_name(rev_mind)] has been selected as a head rev") var/datum/antagonist/rev/head/new_head = new() new_head.give_flash = TRUE new_head.give_hud = TRUE diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 80ce90722b..b5b5e7a706 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -11,7 +11,7 @@ antag_flag = ROLE_TRAITOR false_report_weight = 20 //Reports of traitors are pretty common. restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist required_players = 0 required_enemies = 1 recommended_enemies = 4 @@ -53,10 +53,16 @@ pre_traitors += traitor traitor.special_role = traitor_name traitor.restricted_roles = restricted_jobs - log_game("[traitor.key] (ckey) has been selected as a [traitor_name]") + log_game("[key_name(traitor)] has been selected as a [traitor_name]") antag_candidates.Remove(traitor) - return !traitors_required || pre_traitors.len > 0 + var/enough_tators = !traitors_required || pre_traitors.len > 0 + + if(!enough_tators) + setup_error = "Not enough traitor candidates" + return FALSE + else + return TRUE /datum/game_mode/traitor/post_setup() @@ -79,7 +85,7 @@ return if((SSticker.mode.traitors.len + pre_traitors.len) <= (traitorcap - 2) || prob(100 / (tsc * 2))) if(ROLE_TRAITOR in character.client.prefs.be_special) - if(!jobban_isbanned(character, ROLE_TRAITOR) && !jobban_isbanned(character, ROLE_SYNDICATE)) + if(!jobban_isbanned(character, ROLE_TRAITOR) && !QDELETED(character) && !jobban_isbanned(character, ROLE_SYNDICATE) && !QDELETED(character)) if(age_check(character.client)) if(!(character.job in restricted_jobs)) add_latejoin_traitor(character.mind) @@ -90,14 +96,4 @@ /datum/game_mode/traitor/generate_report() return "Although more specific threats are commonplace, you should always remain vigilant for Syndicate agents aboard your station. Syndicate communications have implied that many \ - Nanotrasen employees are Syndicate agents with hidden memories that may be activated at a moment's notice, so it's possible that these agents might not even know their positions." - -/datum/game_mode/proc/update_traitor_icons_added(datum/mind/traitor_mind) - var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR] - traitorhud.join_hud(traitor_mind.current) - set_antag_hud(traitor_mind.current, "traitor") - -/datum/game_mode/proc/update_traitor_icons_removed(datum/mind/traitor_mind) - var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR] - traitorhud.leave_hud(traitor_mind.current) - set_antag_hud(traitor_mind.current, null) + Nanotrasen employees are Syndicate agents with hidden memories that may be activated at a moment's notice, so it's possible that these agents might not even know their positions." \ No newline at end of file diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 8a6a7b7903..d27f977575 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -23,13 +23,13 @@ wizards += wizard wizard.assigned_role = ROLE_WIZARD wizard.special_role = ROLE_WIZARD - log_game("[wizard.key] (ckey) has been selected as a Wizard") //TODO: Move these to base antag datum + log_game("[key_name(wizard)] has been selected as a Wizard") //TODO: Move these to base antag datum if(GLOB.wizardstart.len == 0) - to_chat(wizard.current, "A starting location for you could not be found, please report this bug!") - return 0 + setup_error = "No wizard starting location found" + return FALSE for(var/datum/mind/wiz in wizards) wiz.current.forceMove(pick(GLOB.wizardstart)) - return 1 + return TRUE /datum/game_mode/wizard/post_setup() diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index 61e862452f..3d0931d534 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -6,7 +6,6 @@ desc = "A device that draws power from bluespace and creates a permanent tracking beacon." level = 1 // underfloor layer = LOW_OBJ_LAYER - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 0 var/obj/item/beacon/Beacon diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index e38775b749..d5cf016816 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -4,10 +4,9 @@ icon = 'icons/obj/pda.dmi' icon_state = "pdapainter" density = TRUE - anchored = TRUE + max_integrity = 200 var/obj/item/pda/storedpda = null var/list/colorlist = list() - max_integrity = 200 /obj/machinery/pdapainter/update_icon() diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index e4b8dd9083..f167fa0b38 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -3,7 +3,6 @@ icon = 'icons/obj/machines/sleeper.dmi' icon_state = "console" density = FALSE - anchored = TRUE /obj/machinery/sleeper name = "sleeper" @@ -11,7 +10,6 @@ icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" density = FALSE - anchored = TRUE state_open = TRUE circuit = /obj/item/circuitboard/machine/sleeper var/efficiency = 1 @@ -78,9 +76,11 @@ to_chat(occupant, "[enter_message]") /obj/machinery/sleeper/emp_act(severity) + . = ..() + if (. & EMP_PROTECT_SELF) + return if(is_operational() && occupant) open_machine() - ..(severity) /obj/machinery/sleeper/MouseDrop_T(mob/target, mob/user) if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) @@ -170,7 +170,7 @@ return if(mob_occupant.health < min_health && chem != "epinephrine") return - if(inject_chem(chem)) + if(inject_chem(chem, usr)) . = TRUE if(scrambled_chems && prob(5)) to_chat(usr, "Chem System Re-route detected, results may not be as expected!") @@ -179,9 +179,11 @@ scramble_chem_buttons() to_chat(user, "You scramble the sleeper's user interface!") -/obj/machinery/sleeper/proc/inject_chem(chem) +/obj/machinery/sleeper/proc/inject_chem(chem, mob/user) if((chem in available_chems) && chem_allowed(chem)) occupant.reagents.add_reagent(chem_buttons[chem], 10) //emag effect kicks in here so that the "intended" chem is used for all checks, for extra FUUU + if(user) + add_logs(user, occupant, "injected [chem] into", addition = "via [src]") return TRUE /obj/machinery/sleeper/proc/chem_allowed(chem) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 61d5dbe5f6..b7de63a2d0 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -92,6 +92,7 @@ Class Procs: pressure_resistance = 15 max_integrity = 200 + anchored = TRUE interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT var/stat = 0 @@ -153,10 +154,10 @@ Class Procs: return PROCESS_KILL /obj/machinery/emp_act(severity) - if(use_power && !stat) + . = ..() + if(use_power && !stat && !(. & EMP_PROTECT_SELF)) use_power(7500/severity) new /obj/effect/temp_visual/emp(loc) - ..() /obj/machinery/proc/open_machine(drop = TRUE) state_open = TRUE @@ -180,7 +181,7 @@ Class Procs: density = TRUE if(!target) for(var/am in loc) - if(!is_type_in_typecache(am, (occupant_typecache || GLOB.typecache_living))) + if (!(occupant_typecache ? is_type_in_typecache(am, occupant_typecache) : isliving(am))) continue var/atom/movable/AM = am if(AM.has_buckled_mobs()) @@ -310,7 +311,7 @@ Class Procs: /obj/machinery/proc/spawn_frame(disassembled) var/obj/structure/frame/machine/M = new /obj/structure/frame/machine(loc) . = M - M.anchored = anchored + M.setAnchored(anchored) if(!disassembled) M.obj_integrity = M.max_integrity * 0.5 //the frame is already half broken transfer_fingerprints_to(M) @@ -371,7 +372,7 @@ Class Procs: //as long as we're the same anchored state and we're either on a floor or are anchored, toggle our anchored state if(I.use_tool(src, user, time, extra_checks = CALLBACK(src, .proc/unfasten_wrench_check, prev_anchored, user))) to_chat(user, "You [anchored ? "un" : ""]secure [src].") - anchored = !anchored + setAnchored(!anchored) playsound(src, 'sound/items/deconstruct.ogg', 50, 1) return SUCCESSFUL_UNFASTEN return FAILED_UNFASTEN @@ -413,12 +414,12 @@ Class Procs: var/obj/item/stack/SN = new SB.merge_type(null,used_amt) component_parts += SN else - if(W.SendSignal(COMSIG_TRY_STORAGE_TAKE, B, src)) + if(SEND_SIGNAL(W, COMSIG_TRY_STORAGE_TAKE, B, src)) component_parts += B B.moveToNullspace() - W.SendSignal(COMSIG_TRY_STORAGE_INSERT, A, null, null, TRUE) + SEND_SIGNAL(W, COMSIG_TRY_STORAGE_INSERT, A, null, null, TRUE) component_parts -= A - to_chat(user, "[A.name] replaced with [B.name].") + to_chat(user, "[capitalize(A.name)] replaced with [B.name].") shouldplaysound = 1 //Only play the sound when parts are actually replaced! break RefreshParts() @@ -463,15 +464,14 @@ Class Procs: /obj/machinery/proc/can_be_overridden() . = 1 - -/obj/machinery/tesla_act(power, explosive = FALSE) +/obj/machinery/tesla_act(power, tesla_flags, shocked_objects) ..() - if(prob(85) && explosive) - explosion(src.loc, 1, 2, 4, flame_range = 2, adminlog = FALSE, smoke = FALSE) - else if(prob(50)) - emp_act(EMP_LIGHT) - else - ex_act(EXPLODE_HEAVY) + if(prob(85) && (tesla_flags & TESLA_MACHINE_EXPLOSIVE)) + explosion(src, 1, 2, 4, flame_range = 2, adminlog = FALSE, smoke = FALSE) + if(tesla_flags & TESLA_OBJ_DAMAGE) + take_damage(power/2000, BURN, "energy") + if(prob(40)) + emp_act(EMP_LIGHT) /obj/machinery/Exited(atom/movable/AM, atom/newloc) . = ..() diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index a09db0a3cc..cac29404d2 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -5,7 +5,6 @@ icon_state = "ai-slipper0" layer = PROJECTILE_HIT_THRESHHOLD_LAYER plane = FLOOR_PLANE - anchored = TRUE max_integrity = 200 armor = list("melee" = 50, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index f02b765573..14dc7d05c2 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -1,154 +1,164 @@ -#define AIRLOCK_CONTROL_RANGE 5 - -// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access) -/obj/machinery/door/airlock - var/id_tag - var/frequency - var/datum/radio_frequency/radio_connection - - -/obj/machinery/door/airlock/receive_signal(datum/signal/signal) - if(!signal) - return - - if(id_tag != signal.data["tag"] || !signal.data["command"]) - return - - switch(signal.data["command"]) - if("open") - open(1) - - if("close") - close(1) - - if("unlock") - locked = FALSE - update_icon() - - if("lock") - locked = TRUE - update_icon() - - if("secure_open") - locked = FALSE - update_icon() - - sleep(2) - open(1) - - locked = TRUE - update_icon() - - if("secure_close") - locked = FALSE - close(1) - - locked = TRUE - sleep(2) - update_icon() - - send_status() - - -/obj/machinery/door/airlock/proc/send_status() - if(radio_connection) - var/datum/signal/signal = new(list( - "tag" = id_tag, - "timestamp" = world.time, - "door_status" = density ? "closed" : "open", - "lock_status" = locked ? "locked" : "unlocked" - )) - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - - -/obj/machinery/door/airlock/open(surpress_send) - . = ..() - if(!surpress_send) - send_status() - - -/obj/machinery/door/airlock/close(surpress_send) - . = ..() - if(!surpress_send) - send_status() - - -/obj/machinery/door/airlock/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - if(new_frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) - -/obj/machinery/door/airlock/Destroy() - if(frequency) - SSradio.remove_object(src,frequency) - return ..() - -/obj/machinery/airlock_sensor - icon = 'icons/obj/airlock_machines.dmi' - icon_state = "airlock_sensor_off" - name = "airlock sensor" - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - - anchored = TRUE - power_channel = ENVIRON - - var/id_tag - var/master_tag - var/frequency = FREQ_AIRLOCK_CONTROL - - var/datum/radio_frequency/radio_connection - - var/on = TRUE - var/alert = FALSE - - -/obj/machinery/airlock_sensor/update_icon() - if(on) - if(alert) - icon_state = "airlock_sensor_alert" - else - icon_state = "airlock_sensor_standby" - else - icon_state = "airlock_sensor_off" - -/obj/machinery/airlock_sensor/attack_hand(mob/user) - . = ..() - if(.) - return - var/datum/signal/signal = new(list( - "tag" = master_tag, - "command" = "cycle" - )) - - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - flick("airlock_sensor_cycle", src) - -/obj/machinery/airlock_sensor/process() - if(on) - var/datum/gas_mixture/air_sample = return_air() - var/pressure = round(air_sample.return_pressure(),0.1) - alert = (pressure < ONE_ATMOSPHERE*0.8) - - var/datum/signal/signal = new(list( - "tag" = id_tag, - "timestamp" = world.time, - "pressure" = num2text(pressure) - )) - - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - - update_icon() - -/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) - -/obj/machinery/airlock_sensor/Initialize() - . = ..() - set_frequency(frequency) - -/obj/machinery/airlock_sensor/Destroy() - SSradio.remove_object(src,frequency) +#define AIRLOCK_CONTROL_RANGE 5 + +// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access) +/obj/machinery/door/airlock + var/id_tag + var/frequency + var/datum/radio_frequency/radio_connection + + +/obj/machinery/door/airlock/receive_signal(datum/signal/signal) + if(!signal) + return + + if(id_tag != signal.data["tag"] || !signal.data["command"]) + return + + switch(signal.data["command"]) + if("open") + open(1) + + if("close") + close(1) + + if("unlock") + locked = FALSE + update_icon() + + if("lock") + locked = TRUE + update_icon() + + if("secure_open") + locked = FALSE + update_icon() + + sleep(2) + open(1) + + locked = TRUE + update_icon() + + if("secure_close") + locked = FALSE + close(1) + + locked = TRUE + sleep(2) + update_icon() + + send_status() + + +/obj/machinery/door/airlock/proc/send_status() + if(radio_connection) + var/datum/signal/signal = new(list( + "tag" = id_tag, + "timestamp" = world.time, + "door_status" = density ? "closed" : "open", + "lock_status" = locked ? "locked" : "unlocked" + )) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + + +/obj/machinery/door/airlock/open(surpress_send) + . = ..() + if(!surpress_send) + send_status() + + +/obj/machinery/door/airlock/close(surpress_send) + . = ..() + if(!surpress_send) + send_status() + + +/obj/machinery/door/airlock/proc/set_frequency(new_frequency) + SSradio.remove_object(src, frequency) + if(new_frequency) + frequency = new_frequency + radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) + +/obj/machinery/door/airlock/Destroy() + if(frequency) + SSradio.remove_object(src,frequency) + return ..() + +/obj/machinery/airlock_sensor + icon = 'icons/obj/airlock_machines.dmi' + icon_state = "airlock_sensor_off" + name = "airlock sensor" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + + power_channel = ENVIRON + + var/id_tag + var/master_tag + var/frequency = FREQ_AIRLOCK_CONTROL + + var/datum/radio_frequency/radio_connection + + var/on = TRUE + var/alert = FALSE + +/obj/machinery/airlock_sensor/incinerator_toxmix + id_tag = INCINERATOR_TOXMIX_AIRLOCK_SENSOR + master_tag = INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER + +/obj/machinery/airlock_sensor/incinerator_atmos + id_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR + master_tag = INCINERATOR_ATMOS_AIRLOCK_CONTROLLER + +/obj/machinery/airlock_sensor/incinerator_syndicatelava + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR + master_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER + +/obj/machinery/airlock_sensor/update_icon() + if(on) + if(alert) + icon_state = "airlock_sensor_alert" + else + icon_state = "airlock_sensor_standby" + else + icon_state = "airlock_sensor_off" + +/obj/machinery/airlock_sensor/attack_hand(mob/user) + . = ..() + if(.) + return + var/datum/signal/signal = new(list( + "tag" = master_tag, + "command" = "cycle" + )) + + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + flick("airlock_sensor_cycle", src) + +/obj/machinery/airlock_sensor/process() + if(on) + var/datum/gas_mixture/air_sample = return_air() + var/pressure = round(air_sample.return_pressure(),0.1) + alert = (pressure < ONE_ATMOSPHERE*0.8) + + var/datum/signal/signal = new(list( + "tag" = id_tag, + "timestamp" = world.time, + "pressure" = num2text(pressure) + )) + + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + + update_icon() + +/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) + SSradio.remove_object(src, frequency) + frequency = new_frequency + radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) + +/obj/machinery/airlock_sensor/Initialize() + . = ..() + set_frequency(frequency) + +/obj/machinery/airlock_sensor/Destroy() + SSradio.remove_object(src,frequency) return ..() \ No newline at end of file diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 78b43e2ee2..959bcfab4d 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -2,7 +2,6 @@ GLOBAL_LIST_EMPTY(announcement_systems) /obj/machinery/announcement_system density = TRUE - anchored = TRUE name = "\improper Automated Announcement System" desc = "An automated announcement system that handles minor announcements over the radio." icon = 'icons/obj/machines/telecomms.dmi' @@ -173,9 +172,9 @@ GLOBAL_LIST_EMPTY(announcement_systems) newhead = pick("OV#RL()D: \[UNKNOWN??\] DET*#CT)D!", "ER)#R - B*@ TEXT F*O(ND!", "AAS.exe is not responding. NanoOS is searching for a solution to the problem.") /obj/machinery/announcement_system/emp_act(severity) - if(!(stat & (NOPOWER|BROKEN))) + . = ..() + if(!(stat & (NOPOWER|BROKEN)) && !(. & EMP_PROTECT_SELF)) act_up() - ..(severity) /obj/machinery/announcement_system/emag_act() if(obj_flags & EMAGGED) diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm index 8445f62d97..a168cdd4d5 100644 --- a/code/game/machinery/aug_manipulator.dm +++ b/code/game/machinery/aug_manipulator.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/pda.dmi' icon_state = "pdapainter" density = TRUE - anchored = TRUE obj_integrity = 200 max_integrity = 200 var/obj/item/bodypart/storedpart diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index d6154aeb8b..84059e8029 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -7,13 +7,12 @@ desc = "It produces items using metal and glass." icon_state = "autolathe" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 100 circuit = /obj/item/circuitboard/machine/autolathe layer = BELOW_OBJ_LAYER - + var/operating = FALSE var/list/L = list() var/list/LL = list() @@ -47,7 +46,7 @@ ) /obj/machinery/autolathe/Initialize() - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS), 0, FALSE, null, null, CALLBACK(src, .proc/AfterMaterialInsert)) + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS), 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert)) . = ..() wires = new /datum/wires/autolathe(src) @@ -155,6 +154,7 @@ var/multiplier = text2num(href_list["multiplier"]) var/is_stack = ispath(being_built.build_path, /obj/item/stack) + multiplier = CLAMP(multiplier,1,50) ///////////////// diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 9511e8d0d4..879be046c9 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -11,7 +11,6 @@ var/id = null var/initialized_button = 0 armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 70) - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF @@ -96,7 +95,7 @@ update_icon() return - if(user.a_intent != INTENT_HARM && !(W.flags_1 & NOBLUDGEON_1)) + if(user.a_intent != INTENT_HARM && !(W.item_flags & NOBLUDGEON)) return attack_hand(user) else return ..() @@ -190,6 +189,31 @@ device = new /obj/item/assembly/control(src) ..() +/obj/machinery/button/door/incinerator_vent_toxmix + name = "combustion chamber vent control" + id = INCINERATOR_TOXMIX_VENT + req_access = list(ACCESS_TOX) + +/obj/machinery/button/door/incinerator_vent_atmos_main + name = "turbine vent control" + id = INCINERATOR_ATMOS_MAINVENT + req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS) + +/obj/machinery/button/door/incinerator_vent_atmos_aux + name = "combustion chamber vent control" + id = INCINERATOR_ATMOS_AUXVENT + req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS) + +/obj/machinery/button/door/incinerator_vent_syndicatelava_main + name = "turbine vent control" + id = INCINERATOR_SYNDICATELAVA_MAINVENT + req_access = list(ACCESS_SYNDICATE) + +/obj/machinery/button/door/incinerator_vent_syndicatelava_aux + name = "combustion chamber vent control" + id = INCINERATOR_SYNDICATELAVA_AUXVENT + req_access = list(ACCESS_SYNDICATE) + /obj/machinery/button/massdriver name = "mass driver button" desc = "A remote control switch for a mass driver." @@ -204,6 +228,19 @@ skin = "launcher" device_type = /obj/item/assembly/control/igniter +/obj/machinery/button/ignition/incinerator + name = "combustion chamber ignition switch" + desc = "A remote control switch for the combustion chamber's igniter." + +/obj/machinery/button/ignition/incinerator/toxmix + id = INCINERATOR_TOXMIX_IGNITER + +/obj/machinery/button/ignition/incinerator/atmos + id = INCINERATOR_ATMOS_IGNITER + +/obj/machinery/button/ignition/incinerator/syndicatelava + id = INCINERATOR_SYNDICATELAVA_IGNITER + /obj/machinery/button/flasher name = "flasher button" desc = "A remote control switch for a mounted flasher." diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index d19270f04e..3e8e3afc98 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -19,9 +19,7 @@ integrity_failure = 50 var/list/network = list("ss13") var/c_tag = null - var/c_tag_order = 999 var/status = TRUE - anchored = TRUE var/start_active = FALSE //If it ignores the random chance to start broken on round start var/invuln = null var/obj/item/camera_bug/bug = null @@ -36,12 +34,23 @@ var/alarm_on = FALSE var/busy = FALSE var/emped = FALSE //Number of consecutive EMP's on this camera + var/in_use_lights = 0 // Upgrades bitflag var/upgrades = 0 var/internal_light = TRUE //Whether it can light up when an AI views it +/obj/machinery/camera/preset/toxins //Bomb test site in space + name = "Hardened Bomb-Test Camera" + desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site. An external light is attached to the top." + c_tag = "Bomb Testing Site" + network = list("rd","toxins") + use_power = NO_POWER_USE //Test site is an unpowered area + invuln = TRUE + light_range = 10 + start_active = TRUE + /obj/machinery/camera/Initialize(mapload, obj/structure/camera_assembly/CA) . = ..() for(var/i in network) @@ -77,9 +86,10 @@ return ..() /obj/machinery/camera/emp_act(severity) + . = ..() if(!status) return - if(!isEmpProof()) + if(!(. & EMP_PROTECT_SELF)) if(prob(150/severity)) update_icon() var/list/previous_network = network @@ -107,13 +117,6 @@ M.unset_machine() M.reset_perspective(null) to_chat(M, "The screen bursts into static.") - ..() - -/obj/machinery/camera/tesla_act(var/power)//EMP proof upgrade also makes it tesla immune - if(isEmpProof()) - return - ..() - qdel(src)//to prevent bomb testing camera from exploding over and over forever /obj/machinery/camera/ex_act(severity, target) if(invuln) @@ -291,7 +294,7 @@ else if (stat & EMPED) icon_state = "[initial(icon_state)]emp" else - icon_state = "[initial(icon_state)]" + icon_state = "[initial(icon_state)][in_use_lights ? "_in_use" : ""]" /obj/machinery/camera/proc/toggle_cam(mob/user, displaymessage = 1) status = !status diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 7eac36dc96..47bd250091 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -13,7 +13,7 @@ icon = 'icons/obj/machines/camera.dmi' icon_state = "camera1" max_integrity = 150 - // Motion, EMP-Proof, X-Ray + // Motion, EMP-Proof, X-ray var/static/list/possible_upgrades = typecacheof(list(/obj/item/assembly/prox_sensor, /obj/item/stack/sheet/mineral/plasma, /obj/item/analyzer)) var/list/upgrades var/state = 1 @@ -42,7 +42,7 @@ if(istype(W, /obj/item/weldingtool)) if(weld(W, user)) to_chat(user, "You weld the assembly securely into place.") - anchored = TRUE + setAnchored(TRUE) state = 2 return if(2) @@ -62,7 +62,7 @@ if(weld(W, user)) to_chat(user, "You unweld the assembly from its place.") state = 1 - anchored = TRUE + setAnchored(TRUE) return // Upgrades! @@ -80,7 +80,7 @@ return FALSE var/obj/U = locate(/obj) in upgrades if(U) - to_chat(user, "You unattach an upgrade from the assembly.") + to_chat(user, "You detach an upgrade from the assembly.") tool.play_tool_sound(src) U.forceMove(drop_location()) upgrades -= U @@ -126,7 +126,7 @@ if(state != 1) return FALSE I.play_tool_sound(src) - to_chat(user, "You unattach the assembly from its place.") + to_chat(user, "You detach the assembly from its place.") new /obj/item/wallframe/camera(drop_location()) qdel(src) return TRUE diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm index d9a93a6578..45f0268a00 100644 --- a/code/game/machinery/camera/motion.dm +++ b/code/game/machinery/camera/motion.dm @@ -10,6 +10,8 @@ if(!isMotion()) . = PROCESS_KILL return + if(stat & EMPED) + return if (detectTime > 0) var/elapsed = world.time - detectTime if (elapsed > alarm_delay) @@ -63,6 +65,7 @@ for (var/mob/living/silicon/aiPlayer in GLOB.player_list) if (status) aiPlayer.triggerAlarm("Motion", get_area(src), list(src), src) + visible_message("A red light flashes on the [src]!") detectTime = -1 return TRUE diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index e330d015df..afcc1fee7c 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -2,16 +2,16 @@ // EMP /obj/machinery/camera/emp_proof - start_active = 1 + start_active = TRUE /obj/machinery/camera/emp_proof/Initialize() . = ..() upgradeEmpProof() -// X-RAY +// X-ray /obj/machinery/camera/xray - start_active = 1 + start_active = TRUE icon_state = "xraycam" // Thanks to Krutchen for the icons. /obj/machinery/camera/xray/Initialize() @@ -20,7 +20,7 @@ // MOTION /obj/machinery/camera/motion - start_active = 1 + start_active = TRUE name = "motion-sensitive security camera" /obj/machinery/camera/motion/Initialize() @@ -29,7 +29,7 @@ // ALL UPGRADES /obj/machinery/camera/all - start_active = 1 + start_active = TRUE /obj/machinery/camera/all/Initialize() . = ..() @@ -75,6 +75,7 @@ // UPGRADE PROCS /obj/machinery/camera/proc/upgradeEmpProof() + AddComponent(/datum/component/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES | EMP_PROTECT_CONTENTS) assembly.upgrades.Add(new /obj/item/stack/sheet/mineral/plasma(assembly)) upgrades |= CAMERA_UPGRADE_EMP_PROOF diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index c327f4c17a..1dbfe9d055 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -146,10 +146,6 @@ for (var/j = 1 to i - 1) a = L[j] b = L[j + 1] - if (a.c_tag_order != b.c_tag_order) - if (a.c_tag_order > b.c_tag_order) - L.Swap(j, j + 1) - else - if (sorttext(a.c_tag, b.c_tag) < 0) - L.Swap(j, j + 1) + if (sorttext(a.c_tag, b.c_tag) < 0) + L.Swap(j, j + 1) return L diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 3ccf7efef0..9a59d4aea5 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -3,7 +3,6 @@ desc = "It charges power cells." icon = 'icons/obj/power.dmi' icon_state = "ccharger" - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 60 @@ -54,7 +53,7 @@ user.visible_message("[user] inserts a cell into [src].", "You insert a cell into [src].") chargelevel = -1 updateicon() - else + else if(!charging && default_deconstruction_screwdriver(user, icon_state, icon_state, W)) return if(default_deconstruction_crowbar(W)) @@ -105,14 +104,14 @@ return /obj/machinery/cell_charger/emp_act(severity) - if(stat & (BROKEN|NOPOWER)) + . = ..() + + if(stat & (BROKEN|NOPOWER) || . & EMP_PROTECT_CONTENTS) return if(charging) charging.emp_act(severity) - ..(severity) - /obj/machinery/cell_charger/RefreshParts() charge_rate = 500 for(var/obj/item/stock_parts/capacitor/C in component_parts) @@ -128,4 +127,3 @@ charging.give(charge_rate) //this is 2558, efficient batteries exist updateicon() - \ No newline at end of file diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 17bfe5e02c..77d0981fd9 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -9,7 +9,6 @@ #define SPEAK(message) radio.talk_into(src, message, radio_channel, get_spans(), get_default_language()) /obj/machinery/clonepod - anchored = TRUE name = "cloning pod" desc = "An electronically-lockable pod for growing organic tissue." density = TRUE @@ -134,7 +133,7 @@ clonemind = locate(mindref) in SSticker.minds if(!istype(clonemind)) //not a mind return FALSE - if(clonemind.current) + if(!QDELETED(clonemind.current)) if(clonemind.current.stat != DEAD) //mind is associated with a non-dead body return FALSE if(clonemind.current.suiciding) // Mind is associated with a body that is suiciding. @@ -204,7 +203,8 @@ H.faction |= factions for(var/V in quirks) - new V(H) + var/datum/quirk/Q = new V(H) + Q.on_clone(quirks[V]) H.set_cloned_appearance() @@ -406,13 +406,14 @@ go_out() /obj/machinery/clonepod/emp_act(severity) - var/mob/living/mob_occupant = occupant - if(mob_occupant && prob(100/(severity*efficiency))) - connected_message(Gibberish("EMP-caused Accidental Ejection", 0)) - SPEAK(Gibberish("Exposure to electromagnetic fields has caused the ejection of [mob_occupant.real_name] prematurely." ,0)) - go_out() - mob_occupant.apply_vore_prefs() - ..() + . = ..() + if (!(. & EMP_PROTECT_SELF)) + var/mob/living/mob_occupant = occupant + if(mob_occupant && prob(100/(severity*efficiency))) + connected_message(Gibberish("EMP-caused Accidental Ejection", 0)) + SPEAK(Gibberish("Exposure to electromagnetic fields has caused the ejection of [mob_occupant.real_name] prematurely." ,0)) + mob_occupant.apply_vore_prefs() + go_out() /obj/machinery/clonepod/ex_act(severity, target) ..() diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index 4d9acb0586..74e117356d 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -3,7 +3,6 @@ icon = 'icons/obj/computer.dmi' icon_state = "computer" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 300 active_power_usage = 300 @@ -95,14 +94,15 @@ set_light(0) /obj/machinery/computer/emp_act(severity) - switch(severity) - if(1) - if(prob(50)) - obj_break("energy") - if(2) - if(prob(10)) - obj_break("energy") - ..() + . = ..() + if (!(. & EMP_PROTECT_SELF)) + switch(severity) + if(1) + if(prob(50)) + obj_break("energy") + if(2) + if(prob(10)) + obj_break("energy") /obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user) on_deconstruction() @@ -111,7 +111,7 @@ var/obj/structure/frame/computer/A = new /obj/structure/frame/computer(src.loc) A.dir = dir A.circuit = circuit - A.anchored = TRUE + A.setAnchored(TRUE) if(stat & BROKEN) if(user) to_chat(user, "The broken glass falls out.") diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index 43e736b6ef..5d6c92a97d 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/aifixer name = "\improper AI system integrity restorer" - desc = "Used with intelliCards containing nonfunctioning AIs to restore them to working order." + desc = "Used with intelliCards containing nonfunctional AIs to restore them to working order." req_access = list(ACCESS_CAPTAIN, ACCESS_ROBOTICS, ACCESS_HEADS) var/mob/living/silicon/ai/occupier = null var/active = 0 diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 648432c0ea..30574fdae4 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -122,12 +122,12 @@ active_apc.locked = TRUE active_apc.update_icon() active_apc = null - to_chat(usr, "[icon2html(src, usr)] Connected to APC in [APC.area]. Interface request sent.") - log_activity("remotely accessed APC in [APC.area]") + to_chat(usr, "[icon2html(src, usr)] Connected to APC in [get_area_name(APC.area, TRUE)]. Interface request sent.") + log_activity("remotely accessed APC in [get_area_name(APC.area, TRUE)]") APC.ui_interact(usr, state = GLOB.not_incapacitated_state) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - message_admins("[key_name_admin(usr)] remotely accessed [APC] from [src] at [get_area(src)].") - log_game("[key_name(usr)] remotely accessed [APC] from [src] at [get_area(src)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] remotely accessed [APC] from [src] at [AREACOORD(src)].") + log_game("[key_name(usr)] remotely accessed [APC] from [src] at [AREACOORD(src)].") if(APC.locked) APC.say("Remote access detected. Interface unlocked.") playsound(APC, 'sound/machines/boltsup.ogg', 25, 0) @@ -137,7 +137,7 @@ active_apc = APC if(href_list["name_filter"]) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) - var/new_filter = stripped_input(usr, "What name are you looking for?", name) as null|text + var/new_filter = stripped_input(usr, "What name are you looking for?", name) if(!src || !usr || !usr.canUseTopic(src) || stat || QDELETED(src)) return log_activity("changed name filter to \"[new_filter]\"") @@ -188,7 +188,7 @@ log_activity("logged in") else if(!(obj_flags & EMAGGED)) user.visible_message("You emag [src], disabling precise logging and allowing you to clear logs.") - log_game("[key_name(user)] emagged [src] at [get_area(src)], disabling operator tracking.") + log_game("[key_name(user)] emagged [src] at [AREACOORD(src)], disabling operator tracking.") obj_flags |= EMAGGED playsound(src, "sparks", 50, 1) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 46898bb2d7..13da773868 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -51,7 +51,9 @@ /obj/item/hot_potato/harmless/toy = 1, /obj/item/card/emagfake = 1, /obj/item/clothing/shoes/wheelys = 2, - /obj/item/clothing/shoes/kindleKicks = 2) + /obj/item/clothing/shoes/kindleKicks = 2, + /obj/item/storage/belt/military/snack = 2 + ) light_color = LIGHT_COLOR_GREEN @@ -70,7 +72,7 @@ Reset() /obj/machinery/computer/arcade/proc/prizevend(mob/user) - user.SendSignal(COMSIG_ADD_MOOD_EVENT, "arcade", /datum/mood_event/arcade) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "arcade", /datum/mood_event/arcade) if(prob(0.0001)) //1 in a million new /obj/item/gun/energy/pulse/prize(src) SSmedals.UnlockMedal(MEDAL_PULSE, usr.client) @@ -85,9 +87,9 @@ prize.forceMove(get_turf(src)) /obj/machinery/computer/arcade/emp_act(severity) - ..(severity) + . = ..() - if(stat & (NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN) || . & EMP_PROTECT_SELF) return var/empprize = null @@ -111,7 +113,7 @@ desc = "Does not support Pinball." icon_state = "arcade" circuit = /obj/item/circuitboard/computer/arcade/battle - var/enemy_name = "Space Villian" + var/enemy_name = "Space Villain" var/temp = "Winners don't use space drugs" //Temporary message, for attack messages, etc var/player_hp = 30 //Player health/attack points var/player_mp = 10 @@ -150,7 +152,7 @@ dat += "Recharge Power" dat += "" - var/datum/browser/popup = new(user, "arcade", "Space Villian 2000") + var/datum/browser/popup = new(user, "arcade", "Space Villain 2000") popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.open() @@ -233,7 +235,7 @@ if(obj_flags & EMAGGED) new /obj/effect/spawner/newbomb/timer/syndicate(loc) new /obj/item/clothing/head/collectable/petehat(loc) - message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") + message_admins("[ADMIN_LOOKUPFLW(usr)] has outbombed Cuban Pete and been awarded a bomb.") log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") Reset() obj_flags &= ~EMAGGED @@ -1028,7 +1030,7 @@ say("Congratulations, you made it to Orion!") if(obj_flags & EMAGGED) new /obj/item/orion_ship(loc) - message_admins("[key_name_admin(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") + message_admins("[ADMIN_LOOKUPFLW(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") log_game("[key_name(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") else prizevend(user) @@ -1073,8 +1075,8 @@ if(active) return - message_admins("[key_name_admin(usr)] primed an explosive Orion ship for detonation.") - log_game("[key_name(usr)] primed an explosive Orion ship for detonation.") + message_admins("[ADMIN_LOOKUPFLW(usr)] primed an explosive Orion ship for detonation at [AREACOORD(usr)].") + log_game("[key_name(usr)] primed an explosive Orion ship for detonation at [AREACOORD(usr)].") to_chat(user, "You flip the switch on the underside of [src].") active = 1 diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 6e4507c465..7eb8e206b5 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -6,7 +6,6 @@ name = "gas sensor" icon = 'icons/obj/stationobjs.dmi' icon_state = "gsensor1" - anchored = TRUE var/on = TRUE diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 5c9cf8b8a4..a151b0e0c0 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -11,7 +11,7 @@ to_chat(user, "You start wrenching the frame into place...") if(P.use_tool(src, user, 20, volume=50)) to_chat(user, "You wrench the frame into place.") - anchored = TRUE + setAnchored(TRUE) state = 1 return if(istype(P, /obj/item/weldingtool)) @@ -30,7 +30,7 @@ to_chat(user, "You start to unfasten the frame...") if(P.use_tool(src, user, 20, volume=50)) to_chat(user, "You unfasten the frame.") - anchored = FALSE + setAnchored(FALSE) state = 0 return if(istype(P, /obj/item/circuitboard/computer) && !circuit) diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 4ccf9d588c..696c9442b9 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -6,7 +6,6 @@ circuit = /obj/item/circuitboard/computer/security var/last_pic = 1 var/list/network = list("ss13") - var/mapping = 0//For the overview file, interesting bit of code. var/list/watchers = list() //who's using the console, associated with the camera they're on. light_color = LIGHT_COLOR_RED @@ -133,7 +132,7 @@ /obj/machinery/computer/security/proc/get_available_cameras() var/list/L = list() for (var/obj/machinery/camera/C in GLOB.cameranet.cameras) - if((is_away_level(z) || is_away_level(C.z)) && (C.z != z))//if on away mission, can only recieve feed from same z_level cameras + if((is_away_level(z) || is_away_level(C.z)) && (C.z != z))//if on away mission, can only receive feed from same z_level cameras continue L.Add(C) @@ -153,6 +152,50 @@ D["[C.c_tag][(C.status ? null : " (Deactivated)")]"] = C return D +// SECURITY MONITORS + +/obj/machinery/computer/security/wooden_tv + name = "security camera monitor" + desc = "An old TV hooked into the station's camera network." + icon_state = "television" + icon_keyboard = null + icon_screen = "detective_tv" + clockwork = TRUE //it'd look weird + +/obj/machinery/computer/security/mining + name = "outpost camera console" + desc = "Used to access the various cameras on the outpost." + icon_screen = "mining" + icon_keyboard = "mining_key" + network = list("mine", "auxbase") + circuit = /obj/item/circuitboard/computer/mining + +/obj/machinery/computer/security/research + name = "research camera console" + desc = "Used to access the various cameras in science." + network = list("rd") + circuit = /obj/item/circuitboard/computer/research + +/obj/machinery/computer/security/hos + name = "Head of Security's camera console" + desc = "A custom security console with added access to the labor camp network." + network = list("ss13", "labor") + circuit = null + +/obj/machinery/computer/security/labor + name = "labor camp monitoring" + desc = "Used to access the various cameras on the labor camp." + network = list("labor") + circuit = null + +/obj/machinery/computer/security/qm + name = "Quartermaster's camera console" + desc = "A console with access to the mining, auxillary base and vault camera networks." + network = list("mine", "auxbase", "vault") + circuit = null + +// TELESCREENS + /obj/machinery/computer/security/telescreen name = "\improper Telescreen" desc = "Used for watching an empty arena." @@ -162,7 +205,6 @@ density = FALSE circuit = null clockwork = TRUE //it'd look very weird - light_power = 0 /obj/machinery/computer/security/telescreen/update_icon() @@ -177,28 +219,68 @@ icon = 'icons/obj/status_display.dmi' icon_state = "entertainment" network = list("thunder") - density = FALSE - circuit = null -/obj/machinery/computer/security/wooden_tv - name = "security camera monitor" - desc = "An old TV hooked into the stations camera network." - icon_state = "television" - icon_keyboard = null - icon_screen = "detective_tv" - clockwork = TRUE //it'd look weird +/obj/machinery/computer/security/telescreen/rd + name = "Research Director's telescreen" + desc = "Used for watching the AI and the RD's goons from the safety of his office." + network = list("rd", "aicore", "aiupload", "minisat", "xeno", "test") - -/obj/machinery/computer/security/mining - name = "outpost camera console" - desc = "Used to access the various cameras on the outpost." - icon_screen = "mining" - icon_keyboard = "mining_key" - network = list("mine") - circuit = /obj/item/circuitboard/computer/mining - -/obj/machinery/computer/security/research - name = "research camera console" - desc = "Used to access the various cameras in science." +/obj/machinery/computer/security/telescreen/circuitry + name = "circuitry telescreen" + desc = "Used for watching the other eggheads from the safety of the circuitry lab." network = list("rd") - circuit = /obj/item/circuitboard/computer/research + +/obj/machinery/computer/security/telescreen/ce + name = "Chief Engineer's telescreen" + desc = "Used for watching the engine, telecommunications and the minisat." + network = list("engine", "singularity", "tcomms", "minisat") + +/obj/machinery/computer/security/telescreen/cmo + name = "Chief Medical Officer's telescreen" + desc = "A telescreen with access to the medbay's camera network." + network = list("medbay") + +/obj/machinery/computer/security/telescreen/vault + name = "Vault monitor" + desc = "A telescreen that connects to the vault's camera network." + network = list("vault") + +/obj/machinery/computer/security/telescreen/toxins + name = "Bomb test site monitor" + desc = "A telescreen that connects to the bomb test site's camera." + network = list("toxin") + +/obj/machinery/computer/security/telescreen/engine + name = "engine monitor" + desc = "A telescreen that connects to the engine's camera network." + network = list("engine") + +/obj/machinery/computer/security/telescreen/turbine + name = "turbine monitor" + desc = "A telescreen that connects to the turbine's camera." + network = list("turbine") + +/obj/machinery/computer/security/telescreen/interrogation + name = "interrogation room monitor" + desc = "A telescreen that connects to the interrogation room's camera." + network = list("interrogation") + +/obj/machinery/computer/security/telescreen/prison + name = "prison monitor" + desc = "A telescreen that connects to the permabrig's camera network." + network = list("prison") + +/obj/machinery/computer/security/telescreen/auxbase + name = "auxillary base monitor" + desc = "A telescreen that connects to the auxillary base's camera." + network = list("auxbase") + +/obj/machinery/computer/security/telescreen/minisat + name = "minisat monitor" + desc = "A telescreen that connects to the minisat's camera network." + network = list("minisat") + +/obj/machinery/computer/security/telescreen/aiupload + name = "AI upload monitor" + desc = "A telescreen that connects to the AI upload's camera network." + network = list("aiupload") diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 6112a5d760..e561c6466f 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -159,7 +159,7 @@ /mob/camera/aiEye/remote/update_remote_sight(mob/living/user) user.see_invisible = SEE_INVISIBLE_LIVING //can't see ghosts through cameras - user.sight = 0 + user.sight = SEE_TURFS | SEE_BLACKNESS user.see_in_dark = 2 return 1 @@ -190,7 +190,7 @@ else moveToNullspace() if(use_static) - GLOB.cameranet.visibility(src) + GLOB.cameranet.visibility(src, GetViewerClient()) if(visible_icon) if(eye_user.client) eye_user.client.images -= user_image diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index bb47a7ab32..09bf401e12 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -348,6 +348,12 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) /obj/machinery/computer/card/Topic(href, href_list) if(..()) return + + if(!usr.canUseTopic(src, !issilicon(usr)) || !is_operational()) + usr.unset_machine() + usr << browse(null, "window=id_com") + return + usr.set_machine(src) switch(href_list["choice"]) if ("modify") @@ -532,11 +538,12 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) updateUsrDialog() /obj/machinery/computer/card/AltClick(mob/user) - if(user.canUseTopic(src)) - if(scan) - eject_id_scan(user) - if(modify) - eject_id_modify(user) + if(!user.canUseTopic(src, !issilicon(user)) || !is_operational()) + return + if(scan) + eject_id_scan(user) + if(modify) + eject_id_modify(user) /obj/machinery/computer/card/proc/eject_id_scan(mob/user) if(scan) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 95b4ea9f80..4846610671 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -1,3 +1,5 @@ +#define AUTOCLONING_MINIMAL_LEVEL 3 + /obj/machinery/computer/cloning name = "cloning console" desc = "Used to clone people and manage DNA." @@ -79,6 +81,10 @@ src.scanner = findscanner() if(findfirstcloner && !LAZYLEN(pods)) findcloner() + if(!autoprocess) + STOP_PROCESSING(SSmachines, src) + else + START_PROCESSING(SSmachines, src) /obj/machinery/computer/cloning/proc/findscanner() var/obj/machinery/dna_scannernew/scannerf = null @@ -151,7 +157,7 @@ var/dat = "" dat += "Refresh" - if(scanner && HasEfficientPod() && scanner.scan_level > 2) + if(scanner && HasEfficientPod() && scanner.scan_level >= AUTOCLONING_MINIMAL_LEVEL) if(!autoprocess) dat += "Autoprocess" else @@ -276,10 +282,13 @@ if(href_list["task"]) switch(href_list["task"]) if("autoprocess") - autoprocess = 1 - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + if(scanner && HasEfficientPod() && scanner.scan_level >= AUTOCLONING_MINIMAL_LEVEL) + autoprocess = TRUE + START_PROCESSING(SSmachines, src) + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if("stopautoprocess") - autoprocess = 0 + autoprocess = FALSE + STOP_PROCESSING(SSmachines, src) playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) else if ((href_list["scan"]) && !isnull(scanner) && scanner.is_operational()) @@ -476,7 +485,7 @@ R.fields["quirks"] = list() for(var/V in mob_occupant.roundstart_quirks) var/datum/quirk/T = V - R.fields["quirks"] += T.type + R.fields["quirks"][T.type] = T.clone_data() if (!isnull(mob_occupant.mind)) //Save that mind so traitors can continue traitoring after cloning. R.fields["mind"] = "[REF(mob_occupant.mind)]" diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 14d02e9752..5e5c08ee99 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -45,19 +45,18 @@ /obj/machinery/computer/communications/process() if(..()) - if(state != STATE_STATUSDISPLAY && state != STATE_CALLSHUTTLE && state != STATE_PURCHASE && state != STATE_VIEWMESSAGE) - updateDialog() + var/ai_autoupdate = aistate != STATE_STATUSDISPLAY && aistate != STATE_CALLSHUTTLE && aistate != STATE_PURCHASE && aistate != STATE_VIEWMESSAGE + var/machine_user_autoupdate = state != STATE_STATUSDISPLAY && state != STATE_CALLSHUTTLE && state != STATE_PURCHASE && state != STATE_VIEWMESSAGE + updateDialog(machine_user_autoupdate,ai_autoupdate) /obj/machinery/computer/communications/Topic(href, href_list) if(..()) return - if(!is_station_level(z) && !is_centcom_level(z)) //Can only use on centcom and SS13 + if(!is_station_level(z) && !is_reserved_level(z)) //Can only use in transit and on SS13 to_chat(usr, "Unable to establish a connection: \black You're too far away from the station!") return usr.set_machine(src) - var/area/A = get_area(usr) - var/area_name = A.name if(!href_list["operation"]) return @@ -84,7 +83,7 @@ if(obj_flags & EMAGGED) authenticated = 2 auth_id = "Unknown" - to_chat(M, "[src] lets out a quiet alarm as its login is overriden.") + to_chat(M, "[src] lets out a quiet alarm as its login is overridden.") playsound(src, 'sound/machines/terminal_on.ogg', 50, 0) playsound(src, 'sound/machines/terminal_alert.ogg', 25, 0) if(prob(25)) @@ -115,9 +114,9 @@ playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) //Only notify people if an actual change happened var/security_level = get_security_level() - log_game("[key_name(usr)] has changed the security level to [security_level].") - message_admins("[key_name_admin(usr)] has changed the security level to [security_level].") - deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] at [area_name].", usr) + log_game("[key_name(usr)] has changed the security level to [security_level] with [src] at [AREACOORD(usr)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] has changed the security level to [security_level] with [src] at [AREACOORD(usr)].") + deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] with [src] at [get_area_name(usr, TRUE)].", usr) tmp_alertlevel = 0 else to_chat(usr, "You are not authorized to do this!") @@ -146,7 +145,7 @@ send2otherserver("[station_name()]", input,"Comms_Console") minor_announce(input, title = "Outgoing message to allied station") log_talk(usr,"[key_name(usr)] has sent a message to the other server: [input]",LOGSAY) - message_admins("[key_name_admin(usr)] has sent a message to the other server.") + message_admins("[ADMIN_LOOKUPFLW(usr)] has sent a message to the other server.") deadchat_broadcast("[usr.real_name] has sent an outgoing message to the other station(s).", usr) CM.lastTimeUsed = world.time @@ -176,7 +175,7 @@ M.action_load(S) SSshuttle.points -= S.credit_cost minor_announce("[usr.real_name] has purchased [S.name] for [S.credit_cost] credits." , "Shuttle Purchase") - message_admins("[key_name_admin(usr)] purchased [S.name].") + message_admins("[ADMIN_LOOKUPFLW(usr)] purchased [S.name].") SSblackbox.record_feedback("text", "shuttle_purchase", 1, "[S.name]") else to_chat(usr, "Something went wrong! The shuttle exchange system seems to be down.") @@ -249,14 +248,14 @@ if("enableemergency") make_maint_all_access() log_game("[key_name(usr)] enabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] enabled emergency maintenance access.") - deadchat_broadcast("[usr.real_name] enabled emergency maintenance access at [area_name].", usr) + message_admins("[ADMIN_LOOKUPFLW(usr)] enabled emergency maintenance access.") + deadchat_broadcast("[usr.real_name] enabled emergency maintenance access at [get_area_name(usr, TRUE)].", usr) state = STATE_DEFAULT if("disableemergency") revoke_maint_all_access() log_game("[key_name(usr)] disabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] disabled emergency maintenance access.") - deadchat_broadcast("[usr.real_name] disabled emergency maintenance access at [area_name].", usr) + message_admins("[ADMIN_LOOKUPFLW(usr)] disabled emergency maintenance access.") + deadchat_broadcast("[usr.real_name] disabled emergency maintenance access at [get_area_name(usr, TRUE)].", usr) state = STATE_DEFAULT // Status display stuff @@ -290,7 +289,7 @@ CentCom_announce(input, usr) to_chat(usr, "Message transmitted to Central Command.") log_talk(usr,"[key_name(usr)] has made a CentCom announcement: [input]",LOGSAY) - deadchat_broadcast("[usr.real_name] has messaged CentCom, \"[input]\" at [area_name].", usr) + deadchat_broadcast("[usr.real_name] has messaged CentCom, \"[input]\" at [get_area_name(usr, TRUE)].", usr) CM.lastTimeUsed = world.time // OMG SYNDICATE ...LETTERHEAD @@ -307,7 +306,7 @@ Syndicate_announce(input, usr) to_chat(usr, "SYSERR @l(19833)of(transmit.dm): !@$ MESSAGE TRANSMITTED TO SYNDICATE COMMAND.") log_talk(usr,"[key_name(usr)] has made a Syndicate announcement: [input]",LOGSAY) - deadchat_broadcast("[usr.real_name] has messaged the Syndicate, \"[input]\" at [area_name].", usr) + deadchat_broadcast("[usr.real_name] has messaged the Syndicate, \"[input]\" at [get_area_name(usr, TRUE)].", usr) CM.lastTimeUsed = world.time if("RestoreBackup") @@ -388,9 +387,9 @@ if(GLOB.security_level != old_level) //Only notify people if an actual change happened var/security_level = get_security_level() - log_game("[key_name(usr)] has changed the security level to [security_level].") - message_admins("[key_name_admin(usr)] has changed the security level to [security_level].") - deadchat_broadcast("[usr.real_name] has changed the security level to [security_level].", usr) + log_game("[key_name(usr)] has changed the security level to [security_level] from [src] at [AREACOORD(usr)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] has changed the security level to [security_level] from [src] at [AREACOORD(usr)].") + deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] from [src] at [get_area_name(usr, TRUE)].", usr) tmp_alertlevel = 0 aistate = STATE_DEFAULT if("ai-changeseclevel") @@ -400,13 +399,13 @@ if("ai-enableemergency") make_maint_all_access() log_game("[key_name(usr)] enabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] enabled emergency maintenance access.") + message_admins("[ADMIN_LOOKUPFLW(usr)] enabled emergency maintenance access.") deadchat_broadcast("[usr.real_name] enabled emergency maintenance access.", usr) aistate = STATE_DEFAULT if("ai-disableemergency") revoke_maint_all_access() log_game("[key_name(usr)] disabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] disabled emergency maintenance access.") + message_admins("[ADMIN_LOOKUPFLW(usr)] disabled emergency maintenance access.") deadchat_broadcast("[usr.real_name] disabled emergency maintenance access.", usr) aistate = STATE_DEFAULT @@ -556,6 +555,9 @@ if(STATE_PURCHASE) dat += "Budget: [SSshuttle.points] Credits.
" + dat += "
" + dat += "Caution: Purchasing dangerous shuttles may lead to mutiny and/or death.
" + dat += "
" for(var/shuttle_id in SSmapping.shuttle_templates) var/datum/map_template/shuttle/S = SSmapping.shuttle_templates[shuttle_id] if(S.can_be_bought && S.credit_cost < INFINITY) @@ -700,8 +702,7 @@ if(!input || !user.canUseTopic(src)) return SScommunications.make_announcement(user, is_silicon, input) - var/area/A = get_area(user) - deadchat_broadcast("[user.real_name] made an priority announcement at [A.name].", user) + deadchat_broadcast("[user.real_name] made an priority announcement from [get_area_name(usr, TRUE)].", user) /obj/machinery/computer/communications/proc/post_status(command, data1, data2) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 0b90f1df14..790d9898b8 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -9,7 +9,7 @@ #define RADIATION_DURATION_MAX 30 #define RADIATION_ACCURACY_MULTIPLIER 3 //larger is less accurate -#define RADIATION_IRRADIATION_MULTIPLIER 1 //multiplier for how much radiation a test subject recieves +#define RADIATION_IRRADIATION_MULTIPLIER 1 //multiplier for how much radiation a test subject receives #define SCANNER_ACTION_SE 1 #define SCANNER_ACTION_UI 2 @@ -33,7 +33,6 @@ var/obj/machinery/dna_scannernew/connected = null var/obj/item/disk/data/diskette = null var/list/delayed_action = null - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 400 diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm index 4e80883a31..68cbf03f03 100644 --- a/code/game/machinery/computer/gulag_teleporter.dm +++ b/code/game/machinery/computer/gulag_teleporter.dm @@ -148,7 +148,7 @@ id_goal_not_set = TRUE id.goal = default_goal say("[id]'s ID card goal defaulting to [id.goal] points.") - log_game("[user]([user.ckey] teleported [prisoner]([prisoner.ckey]) to the Labor Camp ([beacon.x], [beacon.y], [beacon.z]) for [id_goal_not_set ? "default goal of ":""][id.goal] points.") + log_game("[key_name(user)] teleported [key_name(prisoner)] to the Labor Camp [COORD(beacon)] for [id_goal_not_set ? "default goal of ":""][id.goal] points.") teleporter.handle_prisoner(id, temporary_record) playsound(src, 'sound/weapons/emitter.ogg', 50, 1) prisoner.forceMove(get_turf(beacon)) diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm index fd785e5bc6..d1f450013b 100644 --- a/code/game/machinery/computer/launchpad_control.dm +++ b/code/game/machinery/computer/launchpad_control.dm @@ -128,7 +128,7 @@ pad.x_offset = 0 if(href_list["change_name"]) - var/new_name = stripped_input(usr, "What do you wish to name the launchpad?", "Launchpad", pad.display_name, 15) as text|null + var/new_name = stripped_input(usr, "What do you wish to name the launchpad?", "Launchpad", pad.display_name, 15) if(!new_name) return pad.display_name = new_name diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index d0a9251fbd..0ee394d889 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -283,7 +283,7 @@ src.temp = "Are you sure you wish to delete all records?
\n\tYes
\n\tNo
" else if(href_list["del_all2"]) - investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", INVESTIGATE_RECORDS) + investigate_log("[key_name(usr)] has deleted all medical records.", INVESTIGATE_RECORDS) GLOB.data_core.medical.Cut() src.temp = "All records deleted." @@ -329,7 +329,7 @@ src.active2.fields["mi_dis_d"] = t1 if("ma_dis") if(active2) - var/t1 = stripped_input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) + var/t1 = stripped_input("Please input major disabilities list:", "Med. records", src.active2.fields["ma_dis"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["ma_dis"] = t1 @@ -449,7 +449,7 @@ src.temp = "Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
" else if(href_list["del_r2"]) - investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", INVESTIGATE_RECORDS) + investigate_log("[key_name(usr)] has deleted the medical records for [active1.fields["name"]].", INVESTIGATE_RECORDS) if(active2) qdel(active2) active2 = null @@ -553,7 +553,8 @@ return /obj/machinery/computer/med_data/emp_act(severity) - if(!(stat & (BROKEN|NOPOWER))) + . = ..() + if(!(stat & (BROKEN|NOPOWER)) && !(. & EMP_PROTECT_SELF)) for(var/datum/data/record/R in GLOB.data_core.medical) if(prob(10/severity)) switch(rand(1,6)) @@ -577,7 +578,6 @@ else if(prob(1)) qdel(R) continue - ..() /obj/machinery/computer/med_data/proc/canUseMedicalRecordsConsole(mob/user, message = 1, record1, record2) if(user) diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index ec113eb43b..b71f572e68 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -130,4 +130,4 @@ /obj/machinery/computer/pod/old/swf name = "\improper Magix System IV" - desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition." + desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorcerer's Edition." diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index c0d514f9a5..5c8d189a7f 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -104,7 +104,7 @@ var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort") if(choice == "Confirm" && can_control(usr, R) && !..()) var/turf/T = get_turf(R) - message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name(R, R.client)][ADMIN_JMP(T)]!") + message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(R, R.client)] at [ADMIN_VERBOSEJMP(T)]!") log_game("\[key_name(usr)] detonated [key_name(R)]!") if(R.connected_ai) to_chat(R.connected_ai, "

ALERT - Cyborg detonation detected: [R.name]
") @@ -133,16 +133,16 @@ if((istype(S) && S.hack_software) || IsAdminGhost(usr)) var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in GLOB.silicon_mobs if(istype(R) && !R.emagged && (R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R)) - log_game("[key_name(usr)] emagged [R.name] using robotic console!") - message_admins("[key_name_admin(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") + log_game("[key_name(usr)] emagged [key_name(R)] using robotic console!") + message_admins("[ADMIN_LOOKUPFLW(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") R.SetEmagged(1) else if(href_list["convert"]) if(isAI(usr) && is_servant_of_ratvar(usr)) var/mob/living/silicon/robot/R = locate(href_list["convert"]) in GLOB.silicon_mobs if(istype(R) && !is_servant_of_ratvar(R) && R.connected_ai == usr) - log_game("[key_name(usr)] converted [R.name] using robotic console!") - message_admins("[key_name_admin(usr)] converted cyborg [key_name_admin(R)] using robotic console!") + log_game("[key_name(usr)] converted [key_name(R)] using robotic console!") + message_admins("[ADMIN_LOOKUPFLW(usr)] converted cyborg [key_name_admin(R)] using robotic console!") add_servant_of_ratvar(R) else if (href_list["killdrone"]) @@ -152,7 +152,7 @@ to_chat(usr, "ERROR: [D] is not responding to external commands.") else var/turf/T = get_turf(D) - message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)][ADMIN_JMP(T)]!") + message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)] at [ADMIN_VERBOSEJMP(T)]!") log_game("[key_name(usr)] detonated [key_name(D)]!") var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, D) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 1c7de214ba..8a2a06bf1f 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -150,7 +150,7 @@ background = "'background-color:#990000;'" if("Incarcerated") background = "'background-color:#CD6500;'" - if("Parolled") + if("Paroled") background = "'background-color:#CD6500;'" if("Discharged") background = "'background-color:#006699;'" @@ -457,7 +457,7 @@ What a mess.*/ temp += "No" if("Purge All Records") - investigate_log("[usr.name] ([usr.key]) has purged all the security records.", INVESTIGATE_RECORDS) + investigate_log("[key_name(usr)] has purged all the security records.", INVESTIGATE_RECORDS) for(var/datum/data/record/R in GLOB.data_core.security) qdel(R) GLOB.data_core.security.Cut() @@ -653,6 +653,7 @@ What a mess.*/ return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, station_time_timestamp()) GLOB.data_core.addMinorCrime(active1.fields["id"], crime) + investigate_log("New Minor Crime: [t1]: [t2] | Added to [active1.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) if("mi_crim_delete") if(istype(active1, /datum/data/record)) if(href_list["cdataid"]) @@ -667,6 +668,7 @@ What a mess.*/ return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, station_time_timestamp()) GLOB.data_core.addMajorCrime(active1.fields["id"], crime) + investigate_log("New Major Crime: [t1]: [t2] | Added to [active1.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) if("ma_crim_delete") if(istype(active1, /datum/data/record)) if(href_list["cdataid"]) @@ -686,7 +688,7 @@ What a mess.*/ temp += "
  • None
  • " temp += "
  • *Arrest*
  • " temp += "
  • Incarcerated
  • " - temp += "
  • Parolled
  • " + temp += "
  • Paroled
  • " temp += "
  • Discharged
  • " temp += "" if("rank") @@ -720,22 +722,22 @@ What a mess.*/ active2.fields["criminal"] = "*Arrest*" if("incarcerated") active2.fields["criminal"] = "Incarcerated" - if("parolled") - active2.fields["criminal"] = "Parolled" + if("paroled") + active2.fields["criminal"] = "Paroled" if("released") active2.fields["criminal"] = "Discharged" - investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [usr.name] ([usr.key]).", INVESTIGATE_RECORDS) + investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [key_name(usr)].", INVESTIGATE_RECORDS) for(var/mob/living/carbon/human/H in GLOB.carbon_list) H.sec_hud_set_security_status() if("Delete Record (Security) Execute") - investigate_log("[usr.name] ([usr.key]) has deleted the security records for [active1.fields["name"]].", INVESTIGATE_RECORDS) + investigate_log("[key_name(usr)] has deleted the security records for [active1.fields["name"]].", INVESTIGATE_RECORDS) if(active2) qdel(active2) active2 = null if("Delete Record (ALL) Execute") if(active1) - investigate_log("[usr.name] ([usr.key]) has deleted all records for [active1.fields["name"]].", INVESTIGATE_RECORDS) + investigate_log("[key_name(usr)] has deleted all records for [active1.fields["name"]].", INVESTIGATE_RECORDS) for(var/datum/data/record/R in GLOB.data_core.medical) if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) qdel(R) @@ -783,8 +785,9 @@ What a mess.*/ printing = FALSE /obj/machinery/computer/secure_data/emp_act(severity) - if(stat & (BROKEN|NOPOWER)) - ..(severity) + . = ..() + + if(stat & (BROKEN|NOPOWER) || . & EMP_PROTECT_SELF) return for(var/datum/data/record/R in GLOB.data_core.security) @@ -800,7 +803,7 @@ What a mess.*/ if(3) R.fields["age"] = rand(5, 85) if(4) - R.fields["criminal"] = pick("None", "*Arrest*", "Incarcerated", "Parolled", "Discharged") + R.fields["criminal"] = pick("None", "*Arrest*", "Incarcerated", "Paroled", "Discharged") if(5) R.fields["p_stat"] = pick("*Unconscious*", "Active", "Physically Unfit") if(6) @@ -817,8 +820,6 @@ What a mess.*/ qdel(R) continue - ..(severity) - /obj/machinery/computer/secure_data/proc/canUseSecurityRecordsConsole(mob/user, message1 = 0, record1, record2) if(user) if(authenticated) diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index 93b997eee6..b9b95eecd0 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -5,13 +5,11 @@ icon_keyboard = "teleport_key" light_color = LIGHT_COLOR_BLUE circuit = /obj/item/circuitboard/computer/teleporter - var/obj/item/gps/locked var/regime_set = "Teleporter" var/id var/obj/machinery/teleport/station/power_station var/calibrating - var/turf/target //Used for one-time-use teleport cards (such as clown planet coordinates.) - //Setting this to 1 will set src.locked to null after a player enters the portal and will not allow hand-teles to open portals to that location. + var/turf/target /obj/machinery/computer/teleporter/Initialize() . = ..() @@ -33,18 +31,6 @@ break return power_station -/obj/machinery/computer/teleporter/attackby(obj/I, mob/living/user, params) - if(istype(I, /obj/item/gps)) - var/obj/item/gps/L = I - if(L.locked_location && !(stat & (NOPOWER|BROKEN))) - if(!user.transferItemToLoc(L, src)) - to_chat(user, "\the [I] is stuck to your hand, you cannot put it in \the [src]!") - return - locked = L - to_chat(user, "You insert the GPS device into the [name]'s slot.") - else - return ..() - /obj/machinery/computer/teleporter/ui_interact(mob/user) . = ..() var/data = "

    Teleporter Status

    " @@ -65,12 +51,6 @@ data += "Change regime
    " data += "Set target
    " - if(locked) - data += "
    Get target from memory
    " - data += "Eject GPS device
    " - else - data += "
    Get target from memory
    " - data += "Eject GPS device
    " data += "
    Calibrate Hub" @@ -82,11 +62,6 @@ if(..()) return - if(href_list["eject"]) - eject() - updateDialog() - return - if(!check_hub_connection()) say("Error: Unable to detect hub.") return @@ -104,11 +79,6 @@ power_station.teleporter_hub.update_icon() power_station.teleporter_hub.calibrated = 0 set_target(usr) - if(href_list["locked"]) - power_station.engaged = 0 - power_station.teleporter_hub.update_icon() - power_station.teleporter_hub.calibrated = 0 - target = get_turf(locked.locked_location) if(href_list["calibrate"]) if(!target) say("Error: No target set to calibrate to.") @@ -144,11 +114,6 @@ else regime_set = "Teleporter" -/obj/machinery/computer/teleporter/proc/eject() - if(locked) - locked.forceMove(get_turf(src)) - locked = null - /obj/machinery/computer/teleporter/proc/set_target(mob/user) var/list/L = list() var/list/areaindex = list() @@ -171,6 +136,8 @@ var/desc = input("Please select a location to lock in.", "Locking Computer") as null|anything in L target = L[desc] + var/turf/T = get_turf(target) + log_game("[key_name(user)] has set the teleporter target to [target] at [AREACOORD(T)]") else var/list/S = power_station.linked_stations @@ -185,6 +152,8 @@ var/obj/machinery/teleport/station/target_station = L[desc] if(!target_station || !target_station.teleporter_hub) return + var/turf/T = get_turf(target_station) + log_game("[key_name(user)] has set the teleporter target to [target_station] at [AREACOORD(T)]") target = target_station.teleporter_hub target_station.linked_stations |= power_station target_station.stat &= ~NOPOWER diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 59bf9f86fd..fd1e2f5426 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -106,7 +106,7 @@ if(P.use_tool(src, user, 40, volume=75)) if(state == 1) to_chat(user, "You [anchored ? "un" : ""]secure [name].") - anchored = !anchored + setAnchored(!anchored) return if(2) @@ -114,7 +114,7 @@ to_chat(user, "You start [anchored ? "un" : ""]securing [name]...") if(P.use_tool(src, user, 40, volume=75)) to_chat(user, "You [anchored ? "un" : ""]secure [name].") - anchored = !anchored + setAnchored(!anchored) return if(istype(P, /obj/item/circuitboard/machine)) @@ -169,7 +169,7 @@ to_chat(user, "You start [anchored ? "un" : ""]securing [name]...") if(P.use_tool(src, user, 40, volume=75)) to_chat(user, "You [anchored ? "un" : ""]secure [name].") - anchored = !anchored + setAnchored(!anchored) return if(istype(P, /obj/item/screwdriver)) @@ -180,8 +180,8 @@ break if(component_check) P.play_tool_sound(src) - var/obj/machinery/new_machine = new src.circuit.build_path(src.loc, 1) - new_machine.anchored = anchored + var/obj/machinery/new_machine = new circuit.build_path(loc, 1) + new_machine.setAnchored(anchored) new_machine.on_construction() for(var/obj/O in new_machine.component_parts) qdel(O) @@ -219,7 +219,7 @@ req_components[path] -= used_amt else added_components[part] = path - if(replacer.SendSignal(COMSIG_TRY_STORAGE_TAKE, part, src)) + if(SEND_SIGNAL(replacer, COMSIG_TRY_STORAGE_TAKE, part, src)) req_components[path]-- for(var/obj/item/part in added_components) diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index 750d83eecc..cfdf07acdd 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -3,7 +3,6 @@ desc = "A classic music player." icon = 'icons/obj/stationobjs.dmi' icon_state = "jukebox" - anchored = TRUE verb_say = "states" density = TRUE req_access = list(ACCESS_BAR) @@ -67,10 +66,10 @@ if(istype(O, /obj/item/wrench)) if(!anchored && !isinspace()) to_chat(user,"You secure [src] to the floor.") - anchored = TRUE + setAnchored(TRUE) else if(anchored) to_chat(user,"You unsecure and disconnect [src].") - anchored = FALSE + setAnchored(FALSE) playsound(src, 'sound/items/deconstruct.ogg', 50, 1) return return ..() @@ -376,10 +375,10 @@ sleep(speed) for(var/i in 1 to speed) M.setDir(pick(GLOB.cardinals)) - // update resting manually to avoid chat spam - for(var/mob/living/carbon/NS in rangers) - NS.resting = !NS.resting - NS.update_canmove() + // update resting manually to avoid chat spam CITADEL EDIT - NO MORE RESTSPAM + //for(var/mob/living/carbon/NS in rangers) + // NS.resting = !NS.resting + // NS.update_canmove() time-- /obj/machinery/jukebox/disco/proc/dance5(var/mob/living/M) diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm index c1c755251d..5a041e6baa 100644 --- a/code/game/machinery/defibrillator_mount.dm +++ b/code/game/machinery/defibrillator_mount.dm @@ -7,7 +7,6 @@ icon = 'icons/obj/machines/defib_mount.dmi' icon_state = "defibrillator_mount" density = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 1 power_channel = EQUIP @@ -38,7 +37,7 @@ use_power(200) defib.cell.give(180) //90% efficiency, slightly better than the cell charger's 87.5% update_icon() - + /obj/machinery/defibrillator_mount/update_icon() cut_overlays() if(defib) @@ -70,7 +69,7 @@ if(defib) to_chat(user, "There's already a defibrillator in [src]!") return - if(I.flags_1 & NODROP_1 || !user.transferItemToLoc(I, src)) + if(I.item_flags & NODROP || !user.transferItemToLoc(I, src)) to_chat(user, "[I] is stuck to your hand!") return user.visible_message("[user] hooks up [I] to [src]!", \ diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm index 2254500afe..7e960d4ebc 100644 --- a/code/game/machinery/dish_drive.dm +++ b/code/game/machinery/dish_drive.dm @@ -7,7 +7,6 @@ icon_state = "synthesizer" idle_power_usage = 8 //5 with default parts active_power_usage = 13 //10 with default parts - anchored = TRUE density = FALSE circuit = /obj/item/circuitboard/machine/dish_drive var/static/list/item_types = list(/obj/item/trash/waffles, diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 2a8868cb4f..507d6c6f43 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/machines/cloning.dmi' icon_state = "scanner" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 50 active_power_usage = 300 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 00c683af85..51b3991366 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -178,7 +178,7 @@ limit-- while(!FoundDoor && limit) if (!FoundDoor) - log_world("### MAP WARNING, [src] at [get_area_name(src, TRUE)] [COORD(src)] failed to find a valid airlock to cyclelink with!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] failed to find a valid airlock to cyclelink with!") return FoundDoor.cyclelinkedairlock = src cyclelinkedairlock = FoundDoor @@ -192,7 +192,7 @@ /obj/machinery/door/airlock/check_access_ntnet(datum/netdata/data) return !requiresID() || ..() -/obj/machinery/door/airlock/ntnet_recieve(datum/netdata/data) +/obj/machinery/door/airlock/ntnet_receive(datum/netdata/data) // Check if the airlock is powered and can accept control packets. if(!hasPower() || !canAIControl()) return @@ -201,7 +201,7 @@ if(!check_access_ntnet(data)) return - // Handle recieved packet. + // Handle received packet. var/command = lowertext(data.data["data"]) var/command_value = lowertext(data.data["data_secondary"]) switch(command) @@ -414,7 +414,7 @@ if(!prob(prb)) return FALSE //you lucked out, no shock for you do_sparks(5, TRUE, src) - var/tmp/check_range = TRUE + var/check_range = TRUE if(electrocute_mob(user, get_area(src), src, 1, check_range)) shockCooldown = world.time + 10 return TRUE @@ -1321,7 +1321,7 @@ A = new /obj/structure/door_assembly(loc) //If you come across a null assemblytype, it will produce the default assembly instead of disintegrating. A.heat_proof_finished = src.heat_proof //tracks whether there's rglass in - A.anchored = TRUE + A.setAnchored(TRUE) A.glass = src.glass A.state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS A.created_name = name @@ -1509,7 +1509,7 @@ else if (safe) safe = FALSE else - to_chat(usr, "Firmware reports safeties already overriden.") + to_chat(usr, "Firmware reports safeties already overridden.") . = TRUE if("speed-on") if(wires.is_cut(WIRE_TIMING)) diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 69621adc84..8704a4c749 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -79,6 +79,20 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/glass/incinerator + autoclose = FALSE + frequency = FREQ_AIRLOCK_CONTROL + heat_proof = TRUE + req_access = list(ACCESS_SYNDICATE) + +/obj/machinery/door/airlock/glass/incinerator/syndicatelava_interior + name = "Turbine Interior Airlock" + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR + +/obj/machinery/door/airlock/glass/incinerator/syndicatelava_exterior + name = "Turbine Exterior Airlock" + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR + /obj/machinery/door/airlock/command/glass opacity = 0 glass = TRUE @@ -107,6 +121,20 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/research/glass/incinerator + autoclose = FALSE + frequency = FREQ_AIRLOCK_CONTROL + heat_proof = TRUE + req_access = list(ACCESS_TOX) + +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior + name = "Mixing Room Interior Airlock" + id_tag = INCINERATOR_TOXMIX_AIRLOCK_INTERIOR + +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior + name = "Mixing Room Exterior Airlock" + id_tag = INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR + /obj/machinery/door/airlock/mining/glass opacity = 0 glass = TRUE @@ -222,8 +250,8 @@ /obj/machinery/door/airlock/plasma/attackby(obj/item/C, mob/user, params) if(C.is_hot() > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma airlock ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]") - log_game("Plasma airlock ignited by [key_name(user)] in [COORD(src)]") + message_admins("Plasma airlock ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") + log_game("Plasma airlock ignited by [key_name(user)] in [AREACOORD(src)]") ignite(C.is_hot()) else return ..() @@ -287,6 +315,20 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/public/glass/incinerator + autoclose = FALSE + frequency = FREQ_AIRLOCK_CONTROL + heat_proof = TRUE + req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS) + +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior + name = "Turbine Interior Airlock" + id_tag = INCINERATOR_ATMOS_AIRLOCK_INTERIOR + +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior + name = "Turbine Exterior Airlock" + id_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR + ////////////////////////////////// /* External Airlocks diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 3ab819f275..3542b4e8bd 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -24,7 +24,6 @@ icon_state = "frame" desc = "A remote control for a door." req_access = list(ACCESS_SECURITY) - anchored = TRUE density = FALSE var/id = null // id of linked machinery/lockers diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index de1cb36ea7..e169c66c24 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -3,7 +3,6 @@ desc = "It opens and closes." icon = 'icons/obj/doors/Doorint.dmi' icon_state = "door1" - anchored = TRUE opacity = 1 density = TRUE layer = OPEN_DOOR_LAYER @@ -179,7 +178,7 @@ else if(istype(I, /obj/item/weldingtool)) try_to_weld(I, user) return 1 - else if(!(I.flags_1 & NOBLUDGEON_1) && user.a_intent != INTENT_HARM) + else if(!(I.item_flags & NOBLUDGEON) && user.a_intent != INTENT_HARM) try_to_activate_door(user) return 1 return ..() @@ -208,6 +207,9 @@ playsound(src.loc, 'sound/items/welder.ogg', 100, 1) /obj/machinery/door/emp_act(severity) + . = ..() + if (. & EMP_PROTECT_SELF) + return if(prob(20/severity) && (istype(src, /obj/machinery/door/airlock) || istype(src, /obj/machinery/door/window)) ) INVOKE_ASYNC(src, .proc/open) if(prob(severity*10 - 20)) @@ -215,7 +217,6 @@ secondsElectrified = -1 LAZYADD(shockedby, "\[[time_stamp()]\]EM Pulse") addtimer(CALLBACK(src, .proc/unelectrify), 300) - ..() /obj/machinery/door/proc/unelectrify() secondsElectrified = 0 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 4a2df11151..dc7056784a 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -15,7 +15,6 @@ resistance_flags = FIRE_PROOF heat_proof = TRUE glass = TRUE - var/nextstate = null sub_door = TRUE explosion_block = 1 safe = FALSE @@ -24,6 +23,7 @@ assemblytype = /obj/structure/firelock_frame armor = list("melee" = 30, "bullet" = 30, "laser" = 20, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 70) interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_REQUIRES_SILICON | INTERACT_MACHINE_OPEN + var/nextstate = null var/boltslocked = TRUE var/list/affecting_areas diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 9e467e8926..a581b20f52 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -36,6 +36,26 @@ else INVOKE_ASYNC(src, .proc/close) +/obj/machinery/door/poddoor/incinerator_toxmix + name = "combustion chamber vent" + id = INCINERATOR_TOXMIX_VENT + +/obj/machinery/door/poddoor/incinerator_atmos_main + name = "turbine vent" + id = INCINERATOR_ATMOS_MAINVENT + +/obj/machinery/door/poddoor/incinerator_atmos_aux + name = "combustion chamber vent" + id = INCINERATOR_ATMOS_AUXVENT + +/obj/machinery/door/poddoor/incinerator_syndicatelava_main + name = "turbine vent" + id = INCINERATOR_SYNDICATELAVA_MAINVENT + +/obj/machinery/door/poddoor/incinerator_syndicatelava_aux + name = "combustion chamber vent" + id = INCINERATOR_SYNDICATELAVA_AUXVENT + /obj/machinery/door/poddoor/CollidedWith(atom/movable/AM) if(density) return 0 diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 702583d01a..0f84817b5a 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -38,8 +38,7 @@ /obj/machinery/door/window/Destroy() density = FALSE - for(var/I in debris) - qdel(I) + QDEL_LIST(debris) if(obj_integrity == 0) playsound(src, "shatter", 70, 1) electronics = null @@ -247,7 +246,7 @@ if("rightsecure") WA.facing = "r" WA.secure = TRUE - WA.anchored = TRUE + WA.setAnchored(TRUE) WA.state= "02" WA.setDir(src.dir) WA.ini_dir = src.dir diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 0abc3e8cea..1131c55eb3 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -6,7 +6,6 @@ GLOBAL_LIST_EMPTY(doppler_arrays) icon = 'icons/obj/machines/research.dmi' icon_state = "tdoppler" density = TRUE - anchored = TRUE var/integrated = FALSE var/max_dist = 150 verb_say = "states coldly" diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 9d4f5dd936..ffe7961534 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -8,7 +8,6 @@ icon = 'icons/obj/machines/droneDispenser.dmi' icon_state = "on" - anchored = TRUE density = TRUE max_integrity = 250 @@ -174,7 +173,7 @@ use_power(power_used) var/atom/A = new dispense_type(loc) - A.admin_spawned = admin_spawned + A.flags_1 |= (flags_1 & ADMIN_SPAWNED_1) if(create_sound) playsound(src, create_sound, 50, 1) diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index 63b7f2caeb..70ce3d36ae 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -6,7 +6,6 @@ /obj/machinery/doorButtons power_channel = ENVIRON - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 4 diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index e2402177e2..0036b41804 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -7,11 +7,11 @@ /datum/computer/file/embedded_program/airlock_controller var/id_tag - var/exterior_door_tag - var/interior_door_tag - var/airpump_tag - var/sensor_tag - var/sanitize_external + var/exterior_door_tag //Burn chamber facing door + var/interior_door_tag //Station facing door + var/airpump_tag //See: dp_vent_pump.dm + var/sensor_tag //See: /obj/machinery/airlock_sensor + var/sanitize_external //Before the interior airlock opens, do we first drain all gases inside the chamber and then repressurize? state = AIRLOCK_STATE_CLOSED var/target_state = AIRLOCK_STATE_CLOSED @@ -97,7 +97,7 @@ "sigtype" = "command" )) if(memory["pump_status"] == "siphon") - signal.data["stabalize"] = 1 + signal.data["stabilize"] = 1 else if(memory["pump_status"] != "release") signal.data["power"] = 1 post_signal(signal) @@ -211,6 +211,33 @@ var/sensor_tag var/sanitize_external +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix + name = "Incinerator Access Console" + airpump_tag = INCINERATOR_TOXMIX_DP_VENTPUMP + exterior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR + id_tag = INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER + interior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_INTERIOR + sanitize_external = TRUE + sensor_tag = INCINERATOR_TOXMIX_AIRLOCK_SENSOR + +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos + name = "Incinerator Access Console" + airpump_tag = INCINERATOR_ATMOS_DP_VENTPUMP + exterior_door_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR + id_tag = INCINERATOR_ATMOS_AIRLOCK_CONTROLLER + interior_door_tag = INCINERATOR_ATMOS_AIRLOCK_INTERIOR + sanitize_external = TRUE + sensor_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR + +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_syndicatelava + name = "Incinerator Access Console" + airpump_tag = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP + exterior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER + interior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR + sanitize_external = TRUE + sensor_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR + /obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload) . = ..() if(!mapload) diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 39cf149850..063cfa6805 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -1,88 +1,87 @@ -/datum/computer/file/embedded_program - var/list/memory = list() - var/state - var/obj/machinery/embedded_controller/master - -/datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line) - if(master) - master.post_signal(signal, comm_line) - else - qdel(signal) - -/datum/computer/file/embedded_program/proc/receive_user_command(command) - -/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal) - return null - -/datum/computer/file/embedded_program/process() - return 0 - -/obj/machinery/embedded_controller - var/datum/computer/file/embedded_program/program - - name = "embedded controller" - density = FALSE - anchored = TRUE - - var/on = TRUE - -/obj/machinery/embedded_controller/ui_interact(mob/user) - . = ..() - user.set_machine(src) - var/datum/browser/popup = new(user, "computer", name) // Set up the popup browser window - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.set_content(return_text()) - popup.open() - -/obj/machinery/embedded_controller/update_icon() - -/obj/machinery/embedded_controller/proc/return_text() - -/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line) - return 0 - -/obj/machinery/embedded_controller/receive_signal(datum/signal/signal) - if(istype(signal) && program) - program.receive_signal(signal) - -/obj/machinery/embedded_controller/Topic(href, href_list) - if(..()) - return 0 - - if(program) - program.receive_user_command(href_list["command"]) - addtimer(CALLBACK(program, /datum/computer/file/embedded_program.proc/process), 5) - - usr.set_machine(src) - addtimer(CALLBACK(src, .proc/updateDialog), 5) - -/obj/machinery/embedded_controller/process() - if(program) - program.process() - - update_icon() - src.updateDialog() - -/obj/machinery/embedded_controller/radio - var/frequency - var/datum/radio_frequency/radio_connection - -/obj/machinery/embedded_controller/radio/Destroy() - SSradio.remove_object(src,frequency) - return ..() - -/obj/machinery/embedded_controller/radio/Initialize() - . = ..() - set_frequency(frequency) - -/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal) - signal.transmission_method = TRANSMISSION_RADIO - if(radio_connection) - return radio_connection.post_signal(src, signal) - else - signal = null - -/obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency) +/datum/computer/file/embedded_program + var/list/memory = list() + var/state + var/obj/machinery/embedded_controller/master + +/datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line) + if(master) + master.post_signal(signal, comm_line) + else + qdel(signal) + +/datum/computer/file/embedded_program/proc/receive_user_command(command) + +/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal) + return null + +/datum/computer/file/embedded_program/process() + return 0 + +/obj/machinery/embedded_controller + var/datum/computer/file/embedded_program/program + + name = "embedded controller" + density = FALSE + + var/on = TRUE + +/obj/machinery/embedded_controller/ui_interact(mob/user) + . = ..() + user.set_machine(src) + var/datum/browser/popup = new(user, "computer", name) // Set up the popup browser window + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.set_content(return_text()) + popup.open() + +/obj/machinery/embedded_controller/update_icon() + +/obj/machinery/embedded_controller/proc/return_text() + +/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line) + return 0 + +/obj/machinery/embedded_controller/receive_signal(datum/signal/signal) + if(istype(signal) && program) + program.receive_signal(signal) + +/obj/machinery/embedded_controller/Topic(href, href_list) + if(..()) + return 0 + + if(program) + program.receive_user_command(href_list["command"]) + addtimer(CALLBACK(program, /datum/computer/file/embedded_program.proc/process), 5) + + usr.set_machine(src) + addtimer(CALLBACK(src, .proc/updateDialog), 5) + +/obj/machinery/embedded_controller/process() + if(program) + program.process() + + update_icon() + src.updateDialog() + +/obj/machinery/embedded_controller/radio + var/frequency + var/datum/radio_frequency/radio_connection + +/obj/machinery/embedded_controller/radio/Destroy() + SSradio.remove_object(src,frequency) + return ..() + +/obj/machinery/embedded_controller/radio/Initialize() + . = ..() + set_frequency(frequency) + +/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal) + signal.transmission_method = TRANSMISSION_RADIO + if(radio_connection) + return radio_connection.post_signal(src, signal) + else + signal = null + +/obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency) + SSradio.remove_object(src, frequency) + frequency = new_frequency + radio_connection = SSradio.add_object(src, frequency) diff --git a/code/game/machinery/embedded_controller/simple_vent_controller.dm b/code/game/machinery/embedded_controller/simple_vent_controller.dm index 2a5faef0e1..9901d51074 100644 --- a/code/game/machinery/embedded_controller/simple_vent_controller.dm +++ b/code/game/machinery/embedded_controller/simple_vent_controller.dm @@ -15,7 +15,7 @@ post_signal(new /datum/signal(list( "tag" = airpump_tag, "sigtype" = "command", - "stabalize" = 1, + "stabilize" = 1, "power" = 1 ))) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 0bdbd8976a..34a5659f3f 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -16,7 +16,6 @@ desc = "\"Pull this in case of emergency\". Thus, keep pulling it forever." icon = 'icons/obj/monitors.dmi' icon_state = "fire0" - anchored = TRUE max_integrity = 250 integrity_failure = 100 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30) @@ -24,9 +23,14 @@ idle_power_usage = 2 active_power_usage = 6 power_channel = ENVIRON + resistance_flags = FIRE_PROOF + + light_power = 0 + light_range = 7 + light_color = "#ff3232" + var/detecting = 1 var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone - resistance_flags = FIRE_PROOF var/last_alarm = 0 var/area/myarea = null @@ -81,9 +85,13 @@ add_overlay("overlay_fire") /obj/machinery/firealarm/emp_act(severity) + . = ..() + + if (. & EMP_PROTECT_SELF) + return + if(prob(50 / severity)) alarm() - ..() /obj/machinery/firealarm/emag_act(mob/user) if(obj_flags & EMAGGED) @@ -270,35 +278,10 @@ new /obj/item/stack/cable_coil(loc, 3) qdel(src) - -/* - * Party button - */ - -/obj/machinery/firealarm/partyalarm - name = "\improper PARTY BUTTON" - desc = "Cuban Pete is in the house!" - - -/obj/machinery/firealarm/partyalarm/reset() - if (stat & (NOPOWER|BROKEN)) - return - var/area/A = src.loc - A = A.loc - if (!( istype(A, /area) )) - return - A.partyreset() - -/obj/machinery/firealarm/partyalarm/alarm() - if (stat & (NOPOWER|BROKEN)) - return - var/area/A = src.loc - A = A.loc - if (!( istype(A, /area) )) - return - A.partyalert() - -/obj/machinery/firealarm/partyalarm/ui_data(mob/user) - . = ..() - var/area/A = get_area(src) - .["alarm"] = A.party +/obj/machinery/firealarm/proc/update_fire_light(fire) + if(fire == !!light_power) + return // do nothing if we're already active + if(fire) + set_light(l_power = 0.8) + else + set_light(l_power = 0) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 157553da0c..089abdb26b 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -7,7 +7,6 @@ icon_state = "mflash1" max_integrity = 250 integrity_failure = 100 - anchored = TRUE var/obj/item/assembly/flash/handheld/bulb var/id = null var/range = 2 //this is roughly the size of brig cell @@ -119,12 +118,12 @@ /obj/machinery/flasher/emp_act(severity) - if(!(stat & (BROKEN|NOPOWER))) + . = ..() + if(!(stat & (BROKEN|NOPOWER)) && !(. & EMP_PROTECT_SELF)) if(bulb && prob(75/severity)) flash() bulb.burn_out() power_change() - ..() /obj/machinery/flasher/obj_break(damage_flag) if(!(flags_1 & NODECONSTRUCT_1)) @@ -168,13 +167,13 @@ if (!anchored && !isinspace()) to_chat(user, "[src] is now secured.") add_overlay("[base_state]-s") - anchored = TRUE + setAnchored(TRUE) power_change() proximity_monitor.SetRange(range) else to_chat(user, "[src] can now be moved.") cut_overlays() - anchored = FALSE + setAnchored(FALSE) power_change() proximity_monitor.SetRange(0) diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index 628071bd21..c955edbcd0 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -5,7 +5,6 @@ icon_state = "dorm_taken" req_access = list(ACCESS_SECURITY) //REQACCESS TO ACCESS ALL STORED ITEMS density = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 100 active_power_usage = 2500 diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm index 08db7b41e2..47136e8c27 100644 --- a/code/game/machinery/gulag_teleporter.dm +++ b/code/game/machinery/gulag_teleporter.dm @@ -13,7 +13,6 @@ The console is located at computer/gulag_teleporter.dm icon_state = "implantchair" state_open = FALSE density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 200 active_power_usage = 5000 @@ -174,7 +173,7 @@ The console is located at computer/gulag_teleporter.dm /* beacon that receives the teleported prisoner */ /obj/structure/gulag_beacon name = "labor camp bluespace beacon" - desc = "A recieving beacon for bluespace teleportations." + desc = "A receiving beacon for bluespace teleportations." icon = 'icons/turf/floors.dmi' icon_state = "light_on-w" resistance_flags = INDESTRUCTIBLE diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 61ee4eb178..0999e14f53 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -34,7 +34,6 @@ Possible to do for anyone motivated enough: layer = LOW_OBJ_LAYER plane = FLOOR_PLANE flags_1 = HEAR_1 - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 @@ -394,7 +393,7 @@ Possible to do for anyone motivated enough: Hologram.copy_known_languages_from(user,replace = TRUE) Hologram.mouse_opacity = MOUSE_OPACITY_TRANSPARENT//So you can't click on it. Hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. - Hologram.anchored = TRUE//So space wind cannot drag it. + Hologram.setAnchored(TRUE)//So space wind cannot drag it. Hologram.name = "[user.name] (Hologram)"//If someone decides to right click. Hologram.set_light(2) //hologram lighting move_hologram() @@ -480,6 +479,8 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ continue if(another.validate_location(T)) unset_holo(holo_owner) + if(another.masters && another.masters[holo_owner]) + another.clear_holo(holo_owner) another.set_holo(holo_owner, h) return TRUE return FALSE @@ -550,7 +551,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ holder.selected_default_language = record.language Hologram.mouse_opacity = MOUSE_OPACITY_TRANSPARENT//So you can't click on it. Hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. - Hologram.anchored = TRUE//So space wind cannot drag it. + Hologram.setAnchored(TRUE)//So space wind cannot drag it. Hologram.name = "[record.caller_name] (Hologram)"//If someone decides to right click. Hologram.set_light(2) //hologram lighting visible_message("A holographic image of [record.caller_name] flickers to life before your eyes!") @@ -667,7 +668,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/effect/overlay/holo_pad_hologram/Destroy() Impersonation = null - if(HC) + if(!QDELETED(HC)) HC.Disconnect(HC.calling_holopad) return ..() diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index f6182fdae0..acc0505256 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -4,15 +4,23 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "igniter0" plane = FLOOR_PLANE - var/id = null - var/on = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 4 max_integrity = 300 armor = list("melee" = 50, "bullet" = 30, "laser" = 70, "energy" = 50, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) resistance_flags = FIRE_PROOF + var/id = null + var/on = FALSE + +/obj/machinery/igniter/incinerator_toxmix + id = INCINERATOR_TOXMIX_IGNITER + +/obj/machinery/igniter/incinerator_atmos + id = INCINERATOR_ATMOS_IGNITER + +/obj/machinery/igniter/incinerator_syndicatelava + id = INCINERATOR_SYNDICATELAVA_IGNITER /obj/machinery/igniter/on on = TRUE @@ -32,7 +40,7 @@ if (src.on && !(stat & NOPOWER) ) var/turf/location = src.loc if (isturf(location)) - location.hotspot_expose(1000,500,1) + location.hotspot_expose(700,10,1) return 1 /obj/machinery/igniter/Initialize() @@ -52,13 +60,15 @@ desc = "A wall-mounted ignition device." icon = 'icons/obj/stationobjs.dmi' icon_state = "migniter" + resistance_flags = FIRE_PROOF var/id = null var/disable = 0 var/last_spark = 0 var/base_state = "migniter" var/datum/effect_system/spark_spread/spark_system - anchored = TRUE - resistance_flags = FIRE_PROOF + +/obj/machinery/sparker/toxmix + id = INCINERATOR_TOXMIX_IGNITER /obj/machinery/sparker/Initialize() . = ..() @@ -116,10 +126,12 @@ use_power(1000) var/turf/location = src.loc if (isturf(location)) - location.hotspot_expose(1000,500,1) + location.hotspot_expose(1000,100,1) return 1 /obj/machinery/sparker/emp_act(severity) + . = ..() + if (. & EMP_PROTECT_SELF) + return if(!(stat & (BROKEN|NOPOWER))) ignite() - ..() diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 409e64ca7e..03c60be91c 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -3,6 +3,7 @@ /obj/machinery/iv_drip name = "\improper IV drip" + desc = "An IV drip with an advanced infusion pump that can both drain blood into and inject liquids from attached containers. Blood packs are processed at an accelerated rate." icon = 'icons/obj/iv_drip.dmi' icon_state = "iv_drip" anchored = FALSE @@ -166,7 +167,7 @@ else toggle_mode() -/obj/machinery/iv_drip/verb/eject_beaker(mob/user) +/obj/machinery/iv_drip/verb/eject_beaker() set category = "Object" set name = "Remove IV Container" set src in view(1) diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index 95bf10bc6c..0c1b67a63c 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -3,12 +3,11 @@ desc = "A bluespace pad able to thrust matter through bluespace, teleporting it to or from nearby locations." icon = 'icons/obj/telescience.dmi' icon_state = "lpad-idle" - var/icon_teleport = "lpad-beam" - anchored = TRUE use_power = TRUE idle_power_usage = 200 active_power_usage = 2500 circuit = /obj/item/circuitboard/machine/launchpad + var/icon_teleport = "lpad-beam" var/stationary = TRUE //to prevent briefcase pad deconstruction and such var/display_name = "Launchpad" var/teleport_speed = 35 @@ -53,7 +52,7 @@ if(teleporting) to_chat(user, "ERROR: Launchpad busy.") return - + var/turf/dest = get_turf(src) if(dest && is_centcom_level(dest.z)) @@ -89,10 +88,12 @@ dest = target playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, 1) + var/first = TRUE for(var/atom/movable/ROI in source) if(ROI == src) continue // if it's anchored, don't teleport + var/on_chair = "" if(ROI.anchored) if(isliving(ROI)) var/mob/living/L = ROI @@ -101,35 +102,36 @@ if(L.buckled.anchored) continue - log_msg += "[key_name(L)] (on a chair), " + on_chair = " (on a chair)" else continue else if(!isobserver(ROI)) continue + if(!first) + log_msg += ", " if(ismob(ROI)) var/mob/T = ROI - log_msg += "[key_name(T)], " + log_msg += "[key_name(T)][on_chair]" else log_msg += "[ROI.name]" if (istype(ROI, /obj/structure/closet)) - var/obj/structure/closet/C = ROI log_msg += " (" - for(var/atom/movable/Q as mob|obj in C) + var/first_inner = TRUE + for(var/atom/movable/Q as mob|obj in ROI) + if(!first_inner) + log_msg += ", " + first_inner = FALSE if(ismob(Q)) - log_msg += "[key_name(Q)], " + log_msg += "[key_name(Q)]" else - log_msg += "[Q.name], " - if (dd_hassuffix(log_msg, "(")) - log_msg += "empty)" - else - log_msg = dd_limittext(log_msg, length(log_msg) - 2) - log_msg += ")" - log_msg += ", " - do_teleport(ROI, dest) + log_msg += "[Q.name]" + if(first_inner) + log_msg += "empty" + log_msg += ")" + do_teleport(ROI, dest, no_effects = !first) + first = FALSE - if (dd_hassuffix(log_msg, ", ")) - log_msg = dd_limittext(log_msg, length(log_msg) - 2) - else + if (first) log_msg += "nothing" log_msg += " [sending ? "to" : "from"] [target_x], [target_y], [z] ([A ? A.name : "null area"])" investigate_log(log_msg.Join(), INVESTIGATE_TELESCI) diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index c93f67b7d7..cbb9b4f253 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -5,7 +5,6 @@ name = "light switch" icon = 'icons/obj/power.dmi' icon_state = "light1" - anchored = TRUE desc = "Make dark." var/on = TRUE var/area/area = null @@ -61,6 +60,8 @@ updateicon() /obj/machinery/light_switch/emp_act(severity) + . = ..() + if (. & EMP_PROTECT_SELF) + return if(!(stat & (BROKEN|NOPOWER))) power_change() - ..() diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 8347e5f548..8a0658fd0f 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -11,7 +11,6 @@ icon_state = "limbgrower_idleoff" density = TRUE container_type = OPENCONTAINER - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 100 diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 03455d5dd5..094db5a676 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -11,7 +11,6 @@ desc = "A device that uses station power to create points of magnetic energy." level = 1 // underfloor layer = LOW_OBJ_LAYER - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 50 @@ -195,7 +194,6 @@ icon = 'icons/obj/airlock_machines.dmi' // uses an airlock machine icon, THINK GREEN HELP THE ENVIRONMENT - RECYCLING! icon_state = "airlock_control_standby" density = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 45 var/frequency = FREQ_MAGNETS diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 9acd4730d8..7ebed0ab0c 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -3,7 +3,6 @@ desc = "The finest in spring-loaded piston toy technology, now on a space station near you." icon = 'icons/obj/stationobjs.dmi' icon_state = "mass_driver" - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 50 @@ -31,7 +30,9 @@ /obj/machinery/mass_driver/emp_act(severity) + . = ..() + if (. & EMP_PROTECT_SELF) + return if(stat & (BROKEN|NOPOWER)) return drive() - ..(severity) \ No newline at end of file diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 1426625c92..d64ae75e2c 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -9,7 +9,6 @@ desc = "A radio beacon used for bot navigation." level = 1 // underfloor layer = LOW_OBJ_LAYER - anchored = TRUE max_integrity = 500 armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 70, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) @@ -38,10 +37,18 @@ GLOB.deliverybeacontags += location /obj/machinery/navbeacon/Destroy() - GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one. + if (GLOB.navbeacons["[z]"]) + GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one. GLOB.deliverybeacons -= src return ..() +/obj/machinery/navbeacon/onTransitZ(old_z, new_z) + if (GLOB.navbeacons["[old_z]"]) + GLOB.navbeacons["[old_z]"] -= src + if (GLOB.navbeacons["[new_z]"]) + GLOB.navbeacons["[new_z]"] += src + ..() + // set the transponder codes assoc list from codes_txt /obj/machinery/navbeacon/proc/set_codes() if(!codes_txt) @@ -204,4 +211,4 @@ Transponder Codes:" usr << browse(output,"window=airreport;size=1000x500") @@ -153,7 +153,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( for(var/t in GLOB.active_turfs_startlist) var/turf/T = t - dat += "[ADMIN_COORDJMP(T)]\n" + dat += "[ADMIN_VERBOSEJMP(T)]\n" dat += "
    " usr << browse(dat, "window=at_list") diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 4869319cfa..405595d1de 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -629,8 +629,9 @@ GLOBAL_PROTECT(VVpixelmovement) if (O.vv_edit_var(variable, var_new) == FALSE) to_chat(src, "Your edit was rejected by the object.") return + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_VAR_EDIT, args) log_world("### VarEdit by [key_name(src)]: [O.type] [variable]=[var_value] => [var_new]") - log_admin("[key_name(src)] modified [original_name]'s [variable] to from [html_encode("[var_value]")] to [html_encode("[var_new]")]") + log_admin("[key_name(src)] modified [original_name]'s [variable] from [html_encode("[var_value]")] to [html_encode("[var_new]")]") var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] from [var_value] to [var_new]" message_admins(msg) admin_ticket_log(O, msg) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index fd9de5308b..190ddd7e63 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -57,7 +57,7 @@ var/mob/living/carbon/human/H = null for(var/mob/living/carbon/human/applicant in GLOB.player_list) - if(isReadytoRumble(applicant, ROLE_TRAITOR, FALSE)) + if(isReadytoRumble(applicant, ROLE_TRAITOR)) if(temp.age_check(applicant.client)) if(!(applicant.job in temp.restricted_jobs)) candidates += applicant @@ -76,7 +76,7 @@ return 0 -/datum/admins/proc/makeChanglings() +/datum/admins/proc/makeChangelings() var/datum/game_mode/changeling/temp = new if(CONFIG_GET(flag/protect_roles_from_antagonist)) @@ -95,11 +95,11 @@ candidates += applicant if(candidates.len) - var/numChanglings = min(candidates.len, 3) + var/numChangelings = min(candidates.len, 3) - for(var/i = 0, i[ADMIN_FULLMONTY(src)] [ADMIN_SC(src)]:
    [msg]" + msg = "[icon2html(cross, GLOB.admins)][prayer_type][deity ? " (to [deity])" : ""]: [ADMIN_FULLMONTY(src)] [ADMIN_SC(src)]: [msg]" for(var/client/C in GLOB.admins) if(C.prefs.chat_toggles & CHAT_PRAYER) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index be0b9d04bb..0184c4b34f 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -14,7 +14,7 @@ M.regenerate_icons() log_admin("[key_name(usr)] made [key_name(M)] drop everything!") - var/msg = "[key_name_admin(usr)] made [key_name_admin(M)] drop everything!" + var/msg = "[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] drop everything!" message_admins(msg) admin_ticket_log(M, msg) SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Everything") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -28,11 +28,11 @@ if(!check_rights(R_ADMIN)) return - message_admins("[key_name_admin(src)] has started answering [key_name(M.key, 0, 0)]'s prayer.") + message_admins("[key_name_admin(src)] has started answering [ADMIN_LOOKUPFLW(M)]'s prayer.") var/msg = input("Message:", text("Subtle PM to [M.key]")) as text|null if (!msg) - message_admins("[key_name_admin(src)] decided not to answer [key_name(M.key, 0, 0)]'s prayer") + message_admins("[key_name_admin(src)] decided not to answer [ADMIN_LOOKUPFLW(M)]'s prayer") return if(usr) if (usr.client) @@ -45,6 +45,42 @@ admin_ticket_log(M, msg) SSblackbox.record_feedback("tally", "admin_verb", 1, "Subtle Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/proc/cmd_admin_headset_message(mob/M in GLOB.mob_list) + set category = "Special Verbs" + set name = "Headset Message" + + admin_headset_message(M) + +/client/proc/admin_headset_message(mob/M in GLOB.mob_list, sender = null) + var/mob/living/carbon/human/H = M + + if(!check_rights(R_ADMIN)) + return + + if(!istype(H)) + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + return + if(!istype(H.ears, /obj/item/radio/headset)) + to_chat(usr, "The person you are trying to contact is not wearing a headset.") + return + + if (!sender) + sender = input("Who is the message from?", "Sender") as null|anything in list("CentCom","Syndicate") + if(!sender) + return + + message_admins("[key_name_admin(src)] has started answering [key_name_admin(H)]'s [sender] request.") + var/input = input("Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from [sender]", "") as text|null + if(!input) + message_admins("[key_name_admin(src)] decided not to answer [key_name_admin(H)]'s [sender] request.") + return + + 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, "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from [sender == "Syndicate" ? "your benefactor" : "Central Command"]. Message as follows[sender == "Syndicate" ? ", agent." : ":"] [input]. Message ends.\"") + + SSblackbox.record_feedback("tally", "admin_verb", 1, "Headset Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /client/proc/cmd_admin_mod_antag_rep(client/C in GLOB.clients, var/operation) set category = "Special Verbs" set name = "Modify Antagonist Reputation" @@ -149,8 +185,8 @@ for(var/mob/M in view(range,A)) to_chat(M, msg) - log_admin("LocalNarrate: [key_name(usr)] at [get_area(A)][COORD(A)]: [msg]") - message_admins(" LocalNarrate: [key_name_admin(usr)] at [get_area(A)][ADMIN_JMP(A)]: [msg]
    ") + log_admin("LocalNarrate: [key_name(usr)] at [AREACOORD(A)]: [msg]") + message_admins(" LocalNarrate: [key_name_admin(usr)] at [ADMIN_VERBOSEJMP(A)]: [msg]
    ") SSblackbox.record_feedback("tally", "admin_verb", 1, "Local Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_godmode(mob/M in GLOB.mob_list) @@ -163,7 +199,7 @@ to_chat(usr, "Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]") log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]") - var/msg = "[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]" + var/msg = "[key_name_admin(usr)] has toggled [ADMIN_LOOKUPFLW(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]" message_admins(msg) admin_ticket_log(M, msg) SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Godmode", "[M.status_flags & GODMODE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -504,7 +540,7 @@ Traitors and the like can also be revived with the previous role mostly intact. M.revive(full_heal = 1, admin_revive = 1) log_admin("[key_name(usr)] healed / revived [key_name(M)]") - var/msg = "Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!" + var/msg = "Admin [key_name_admin(usr)] healed / revived [ADMIN_LOOKUPFLW(M)]!" message_admins(msg) admin_ticket_log(M, msg) SSblackbox.record_feedback("tally", "admin_verb", 1, "Rejuvinate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -609,8 +645,8 @@ Traitors and the like can also be revived with the previous role mostly intact. return explosion(O, devastation, heavy, light, flash, null, null,flames) - log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])") - message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])") + log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at [AREACOORD(O)]") + message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at [AREACOORD(O)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Explosion") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return else @@ -633,8 +669,8 @@ Traitors and the like can also be revived with the previous role mostly intact. if (heavy || light) empulse(O, heavy, light) - log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") - message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") + log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at [AREACOORD(O)]") + message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at [AREACOORD(O)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -820,8 +856,8 @@ Traitors and the like can also be revived with the previous role mostly intact. N.set_safety() N.set_active() - log_admin("[key_name(usr)] [N.timing ? "activated" : "deactivated"] a nuke at ([N.x],[N.y],[N.z]).") - message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_COORDJMP(N)].") + log_admin("[key_name(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [AREACOORD(N)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_VERBOSEJMP(N)].") SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Nuke", "[N.timing]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits @@ -1277,7 +1313,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(!check_rights(R_ADMIN)) return - var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD) + var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD, ADMIN_PUNISHMENT_SUPPLYPOD) var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list @@ -1305,6 +1341,24 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/turf/startT = spaceDebrisStartLoc(startside, T.z) var/turf/endT = spaceDebrisFinishLoc(startside, T.z) new /obj/effect/immovablerod(startT, endT,target) + if(ADMIN_PUNISHMENT_SUPPLYPOD) + ///////load the supply pod up with something! + var/target_path = input(usr,"Enter typepath of an atom you'd like to send with the pod (type \"empty\" to send an empty pod):" ,"Typepath","/obj/item/reagent_containers/food/snacks/grown/harebell") as null|text + if (isnull(target_path)) + return + if (target_path == "empty")//if you type "empty", spawn an empty pod + new /obj/effect/DPtarget(get_turf(target), null, POD_CENTCOM) + return + var/delivery = text2path(target_path) + if(!ispath(delivery)) + delivery = pick_closest_path(target_path) + if(!delivery) + alert("ERROR: Incorrect / improper path given.") + return + //send the pod + if(iscarbon(target)) + target.Stun(10)//takes 0.53 seconds for CentCom pod to land + new /obj/effect/DPtarget(get_turf(target), delivery, POD_CENTCOM) var/msg = "[key_name_admin(usr)] punished [key_name_admin(target)] with [punishment]." message_admins(msg) diff --git a/code/modules/admin/verbs/spawnobjasmob.dm b/code/modules/admin/verbs/spawnobjasmob.dm index f51f776d6f..621e6c3618 100644 --- a/code/modules/admin/verbs/spawnobjasmob.dm +++ b/code/modules/admin/verbs/spawnobjasmob.dm @@ -66,5 +66,5 @@ basemob.ckey = mainsettings["ckey"]["value"] - log_admin("[key_name(usr)] spawned a sentient object-mob [basemob] from [chosen_obj] at ([usr.x],[usr.y],[usr.z])") + log_admin("[key_name(usr)] spawned a sentient object-mob [basemob] from [chosen_obj] at [AREACOORD(usr)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Spawn object-mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index 1e7d3303d6..50281d54b4 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -75,7 +75,7 @@ GLOBAL_LIST_EMPTY(antagonists) /datum/antagonist/proc/is_banned(mob/M) if(!M) return FALSE - . = (jobban_isbanned(M, ROLE_SYNDICATE) || (job_rank && jobban_isbanned(M,job_rank))) + . = (jobban_isbanned(M, ROLE_SYNDICATE) || QDELETED(M) || (job_rank && (jobban_isbanned(M,job_rank) || QDELETED(M)))) /datum/antagonist/proc/replace_banned_player() set waitfor = FALSE @@ -110,12 +110,12 @@ GLOBAL_LIST_EMPTY(antagonists) /datum/antagonist/proc/give_antag_moodies() if(!antag_moodlet) return - owner.current.SendSignal(COMSIG_ADD_MOOD_EVENT, "antag_moodlet", antag_moodlet) + SEND_SIGNAL(owner.current, COMSIG_ADD_MOOD_EVENT, "antag_moodlet", antag_moodlet) /datum/antagonist/proc/clear_antag_moodies() if(!antag_moodlet) return - owner.current.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "antag_moodlet") + SEND_SIGNAL(owner.current, COMSIG_CLEAR_MOOD_EVENT, "antag_moodlet") //Returns the team antagonist belongs to if any. /datum/antagonist/proc/get_team() diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm index 0a000c4bf0..ca87b94d5b 100644 --- a/code/modules/antagonists/_common/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -58,6 +58,8 @@ return var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src) if(LAZYLEN(candidates)) + if(QDELETED(src)) + return if(used) to_chat(H, "You already used this contract!") return @@ -121,7 +123,7 @@ to_chat(user, "You activate [src] and wait for confirmation.") var/list/nuke_candidates = pollGhostCandidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", ROLE_OPERATIVE, null, ROLE_OPERATIVE, 150, POLL_IGNORE_SYNDICATE) if(LAZYLEN(nuke_candidates)) - if(!(check_usability(user))) + if(QDELETED(src) || !check_usability(user)) return used = TRUE var/mob/dead/observer/G = pick(nuke_candidates) @@ -235,7 +237,7 @@ return var/list/candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, src) if(LAZYLEN(candidates)) - if(used) + if(used || QDELETED(src)) return used = TRUE var/mob/dead/observer/C = pick(candidates) diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 28cc4d9698..f19521e821 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -30,9 +30,9 @@ var/combat_armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 50, "bio" = 50, "rad" = 50, "fire" = 90, "acid" = 90) /obj/item/clothing/suit/armor/abductor/vest/proc/toggle_nodrop() - flags_1 ^= NODROP_1 + item_flags ^= NODROP if(ismob(loc)) - to_chat(loc, "Your vest is now [flags_1 & NODROP_1 ? "locked" : "unlocked"].") + to_chat(loc, "Your vest is now [item_flags & NODROP ? "locked" : "unlocked"].") /obj/item/clothing/suit/armor/abductor/vest/proc/flip_mode() switch(mode) @@ -359,7 +359,7 @@ to_chat(L, "You hear a voice in your head saying: [message]") to_chat(user, "You send the message to your target.") - log_talk(user,"[key_name(user)] sent an abductor mind message to [L]/[L.ckey]: '[message]'", LOGSAY) + log_talk(user,"[key_name(user)] sent an abductor mind message to [key_name(L)]: '[message]'", LOGSAY) /obj/item/firing_pin/abductor @@ -589,9 +589,10 @@ Congratulations! You are now trained for invasive xenobiology research!"} righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' breakouttime = 450 trashtype = /obj/item/restraints/handcuffs/energy/used + flags_1 = NONE /obj/item/restraints/handcuffs/energy/used - flags_1 = DROPDEL_1 + item_flags = DROPDEL /obj/item/restraints/handcuffs/energy/used/dropped(mob/user) user.visible_message("[user]'s [name] breaks in a discharge of energy!", \ diff --git a/code/modules/antagonists/abductor/equipment/abduction_outfits.dm b/code/modules/antagonists/abductor/equipment/abduction_outfits.dm index 8b8851ec18..e2b881d147 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_outfits.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_outfits.dm @@ -17,7 +17,7 @@ var/obj/item/clothing/suit/armor/abductor/vest/V = locate() in H if(V) console.AddVest(V) - V.flags_1 |= NODROP_1 + V.item_flags |= NODROP var/obj/item/storage/backpack/B = locate() in H if(B) diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm index 1e53f778d6..969590402c 100644 --- a/code/modules/antagonists/abductor/equipment/gland.dm +++ b/code/modules/antagonists/abductor/equipment/gland.dm @@ -285,7 +285,7 @@ addtimer(CALLBACK(src, .proc/zap), rand(30, 100)) /obj/item/organ/heart/gland/electric/proc/zap() - tesla_zap(owner, 4, 8000, FALSE, TRUE) + tesla_zap(owner, 4, 8000, TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE | TESLA_MOB_STUN) playsound(get_turf(owner), 'sound/magic/lightningshock.ogg', 50, 1) /obj/item/organ/heart/gland/chem diff --git a/code/modules/antagonists/abductor/machinery/console.dm b/code/modules/antagonists/abductor/machinery/console.dm index e629a0b47d..a14b667069 100644 --- a/code/modules/antagonists/abductor/machinery/console.dm +++ b/code/modules/antagonists/abductor/machinery/console.dm @@ -17,7 +17,6 @@ icon = 'icons/obj/abductor.dmi' icon_state = "console" density = TRUE - anchored = TRUE var/obj/item/abductor/gizmo/gizmo var/obj/item/clothing/suit/armor/abductor/vest/vest var/obj/machinery/abductor/experiment/experiment @@ -76,7 +75,7 @@ dat+="
    " dat += "Select Agent Vest Disguise
    " - dat += "[vest.flags_1 & NODROP_1 ? "Unlock" : "Lock"] Vest
    " + dat += "[vest.item_flags & NODROP ? "Unlock" : "Lock"] Vest
    " else dat += "NO AGENT VEST DETECTED" var/datum/browser/popup = new(user, "computer", "Abductor Console", 400, 500) diff --git a/code/modules/antagonists/abductor/machinery/dispenser.dm b/code/modules/antagonists/abductor/machinery/dispenser.dm index c837adf1f0..17fa311c8f 100644 --- a/code/modules/antagonists/abductor/machinery/dispenser.dm +++ b/code/modules/antagonists/abductor/machinery/dispenser.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/abductor.dmi' icon_state = "dispenser" density = TRUE - anchored = TRUE var/list/gland_types var/list/gland_colors var/list/amounts diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm index 527913e6aa..5614fc9105 100644 --- a/code/modules/antagonists/abductor/machinery/experiment.dm +++ b/code/modules/antagonists/abductor/machinery/experiment.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/abductor.dmi' icon_state = "experiment-open" density = FALSE - anchored = TRUE state_open = TRUE var/points = 0 var/credits = 0 diff --git a/code/modules/antagonists/abductor/machinery/pad.dm b/code/modules/antagonists/abductor/machinery/pad.dm index dff2fe812e..1cb95fbf05 100644 --- a/code/modules/antagonists/abductor/machinery/pad.dm +++ b/code/modules/antagonists/abductor/machinery/pad.dm @@ -3,7 +3,6 @@ desc = "Use this to transport to and from the humans' habitat." icon = 'icons/obj/abductor.dmi' icon_state = "alien-pad-idle" - anchored = TRUE var/turf/teleport_target /obj/machinery/abductor/pad/proc/Warp(mob/living/target) diff --git a/code/modules/antagonists/blob/blob/blobs/core.dm b/code/modules/antagonists/blob/blob/blobs/core.dm index 1140f540c4..e048aa7665 100644 --- a/code/modules/antagonists/blob/blob/blobs/core.dm +++ b/code/modules/antagonists/blob/blob/blobs/core.dm @@ -78,3 +78,11 @@ B.change_to(/obj/structure/blob/shield/core, overmind) ..() +/obj/structure/blob/core/ComponentInitialize() + . = ..() + AddComponent(/datum/component/stationloving, FALSE, TRUE) + +/obj/structure/blob/core/onTransitZ(old_z, new_z) + if(overmind && is_station_level(new_z)) + overmind.forceMove(get_turf(src)) + return ..() diff --git a/code/modules/antagonists/blob/blob/overmind.dm b/code/modules/antagonists/blob/blob/overmind.dm index 9d31852d28..3483c3a557 100644 --- a/code/modules/antagonists/blob/blob/overmind.dm +++ b/code/modules/antagonists/blob/blob/overmind.dm @@ -123,7 +123,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) else L.fully_heal() - for(var/V in GLOB.sortedAreas) + for(var/V in GLOB.the_station_areas) var/area/A = V if(!A.blob_allowed) continue diff --git a/code/modules/antagonists/blob/blob/theblob.dm b/code/modules/antagonists/blob/blob/theblob.dm index 6fda7df130..dc7aa821d6 100644 --- a/code/modules/antagonists/blob/blob/theblob.dm +++ b/code/modules/antagonists/blob/blob/theblob.dm @@ -204,6 +204,9 @@ return null /obj/structure/blob/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return if(severity > 0) if(overmind) overmind.blob_reagent_datum.emp_reaction(src, severity) diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index a42ae6ef4f..ab6dd3607d 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -451,7 +451,7 @@ /datum/antagonist/changeling/proc/update_changeling_icons_added() var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_CHANGELING] hud.join_hud(owner.current) - set_antag_hud(owner.current, "changling") + set_antag_hud(owner.current, "changeling") /datum/antagonist/changeling/proc/update_changeling_icons_removed() var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_CHANGELING] diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm index 199bc6636b..a8bec72771 100644 --- a/code/modules/antagonists/changeling/powers/absorb.dm +++ b/code/modules/antagonists/changeling/powers/absorb.dm @@ -112,10 +112,3 @@ target.death(0) target.Drain() return TRUE - - - -//Absorbs the target DNA. -//datum/changeling/proc/absorb_dna(mob/living/carbon/T, mob/user) - -//datum/changeling/proc/store_dna(datum/dna/new_dna, mob/user) diff --git a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm index f48464700f..5ec5440a2b 100644 --- a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm +++ b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm @@ -1,4 +1,4 @@ -//Augmented Eyesight: Gives you x-ray vision or protection from flashes. Also, high DNA cost because of how powerful it is. +//Augmented Eyesight: Gives you X-ray vision or protection from flashes. Also, high DNA cost because of how powerful it is. //Possible todo: make a custom message for directing a penlight/flashlight at the eyes - not sure what would display though. /obj/effect/proc_holder/changeling/augmented_eyesight @@ -41,7 +41,7 @@ return 1 -/obj/effect/proc_holder/changeling/augmented_eyesight/on_refund(mob/user) //Get rid of x-ray vision and flash protection when the user refunds this ability +/obj/effect/proc_holder/changeling/augmented_eyesight/on_refund(mob/user) //Get rid of X-ray vision and flash protection when the user refunds this ability var/obj/item/organ/eyes/E = user.getorganslot(ORGAN_SLOT_EYES) if(E) if (active) diff --git a/code/modules/antagonists/changeling/powers/digitalcamo.dm b/code/modules/antagonists/changeling/powers/digitalcamo.dm index afb4e0bef7..68a1fa4add 100644 --- a/code/modules/antagonists/changeling/powers/digitalcamo.dm +++ b/code/modules/antagonists/changeling/powers/digitalcamo.dm @@ -1,6 +1,6 @@ /obj/effect/proc_holder/changeling/digitalcamo name = "Digital Camouflage" - desc = "By evolving the ability to distort our form and proprotions, we defeat common altgorithms used to detect lifeforms on cameras." + desc = "By evolving the ability to distort our form and proportions, we defeat common algorithms used to detect lifeforms on cameras." helptext = "We cannot be tracked by camera or seen by AI units while using this skill. However, humans looking at us will find us... uncanny." dna_cost = 1 diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index dbc8446fca..08fe6bd0ce 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -29,7 +29,7 @@ /obj/effect/proc_holder/changeling/weapon/proc/check_weapon(mob/user, obj/item/hand_item) if(istype(hand_item, weapon_type)) - user.temporarilyRemoveItemFromInventory(hand_item, TRUE) //DROPDEL_1 will delete the item + user.temporarilyRemoveItemFromInventory(hand_item, TRUE) //DROPDEL will delete the item if(!silent) playsound(user, 'sound/effects/blobattack.ogg', 30, 1) user.visible_message("With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "We search for the scent of any nearby changelings.") + changeling.chem_recharge_slowdown += 0.5 + user.apply_status_effect(/datum/status_effect/agent_pinpointer/changeling) + else + to_chat(user, "We stop searching for now.") + changeling.chem_recharge_slowdown -= 0.5 + user.remove_status_effect(/datum/status_effect/agent_pinpointer/changeling) + + receptors_active = !receptors_active + +//Modified IA pinpointer - Points to the NEAREST changeling, but will only get you within a few tiles of the target. +//You'll still have to rely on intuition and observation to make the identification. Lings can 'hide' in public places. +/datum/status_effect/agent_pinpointer/changeling + alert_type = /obj/screen/alert/status_effect/agent_pinpointer/changeling + minimum_range = CHANGELING_PHEROMONE_MIN_DISTANCE + tick_interval = CHANGELING_PHEROMONE_PING_TIME + range_fuzz_factor = 0 + +/datum/status_effect/agent_pinpointer/changeling/scan_for_target() + var/turf/my_loc = get_turf(owner) + + var/list/mob/living/carbon/changelings = list() + + for(var/mob/living/carbon/C in GLOB.alive_mob_list) + if(C != owner && C.mind) + var/datum/antagonist/changeling/antag_datum = C.mind.has_antag_datum(/datum/antagonist/changeling) + if(istype(antag_datum)) + var/their_loc = get_turf(C) + var/distance = get_dist_euclidian(my_loc, their_loc) + if (distance < CHANGELING_PHEROMONE_MAX_DISTANCE) + changelings[C] = (CHANGELING_PHEROMONE_MAX_DISTANCE ** 2) - (distance ** 2) + + if(changelings.len) + scan_target = pickweight(changelings) //Point at a 'random' changeling, biasing heavily towards closer ones. + else + scan_target = null + + +/obj/screen/alert/status_effect/agent_pinpointer/changeling + name = "Pheromone Scent" + desc = "The nose always knows." \ No newline at end of file diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index 1d0a4cf143..a801c87ac2 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -134,7 +134,7 @@ return 1 /obj/effect/proc_holder/changeling/sting/false_armblade/sting_action(mob/user, mob/target) - add_logs(user, target, "stung", object="falso armblade sting") + add_logs(user, target, "stung", object="false armblade sting") var/obj/item/held = target.get_active_held_item() if(held && !target.dropItemToGround(held)) diff --git a/code/modules/antagonists/changeling/powers/transform.dm b/code/modules/antagonists/changeling/powers/transform.dm index 2929b5743e..1e2b22cdae 100644 --- a/code/modules/antagonists/changeling/powers/transform.dm +++ b/code/modules/antagonists/changeling/powers/transform.dm @@ -8,7 +8,7 @@ /obj/item/clothing/glasses/changeling name = "flesh" - flags_1 = NODROP_1 + item_flags = NODROP //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/clothing/glasses/changeling/attack_hand(mob/user) @@ -20,7 +20,7 @@ /obj/item/clothing/under/changeling name = "flesh" - flags_1 = NODROP_1 + item_flags = NODROP //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/clothing/under/changeling/attack_hand(mob/user) @@ -32,7 +32,7 @@ /obj/item/clothing/suit/changeling name = "flesh" - flags_1 = NODROP_1 + item_flags = NODROP allowed = list(/obj/item/changeling) //ATTACK HAND IGNORING PARENT RETURN VALUE @@ -45,7 +45,7 @@ /obj/item/clothing/head/changeling name = "flesh" - flags_1 = NODROP_1 + item_flags = NODROP //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/clothing/head/changeling/attack_hand(mob/user) @@ -57,7 +57,7 @@ /obj/item/clothing/shoes/changeling name = "flesh" - flags_1 = NODROP_1 + item_flags = NODROP //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/clothing/shoes/changeling/attack_hand(mob/user) @@ -69,7 +69,7 @@ /obj/item/clothing/gloves/changeling name = "flesh" - flags_1 = NODROP_1 + item_flags = NODROP //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/clothing/gloves/changeling/attack_hand(mob/user) @@ -81,7 +81,7 @@ /obj/item/clothing/mask/changeling name = "flesh" - flags_1 = NODROP_1 + item_flags = NODROP //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/clothing/mask/changeling/attack_hand(mob/user) @@ -93,7 +93,7 @@ /obj/item/changeling name = "flesh" - flags_1 = NODROP_1 + item_flags = NODROP slot_flags = ALL allowed = list(/obj/item/changeling) diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm index f3de8d04a8..34a986aa97 100644 --- a/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm +++ b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm @@ -44,6 +44,7 @@ icon = 'icons/turf/floors.dmi' icon_state = "clockwork_floor" layer = TURF_LAYER + plane = FLOOR_PLANE /obj/effect/clockwork/overlay/floor/bloodcult //this is used by BLOOD CULT, it shouldn't use such a path... icon_state = "cult" \ No newline at end of file diff --git a/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm index b32345fa69..bd986bac25 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm @@ -254,8 +254,8 @@ var/list/repair_values = list() if(!fabricator.fabricator_repair_checks(repair_values, src, user)) return - user.visible_message("[user]'s [fabricator.name] starts coverin[src == user ? "g [user.p_them()]" : "g [src]"] in glowing orange energy...", \ - "You start repairin[src == user ? "g yourself" : "g [src]"]...") + user.visible_message("[user]'s [fabricator.name] starts covering [src == user ? "[user.p_them()]" : "[src]"] in glowing orange energy...", \ + "You start repairing [src == user ? "yourself" : "[src]"]...") fabricator.repairing = src while(fabricator && user && src) if(!do_after(user, repair_values["healing_for_cycle"] * fabricator.speed_multiplier, target = src, \ @@ -283,7 +283,7 @@ if(health == maxHealth) //if we're at maximum health, replace the turf under us return FALSE else if(fabricator_heal(user, fabricator) && user) - user.visible_message("[user]'s [fabricator.name] stops coverin[src == user ? "g [user.p_them()]" : "g [src]"] with glowing orange energy.", \ + user.visible_message("[user]'s [fabricator.name] stops covering [src == user ? "[user.p_them()]" : "[src]"] with glowing orange energy.", \ "You finish repairin[src == user ? "g yourself. You are":"g [src]. [p_theyre(TRUE)]"] now at [abs(HEALTH_THRESHOLD_DEAD - health)]/[abs(HEALTH_THRESHOLD_DEAD - maxHealth)] health.") //Same with clockwork mobs. @@ -292,7 +292,7 @@ if(health == maxHealth) //if we're at maximum health, replace the turf under us return FALSE else if(fabricator_heal(user, fabricator) && user) - user.visible_message("[user]'s [fabricator.name] stops coverin[src == user ? "g [user.p_them()]" : "g [src]"] with glowing orange energy.", \ + user.visible_message("[user]'s [fabricator.name] stops covering [src == user ? "[user.p_them()]" : "[src]"] with glowing orange energy.", \ "You finish repairin[src == user ? "g yourself. You are":"g [src]. [p_theyre(TRUE)]"] now at [health]/[maxHealth] health.") //Cogscarabs get special interaction because they're drones and have innate self-heals/revives. @@ -304,13 +304,13 @@ if(health == maxHealth) return FALSE else if(!(flags_1 & GODMODE)) - user.visible_message("[user]'s [fabricator.name] starts coverin[src == user ? "g [user.p_them()]" : "g [src]"] in glowing orange energy...", \ - "You start repairin[src == user ? "g yourself" : "g [src]"]...") + user.visible_message("[user]'s [fabricator.name] starts covering [src == user ? "[user.p_them()]" : "[src]"] in glowing orange energy...", \ + "You start repairing [src == user ? "yourself" : "[src]"]...") fabricator.repairing = src if(do_after(user, (maxHealth - health)*2, target=src)) adjustHealth(-maxHealth) - user.visible_message("[user]'s [fabricator.name] stops coverin[src == user ? "g [user.p_them()]" : "g [src]"] with glowing orange energy.", \ - "You finish repairin[src == user ? "g yourself" : "g [src]"].") + user.visible_message("[user]'s [fabricator.name] stops covering [src == user ? "[user.p_them()]" : "[src]"] with glowing orange energy.", \ + "You finish repairing [src == user ? "yourself" : "[src]"].") if(fabricator) fabricator.repairing = null diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm index d39656c8d8..aaeb871e5d 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm @@ -67,7 +67,7 @@ name = "replicant manacles" desc = "Heavy manacles made out of freezing-cold metal. It looks like brass, but feels much more solid." icon_state = "brass_manacles" - flags_1 = DROPDEL_1 + item_flags = DROPDEL /obj/item/restraints/handcuffs/clockwork/dropped(mob/user) user.visible_message("[user]'s [name] come apart at the seams!", \ diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm index 32bf870886..8ed8edae8a 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm @@ -50,7 +50,7 @@ user.emote("scream") user.apply_damage(30, BRUTE, BODY_ZONE_HEAD) user.adjustBrainLoss(30) - addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround), src, 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off. + addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off. /obj/item/clothing/head/helmet/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(equipper && !is_servant_of_ratvar(equipper)) @@ -106,13 +106,13 @@ if(slot == SLOT_WEAR_SUIT && !is_servant_of_ratvar(user)) if(!iscultist(user)) to_chat(user, "\"Now now, this is for my servants, not you.\"") - user.visible_message("As [user] puts [src] on, it flickers off [user.p_their()] body!", "The curiass flickers off your body, leaving only nausea!") + user.visible_message("As [user] puts [src] on, it flickers off [user.p_their()] body!", "The cuirass flickers off your body, leaving only nausea!") if(iscarbon(user)) var/mob/living/carbon/C = user C.vomit(20) else to_chat(user, "\"I think this armor is too hot for you to handle.\"") - to_chat(user, "The curiass emits a burst of flame as you scramble to get it off!") + to_chat(user, "The cuirass emits a burst of flame as you scramble to get it off!") user.emote("scream") user.apply_damage(15, BURN, BODY_ZONE_CHEST) user.adjust_fire_stacks(2) diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm index c464656150..1cdc05a07a 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm @@ -278,7 +278,7 @@ dat += "Items
    " dat += "Slab: A clockwork slab, a Servant's most important tool. You're holding one! Keep it safe and hidden.
    " dat += "Visor: A judicial visor, which is a pair of glasses that can smite an area for a brief stun and delayed explosion.
    " - dat += "Wraith Specs: Wraith spectacles, which provide true sight (x-ray, night vision) but damage the wearer's eyes.
    " + dat += "Wraith Specs: Wraith spectacles, which provide true sight (X-ray, night vision) but damage the wearer's eyes.
    " dat += "Spear: A Ratvarian spear, which is a very powerful melee weapon that produces Vitality.
    " dat += "Fabricator: A replica fabricator, which converts objects into clockwork versions.

    " dat += "Constructs
    " diff --git a/code/modules/antagonists/clockcult/clock_items/integration_cog.dm b/code/modules/antagonists/clockcult/clock_items/integration_cog.dm index 4e4aff5569..0ce70336fe 100644 --- a/code/modules/antagonists/clockcult/clock_items/integration_cog.dm +++ b/code/modules/antagonists/clockcult/clock_items/integration_cog.dm @@ -9,7 +9,7 @@ Siphons 5 W of power per second while in an APC." icon_state = "wall_gear" w_class = WEIGHT_CLASS_TINY - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON var/obj/machinery/power/apc/apc /obj/item/clockwork/integration_cog/Initialize() diff --git a/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm b/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm index c89a04c932..741b251a4f 100644 --- a/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm +++ b/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm @@ -8,7 +8,7 @@ righthand_file = 'icons/mob/inhands/antag/clockwork_righthand.dmi' w_class = WEIGHT_CLASS_NORMAL force = 5 - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON var/speed_multiplier = 1 //The speed ratio the fabricator operates at var/uses_power = TRUE var/repairing = null //what we're currently repairing, if anything diff --git a/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm index dab12dc304..6fda25a1b5 100644 --- a/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm +++ b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm @@ -1,4 +1,4 @@ -//Wraith spectacles: Grants x-ray and night vision at the eventual cost of the wearer's sight if worn too long. Nar-Sian cultists are instantly blinded. +//Wraith spectacles: Grants X-ray and night vision at the eventual cost of the wearer's sight if worn too long. Nar-Sian cultists are instantly blinded. /obj/item/clothing/glasses/wraith_spectacles name = "antique spectacles" desc = "Unnerving glasses with opaque yellow lenses." diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm index ad4062598e..e78a6e4623 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm @@ -29,7 +29,7 @@ descname = "Trap, Stunning" name = "Sigil of Transgression" desc = "Wards a tile with a sigil, which will briefly stun the next non-Servant to cross it and apply Belligerent to them." - invocations = list("Divinity, smite...", "...those who tresspass here!") + invocations = list("Divinity, smite...", "...those who trespass here!") channel_time = 50 power_cost = 50 whispered = TRUE diff --git a/code/modules/antagonists/clockcult/clock_structure.dm b/code/modules/antagonists/clockcult/clock_structure.dm index a7eb192dc8..300e85e380 100644 --- a/code/modules/antagonists/clockcult/clock_structure.dm +++ b/code/modules/antagonists/clockcult/clock_structure.dm @@ -117,6 +117,9 @@ to_chat(user, "As you unsecure [src] from the floor, you see cracks appear in its surface!") /obj/structure/destructible/clockwork/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return if(anchored && unanchored_icon) anchored = FALSE update_anchored(null, obj_integrity > max_integrity * 0.25) @@ -203,6 +206,9 @@ toggle() /obj/structure/destructible/clockwork/powered/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return if(forced_disable(TRUE)) new /obj/effect/temp_visual/emp(loc) diff --git a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm index 2b1d9d5f02..35a6c34aaf 100644 --- a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm +++ b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm @@ -335,7 +335,7 @@ sleep(3) GLOB.clockwork_gateway_activated = TRUE var/turf/T = SSmapping.get_station_center() - new /obj/structure/destructible/clockwork/massive/ratvar(T) + new /obj/structure/destructible/clockwork/massive/ratvar(T, TRUE) //Citadel edit - hugboxes ratvar spawning by admins SSticker.force_ending = TRUE var/x0 = T.x var/y0 = T.y diff --git a/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm index 9fbcdfd223..b8b5c90dd8 100644 --- a/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm +++ b/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm @@ -17,7 +17,7 @@ var/convert_range = 10 obj_flags = CAN_BE_HIT | DANGEROUS_POSSESSION -/obj/structure/destructible/clockwork/massive/ratvar/Initialize() +/obj/structure/destructible/clockwork/massive/ratvar/Initialize(mapload, is_from_gateway = FALSE) . = ..() GLOB.ratvar_awakens++ for(var/obj/O in GLOB.all_clockwork_objects) @@ -29,7 +29,8 @@ sound_to_playing_players('sound/effects/ratvar_reveal.ogg') var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/clockwork_effects.dmi', "ratvar_alert") notify_ghosts("The Justiciar's light calls to you! Reach out to Ratvar in [get_area_name(src)] to be granted a shell to spread his glory!", null, source = src, alert_overlay = alert_overlay) - INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 10, null, FALSE, 0) + if(is_from_gateway) //citadel edit - hugbox + INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 10, null, FALSE, 0) /obj/structure/destructible/clockwork/massive/ratvar/Destroy() GLOB.ratvar_awakens-- diff --git a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm index 41292f818d..f5ed91ac15 100644 --- a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm +++ b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm @@ -12,7 +12,7 @@ return if(!is_servant_of_ratvar(user)) return - if(!isprocessing) + if(!(datum_flags & DF_ISPROCESSING)) START_PROCESSING(SSprocessing, src) to_chat(user, "You activate [src].") icon_state = "[icon_state]_on" diff --git a/code/modules/antagonists/clockcult/clockcult.dm b/code/modules/antagonists/clockcult/clockcult.dm index bbb83fc9a5..f2c0518cc2 100644 --- a/code/modules/antagonists/clockcult/clockcult.dm +++ b/code/modules/antagonists/clockcult/clockcult.dm @@ -159,7 +159,7 @@ SSticker.mode.servants_of_ratvar -= owner SSticker.mode.update_servant_icons_removed(owner) if(!silent) - owner.current.visible_message("[owner] seems to have remembered [owner.p_their()] true allegiance!", null, null, null, owner.current) + owner.current.visible_message("[owner.current] seems to have remembered [owner.current.p_their()] true allegiance!", null, null, null, owner.current) to_chat(owner, "A cold, cold darkness flows through your mind, extinguishing the Justiciar's light and all of your memories as his servant.") owner.current.log_message("Has renounced the cult of Ratvar!", INDIVIDUAL_ATTACK_LOG) owner.special_role = null diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 3df3d63ebd..847b49c354 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -64,7 +64,7 @@ qdel(nullify_spell) return BS = possible_spells[entered_spell_name] - if(QDELETED(src) || owner.incapacitated() || !BS) + if(QDELETED(src) || owner.incapacitated() || !BS || (rune && !(locate(/obj/effect/rune/empower) in range(1, owner))) || (spells.len >= limit)) return to_chat(owner,"You begin to carve unnatural symbols into your flesh!") SEND_SOUND(owner, sound('sound/weapons/slice.ogg',0,1,10)) @@ -271,7 +271,6 @@ attached_action.desc += "
    Has [attached_action.charges] use\s remaining." attached_action.UpdateButtonIcon() if(attached_action.charges <= 0) - remove_mousepointer(ranged_ability_user.client) remove_ranged_ability("You have exhausted the spell's power!") qdel(src) @@ -340,7 +339,8 @@ icon = 'icons/obj/items_and_weapons.dmi' icon_state = "disintegrate" item_state = null - flags_1 = ABSTRACT_1 | NODROP_1 | DROPDEL_1 + item_flags = NEEDS_PERMIT | ABSTRACT | NODROP | DROPDEL + w_class = WEIGHT_CLASS_HUGE throwforce = 0 throw_range = 0 @@ -520,7 +520,7 @@ name = "shadow shackles" desc = "Shackles that bind the wrists with sinister magic." trashtype = /obj/item/restraints/handcuffs/energy/used - flags_1 = DROPDEL_1 + item_flags = DROPDEL /obj/item/restraints/handcuffs/energy/cult/used/dropped(mob/user) user.visible_message("[user]'s shackles shatter in a discharge of dark magic!", \ @@ -542,7 +542,7 @@ var/obj/item/stack/sheet/candidate = target if(candidate.use(50)) uses-- - to_chat(user, "A dark cloud eminates from your hand and swirls around the metal, twisting it into a construct shell!") + to_chat(user, "A dark cloud emanates from your hand and swirls around the metal, twisting it into a construct shell!") new /obj/structure/constructshell(T) SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) else @@ -553,12 +553,12 @@ if(candidate.use(quantity)) uses -- new /obj/item/stack/sheet/runed_metal(T,quantity) - to_chat(user, "A dark cloud eminates from you hand and swirls around the plasteel, transforming it into runed metal!") + to_chat(user, "A dark cloud emanates from you hand and swirls around the plasteel, transforming it into runed metal!") SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) else if(istype(target,/mob/living/silicon/robot)) var/mob/living/silicon/robot/candidate = target if(candidate.mmi) - user.visible_message("A dark cloud eminates from [user]'s hand and swirls around [candidate]!") + user.visible_message("A dark cloud emanates from [user]'s hand and swirls around [candidate]!") playsound(T, 'sound/machines/airlock_alien_prying.ogg', 80, 1) var/prev_color = candidate.color candidate.color = "black" @@ -581,7 +581,7 @@ candidate.color = prev_color else uses-- - to_chat(user, "A dark cloud eminates from you hand and swirls around [candidate] - twisting it into a construct shell!") + to_chat(user, "A dark cloud emanates from you hand and swirls around [candidate] - twisting it into a construct shell!") new /obj/structure/constructshell(T) SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) else if(istype(target,/obj/machinery/door/airlock)) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 0c7fb025c7..8ea391d2ca 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -95,7 +95,7 @@ else to_chat(mob, "You have a [item_name] in your [where].") if(where == "backpack") - mob.back.SendSignal(COMSIG_TRY_STORAGE_SHOW, mob) + SEND_SIGNAL(mob.back, COMSIG_TRY_STORAGE_SHOW, mob) return TRUE /datum/antagonist/cult/apply_innate_effects(mob/living/mob_override) @@ -128,7 +128,7 @@ SSticker.mode.cult -= owner SSticker.mode.update_cult_icons_removed(owner) if(!silent) - owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just reverted to [owner.p_their()] old faith!", null, null, null, owner.current) + owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just reverted to [owner.current.p_their()] old faith!", null, null, null, owner.current) to_chat(owner.current, "An unfamiliar white light flashes through your mind, cleansing the taint of the Geometer and all your memories as her servant.") owner.current.log_message("Has renounced the cult of Nar'Sie!", INDIVIDUAL_ATTACK_LOG) if(cult_team.blood_target && cult_team.blood_target_image && owner.current.client) @@ -228,7 +228,7 @@ target_candidates += player.mind if(target_candidates.len == 0) - message_admins("Cult Sacrifice: Could not find unconvertable target, checking for convertable target.") + message_admins("Cult Sacrifice: Could not find unconvertible target, checking for convertible target.") for(var/mob/living/carbon/human/player in GLOB.player_list) if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && player.stat != DEAD) target_candidates += player.mind @@ -248,7 +248,7 @@ objectives += sac_objective else - message_admins("Cult Sacrifice: Could not find unconvertable or convertable target. WELP!") + message_admins("Cult Sacrifice: Could not find unconvertible or convertible target. WELP!") //SUMMON OBJECTIVE diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm index b51ff99041..fd1d0d1c67 100644 --- a/code/modules/antagonists/cult/cult_comms.dm +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -215,7 +215,7 @@ var/cooldown = 0 var/base_cooldown = 1200 -/datum/action/innate/cult/master/cultmark/New() +/datum/action/innate/cult/master/cultmark/New(Target) CM = new() CM.attached_action = src ..() @@ -299,7 +299,7 @@ name = "Mark a Blood Target for the Cult" desc = "Marks a target for the entire cult to track." -/datum/action/innate/cult/master/cultmark/IsAvailable() +/datum/action/innate/cult/master/cultmark/ghost/IsAvailable() if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current)) return TRUE else @@ -457,7 +457,6 @@ new /obj/effect/temp_visual/cult/sparks(get_turf(target), ranged_ability_user.dir) attached_action.throwing = FALSE attached_action.cooldown = world.time + attached_action.base_cooldown - remove_mousepointer(ranged_ability_user.client) remove_ranged_ability("A pulse of blood magic surges through you as you shift [attached_action.throwee] through time and space.") caller.update_action_buttons_icon() addtimer(CALLBACK(caller, /mob.proc/update_action_buttons_icon), attached_action.base_cooldown) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 5f56e1b91b..e1710dae96 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -64,7 +64,8 @@ /obj/item/melee/cultblade/ghost name = "eldritch sword" force = 19 //can't break normal airlocks - flags_1 = NODROP_1|DROPDEL_1 + item_flags = NEEDS_PERMIT | NODROP | DROPDEL + flags_1 = NONE /obj/item/melee/cultblade/pickup(mob/living/user) ..() @@ -301,7 +302,7 @@ item_state = "cult_hoodalt" /obj/item/clothing/head/culthood/alt/ghost - flags_1 = NODROP_1|DROPDEL_1 + item_flags = NODROP | DROPDEL /obj/item/clothing/suit/cultrobes/alt name = "cultist robes" @@ -310,7 +311,7 @@ item_state = "cultrobesalt" /obj/item/clothing/suit/cultrobes/alt/ghost - flags_1 = NODROP_1|DROPDEL_1 + item_flags = NODROP | DROPDEL /obj/item/clothing/head/magus @@ -333,7 +334,7 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/head/helmet/space/hardsuit/cult - name = "nar-sien hardened helmet" + name = "\improper Nar-Sien hardened helmet" desc = "A heavily-armored helmet worn by warriors of the Nar-Sien cult. It can withstand hard vacuum." icon_state = "cult_helmet" item_state = "cult_helmet" @@ -342,7 +343,7 @@ actions_types = list() /obj/item/clothing/suit/space/hardsuit/cult - name = "nar-sien hardened armor" + name = "\improper Nar-Sien hardened armor" icon_state = "cult_armor" item_state = "cult_armor" desc = "A heavily-armored exosuit worn by warriors of the Nar-Sien cult. It can withstand hard vacuum." @@ -520,7 +521,7 @@ sleep(20) var/global/list/curses if(!curses) - curses = list("A fuel technician just slit his own throat and begged for death. The shuttle will be delayed by three minutes.", + curses = list("A fuel technician just slit his own throat and begged for death.", "The shuttle's navigation programming was replaced by a file containing just two words: IT COMES.", "The shuttle's custodian was found washing the windows with their own blood.", "A shuttle engineer began screaming 'DEATH IS NOT THE END' and ripped out wires until an arc flash seared off her flesh.", @@ -754,7 +755,7 @@ guns_left = 24 mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage/blood fire_sound = 'sound/magic/wand_teleport.ogg' - flags_1 = NOBLUDGEON_1 | DROPDEL_1 + item_flags = NEEDS_PERMIT | NOBLUDGEON | DROPDEL /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage/blood @@ -792,7 +793,7 @@ icon = 'icons/obj/items_and_weapons.dmi' icon_state = "disintegrate" item_state = null - flags_1 = ABSTRACT_1 | NODROP_1 | DROPDEL_1 + item_flags = ABSTRACT | NODROP | DROPDEL w_class = WEIGHT_CLASS_HUGE throwforce = 0 throw_range = 0 diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index a1241d5998..df4715bc69 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -496,13 +496,13 @@ structure_check() searches for nearby cultist structures required for the invoca if((istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user))) user.visible_message("[user.name] begins erasing [src]...", "You begin erasing [src]...") if(do_after(user, 50, target = src)) //Prevents accidental erasures. - log_game("Summon Narsie rune erased by [user.mind.key] (ckey) with [I.name]") - message_admins("[key_name_admin(user)] erased a Narsie rune with [I.name]") + log_game("Summon Narsie rune erased by [key_name(user)] with [I.name]") + message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]") ..() else if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. - log_game("Summon Narsie rune erased by [user.mind.key] (ckey) using a null rod") - message_admins("[key_name_admin(user)] erased a Narsie rune with a null rod") + log_game("Summon Narsie rune erased by [key_name(user)] using a null rod") + message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod") ..() //Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every sacrifice your cult has carried out. @@ -804,7 +804,7 @@ structure_check() searches for nearby cultist structures required for the invoca construct_invoke = FALSE color = RUNE_COLOR_DARKRED var/mob/living/affecting = null - var/ghost_limit = 4 + var/ghost_limit = 3 var/ghosts = 0 /obj/effect/rune/manifest/Initialize() @@ -834,10 +834,15 @@ structure_check() searches for nearby cultist structures required for the invoca if(A.map_name == "Space" || is_mining_level(T.z)) to_chat(user, "The veil is not weak enough here to manifest spirits, you must be on station!") return + if(ghosts >= ghost_limit) + to_chat(user, "You are sustaining too many ghosts to summon more!") + fail_invoke() + log_game("Manifest rune failed - too many summoned ghosts") + return list() notify_ghosts("Manifest rune invoked in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src) var/list/ghosts_on_rune = list() for(var/mob/dead/observer/O in T) - if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) + if(O.client && !jobban_isbanned(O, ROLE_CULTIST) && !QDELETED(src) && !QDELETED(O)) ghosts_on_rune += O if(!ghosts_on_rune.len) to_chat(user, "There are no spirits near [src]!") @@ -852,11 +857,6 @@ structure_check() searches for nearby cultist structures required for the invoca new_human.apply_status_effect(STATUS_EFFECT_SUMMONEDGHOST) //ghosts can't summon more ghosts new_human.see_invisible = SEE_INVISIBLE_OBSERVER ghosts++ - if(ghosts >= ghost_limit) - to_chat(user, "You are sustaining too many ghosts to summon more!") - fail_invoke() - log_game("Manifest rune failed - too many summoned ghosts") - return list() playsound(src, 'sound/magic/exit_blood.ogg', 50, 1) visible_message("A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.") to_chat(user, "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...") diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index 3852eb6de1..fe05c9284c 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -387,7 +387,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", return H.reagents.has_reagent("holy water") return 0 if(BANISH_COFFIN) - return (body && istype(body.loc, /obj/structure/closet/coffin)) + return (body && istype(body.loc, /obj/structure/closet/crate/coffin)) if(BANISH_FORMALDYHIDE) if(iscarbon(body)) var/mob/living/carbon/H = body diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm index 7752d0449f..da51a5d698 100644 --- a/code/modules/antagonists/devil/imp/imp.dm +++ b/code/modules/antagonists/devil/imp/imp.dm @@ -36,7 +36,7 @@ var/boost = 0 bloodcrawl = BLOODCRAWL_EAT var/list/consumed_mobs = list() - var/playstyle_string = "You are an imp, a mischevious creature from hell. You are the lowest rank on the hellish totem pole \ + var/playstyle_string = "You are an imp, a mischievous creature from hell. You are the lowest rank on the hellish totem pole \ Though you are not obligated to help, perhaps by aiding a higher ranking devil, you might just get a promotion. However, you are incapable \ of intentionally harming a fellow devil." diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm index 72b945600b..4e1175c13e 100644 --- a/code/modules/antagonists/devil/true_devil/_true_devil.dm +++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm @@ -67,7 +67,7 @@ //Left hand items for(var/obj/item/I in held_items) - if(!(I.flags_1 & ABSTRACT_1)) + if(!(I.item_flags & ABSTRACT)) msg += "It is holding [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" //Braindead diff --git a/code/modules/antagonists/disease/disease_abilities.dm b/code/modules/antagonists/disease/disease_abilities.dm index 9a792749a0..07cd3030b1 100644 --- a/code/modules/antagonists/disease/disease_abilities.dm +++ b/code/modules/antagonists/disease/disease_abilities.dm @@ -54,7 +54,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( stage_speed += initial(S.stage_speed) transmittable += initial(S.transmittable) threshold_block += "

    [initial(S.threshold_desc)]" - stat_block = "Resistance: [resistance]
    Stealth: [stealth]
    Stage Speed: [stage_speed]
    Transmittability: [transmittable]

    " + stat_block = "Resistance: [resistance]
    Stealth: [stealth]
    Stage Speed: [stage_speed]
    Transmissibility: [transmittable]

    " /datum/disease_ability/proc/CanBuy(mob/camera/disease/D) if(world.time < D.next_adaptation_time) @@ -130,14 +130,14 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( required_total_points = 0 start_with = TRUE short_desc = "Force the host you are following to cough, spreading your infection to those nearby." - long_desc = "Force the host you are following to cough with extra force, spreading your infection to those within two meters of your host even if your transmitability is low.
    Cooldown: 10 seconds" + long_desc = "Force the host you are following to cough with extra force, spreading your infection to those within two meters of your host even if your transmissibility is low.
    Cooldown: 10 seconds" /datum/action/cooldown/disease_cough name = "Cough" icon_icon = 'icons/mob/actions/actions_minor_antag.dmi' button_icon_state = "cough" - desc = "Force the host you are following to cough with extra force, spreading your infection to those within two meters of your host even if your transmitability is low.
    Cooldown: 10 seconds" + desc = "Force the host you are following to cough with extra force, spreading your infection to those within two meters of your host even if your transmissibility is low.
    Cooldown: 10 seconds" cooldown_time = 100 /datum/action/cooldown/disease_cough/Trigger() @@ -148,7 +148,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( if(!L) return FALSE if(L.stat != CONSCIOUS) - to_chat(D, "Your host must be concious to cough.") + to_chat(D, "Your host must be conscious to cough.") return FALSE to_chat(D, "You force [L.real_name] to cough.") L.emote("cough") @@ -170,7 +170,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( name = "Sneeze" icon_icon = 'icons/mob/actions/actions_minor_antag.dmi' button_icon_state = "sneeze" - desc = "Force the host you are following to sneeze with extra force, spreading your infection to any victims in a 4 meter cone in front of your host even if your transmitability is low.
    Cooldown: 20 seconds" + desc = "Force the host you are following to sneeze with extra force, spreading your infection to any victims in a 4 meter cone in front of your host even if your transmissibility is low.
    Cooldown: 20 seconds" cooldown_time = 200 /datum/action/cooldown/disease_sneeze/Trigger() @@ -181,7 +181,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( if(!L) return FALSE if(L.stat != CONSCIOUS) - to_chat(D, "Your host must be concious to sneeze.") + to_chat(D, "Your host must be conscious to sneeze.") return FALSE to_chat(D, "You force [L.real_name] to sneeze.") L.emote("sneeze") @@ -243,7 +243,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( cost = 2 required_total_points = 4 short_desc = "Cause victims to cough intermittently." - long_desc = "Cause victims to cough intermittently, spreading your infection if your transmitability is high." + long_desc = "Cause victims to cough intermittently, spreading your infection if your transmissibility is high." /datum/disease_ability/symptom/sneeze name = "Involuntary Sneezing" @@ -251,7 +251,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( cost = 2 required_total_points = 4 short_desc = "Cause victims to sneeze intermittently." - long_desc = "Cause victims to sneeze intermittently, spreading your infection and also increasing transmitability and resistance, at the cost of stealth." + long_desc = "Cause victims to sneeze intermittently, spreading your infection and also increasing transmissibility and resistance, at the cost of stealth." /datum/disease_ability/symptom/beard //I don't think I need to justify the fact that this is the best symptom @@ -277,7 +277,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( cost = 4 required_total_points = 8 short_desc = "Cause victims to choke." - long_desc = "Cause victims to choke, threatening asphyxiation. Decreases stats, especially transmittability." + long_desc = "Cause victims to choke, threatening asphyxiation. Decreases stats, especially transmissibility." /datum/disease_ability/symptom/confusion @@ -295,7 +295,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( cost = 4 required_total_points = 8 short_desc = "Cause victims to become eternally young." - long_desc = "Cause victims to become eternally young. Provides boosts to all stats except transmittability." + long_desc = "Cause victims to become eternally young. Provides boosts to all stats except transmissibility." /datum/disease_ability/symptom/vomit @@ -304,7 +304,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( cost = 4 required_total_points = 8 short_desc = "Cause victims to vomit." - long_desc = "Cause victims to vomit. Slightly increases transmittability. Vomiting also also causes the victims to lose nutrition and removes some toxin damage." + long_desc = "Cause victims to vomit. Slightly increases transmissibility. Vomiting also also causes the victims to lose nutrition and removes some toxin damage." /datum/disease_ability/symptom/voice_change @@ -367,7 +367,7 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( cost = 4 required_total_points = 8 short_desc = "Cause victims to lose weight." - long_desc = "Cause victims to lose weight, and make it almost immpossible for them to gain nutrition from food. Reduced nutrition allows your infection to spread more easily from hosts, especially by sneezing." + long_desc = "Cause victims to lose weight, and make it almost impossible for them to gain nutrition from food. Reduced nutrition allows your infection to spread more easily from hosts, especially by sneezing." /datum/disease_ability/symptom/metabolism_heal diff --git a/code/modules/antagonists/disease/disease_event.dm b/code/modules/antagonists/disease/disease_event.dm index ad66ee0cbb..7183ed5455 100644 --- a/code/modules/antagonists/disease/disease_event.dm +++ b/code/modules/antagonists/disease/disease_event.dm @@ -20,7 +20,7 @@ var/mob/camera/disease/virus = new /mob/camera/disease(SSmapping.get_station_center()) virus.key = selected.key INVOKE_ASYNC(virus, /mob/camera/disease/proc/pick_name) - message_admins("[key_name_admin(virus)] has been made into a sentient disease by an event.") + message_admins("[ADMIN_LOOKUPFLW(virus)] has been made into a sentient disease by an event.") log_game("[key_name(virus)] was spawned as a sentient disease by an event.") spawned_mobs += virus return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/disease/disease_mob.dm b/code/modules/antagonists/disease/disease_mob.dm index bf035e1f21..6908c5eebf 100644 --- a/code/modules/antagonists/disease/disease_mob.dm +++ b/code/modules/antagonists/disease/disease_mob.dm @@ -81,7 +81,7 @@ the new instance inside the host to be updated to the template's stats. /mob/camera/disease/Login() ..() if(freemove) - to_chat(src, "You have [round((freemove_end - world.time)/10)] seconds to select your first host. Click on a human to select your host.") + to_chat(src, "You have [DisplayTimeText(freemove_end - world.time)] to select your first host. Click on a human to select your host.") /mob/camera/disease/Stat() @@ -285,7 +285,7 @@ the new instance inside the host to be updated to the template's stats. ..() /mob/camera/disease/proc/adapt_cooldown() - to_chat(src, "You have altered your genetic structure. You will be unable to adapt again for [adaptation_cooldown/10] seconds.") + to_chat(src, "You have altered your genetic structure. You will be unable to adapt again for [DisplayTimeText(adaptation_cooldown)].") next_adaptation_time = world.time + adaptation_cooldown addtimer(CALLBACK(src, .proc/notify_adapt_ready), adaptation_cooldown) @@ -310,7 +310,7 @@ the new instance inside the host to be updated to the template's stats. Resistance: [DT.totalResistance()]
    \ Stealth: [DT.totalStealth()]
    \ Stage Speed: [DT.totalStageSpeed()]
    \ - Transmittability: [DT.totalTransmittable()]
    \ + Transmissibility: [DT.totalTransmittable()]
    \ Cure: [DT.cure_text]" dat += "

    Adaptations

    \ Points: [points] / [total_points]\ diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm index c55f177b7a..62da2df87f 100644 --- a/code/modules/antagonists/highlander/highlander.dm +++ b/code/modules/antagonists/highlander/highlander.dm @@ -42,7 +42,7 @@ if(!istype(H)) return - for(var/obj/item/I in H.get_equipped_items()) + for(var/obj/item/I in H.get_equipped_items(TRUE)) qdel(I) for(var/obj/item/I in H.held_items) qdel(I) @@ -59,13 +59,13 @@ W.access += get_all_centcom_access() W.assignment = "Highlander" W.registered_name = H.real_name - W.flags_1 |= NODROP_1 + W.item_flags |= NODROP W.update_label(H.real_name) H.equip_to_slot_or_del(W, SLOT_WEAR_ID) sword = new(H) if(!GLOB.highlander) - sword.admin_spawned = TRUE //To prevent announcing + sword.flags_1 |= ADMIN_SPAWNED_1 //To prevent announcing sword.pickup(H) //For the stun shielding H.put_in_hands(sword) diff --git a/code/modules/antagonists/morph/morph.dm b/code/modules/antagonists/morph/morph.dm index 6572584eab..12f8d22897 100644 --- a/code/modules/antagonists/morph/morph.dm +++ b/code/modules/antagonists/morph/morph.dm @@ -238,7 +238,7 @@ player_mind.add_antag_datum(/datum/antagonist/morph) to_chat(S, S.playstyle_string) SEND_SOUND(S, sound('sound/magic/mutate.ogg')) - message_admins("[key_name_admin(S)] has been made into a morph by an event.") + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a morph by an event.") log_game("[key_name(S)] was spawned as a morph by an event.") spawned_mobs += S return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm index 3da349ef90..df04059f99 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm @@ -7,6 +7,7 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) /obj/item/nuclear_challenge name = "Declaration of War (Challenge Mode)" + icon = 'icons/obj/device.dmi' icon_state = "gangtool-red" item_state = "radio" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' @@ -15,7 +16,7 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) Such a brazen move will attract the attention of powerful benefactors within the Syndicate, who will supply your team with a massive amount of bonus telecrystals. \ Must be used within five minutes, or your benefactors will lose interest." var/declaring_war = FALSE - var/uplink_type = /obj/item/radio/uplink/nuclear + var/uplink_type = /obj/item/uplink/nuclear /obj/item/nuclear_challenge/attack_self(mob/living/user) if(!check_allowed(user)) @@ -87,7 +88,7 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) return TRUE /obj/item/nuclear_challenge/clownops - uplink_type = /obj/item/radio/uplink/clownop + uplink_type = /obj/item/uplink/clownop #undef CHALLENGE_TELECRYSTALS #undef CHALLENGE_TIME_LIMIT diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index a9c6a112bd..df9b35ee8b 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -3,6 +3,7 @@ desc = "You probably shouldn't stick around to see if this is armed." icon = 'icons/obj/machines/nuke.dmi' icon_state = "nuclearbomb_base" + anchored = FALSE density = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF @@ -15,6 +16,7 @@ var/numeric_input = "" var/timing = FALSE var/exploding = FALSE + var/exploded = FALSE var/detonation_timer = null var/r_code = "ADMIN" var/yes_code = FALSE @@ -254,7 +256,7 @@ first_status = "Set" else first_status = "Auth S1." - var/second_status = safety ? "Safe" : "Engaged" + var/second_status = exploded ? "Warhead triggered, thanks for flying Nanotrasen" : (safety ? "Safe" : "Engaged") data["status1"] = first_status data["status2"] = second_status data["anchored"] = anchored @@ -331,13 +333,13 @@ timer_set = CLAMP(N,minimum_timer_set,maximum_timer_set) . = TRUE if("safety") - if(auth && yes_code) + if(auth && yes_code && !exploded) set_safety() if("anchor") if(auth && yes_code) set_anchor() if("toggle_timer") - if(auth && yes_code && !safety) + if(auth && yes_code && !safety && !exploded) set_active() @@ -369,11 +371,11 @@ if(timing) previous_level = get_security_level() bomb_set = TRUE - set_security_level("delta") detonation_timer = world.time + (timer_set * 10) for(var/obj/item/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list) S.switch_mode_to(TRACK_INFILTRATOR) countdown.start() + set_security_level("delta") else bomb_set = FALSE detonation_timer = null @@ -395,9 +397,9 @@ return qdel(src) -/obj/machinery/nuclearbomb/tesla_act(power, explosive) +/obj/machinery/nuclearbomb/tesla_act(power, tesla_flags) ..() - if(explosive) + if(tesla_flags & TESLA_MACHINE_EXPLOSIVE) qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over #define NUKERANGE 127 @@ -455,6 +457,71 @@ else return CINEMATIC_SELFDESTRUCT_MISS +/obj/machinery/nuclearbomb/beer + name = "Nanotrasen-brand nuclear fission explosive" + desc = "One of the more successful achievements of the Nanotrasen Corporate Warfare Division, their nuclear fission explosives are renowned for being cheap to produce and devastatingly effective. Signs explain that though this particular device has been decommissioned, every Nanotrasen station is equipped with an equivalent one, just in case. All Captains carefully guard the disk needed to detonate them - at least, the sign says they do. There seems to be a tap on the back." + var/obj/structure/reagent_dispensers/beerkeg/keg + +/obj/machinery/nuclearbomb/beer/Initialize() + . = ..() + keg = new(src) + QDEL_NULL(core) + +/obj/machinery/nuclearbomb/beer/examine(mob/user) + . = ..() + if(keg.reagents.total_volume) + to_chat(user, "It has [keg.reagents.total_volume] unit\s left.") + else + to_chat(user, "It's empty.") + +/obj/machinery/nuclearbomb/beer/attackby(obj/item/W, mob/user, params) + if(W.is_refillable()) + W.afterattack(keg, user, TRUE) // redirect refillable containers to the keg, allowing them to be filled + return TRUE // pretend we handled the attack, too. + if(istype(W, /obj/item/nuke_core_container)) + to_chat(user, "[src] has had its plutonium core removed as a part of being decommissioned.") + return TRUE + return ..() + +/obj/machinery/nuclearbomb/beer/actually_explode() + var/turf/bomb_location = get_turf(src) + if(!bomb_location) + disarm() + return + if(is_station_level(bomb_location.z)) + var/datum/round_event_control/E = locate(/datum/round_event_control/vent_clog/beer) in SSevents.control + if(E) + E.runEvent() + addtimer(CALLBACK(src, .proc/really_actually_explode), 110) + else + visible_message("[src] fizzes ominously.") + addtimer(CALLBACK(src, .proc/fizzbuzz), 110) + +/obj/machinery/nuclearbomb/beer/proc/disarm() + bomb_set = FALSE + detonation_timer = null + exploding = FALSE + exploded = TRUE + set_security_level(previous_level) + for(var/obj/item/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list) + S.switch_mode_to(initial(S.mode)) + S.alert = FALSE + countdown.stop() + update_icon() + +/obj/machinery/nuclearbomb/beer/proc/fizzbuzz() + var/datum/reagents/R = new/datum/reagents(1000) + R.my_atom = src + R.add_reagent("beer", 100) + + var/datum/effect_system/foam_spread/foam = new + foam.set_up(200, get_turf(src), R) + foam.start() + disarm() + +/obj/machinery/nuclearbomb/beer/really_actually_explode() + disarm() + /proc/KillEveryoneOnZLevel(z) if(!z) return @@ -521,7 +588,7 @@ This is here to make the tiles around the station mininuke change when it's arme CRASH("A fake nuke disk tried to call process(). Who the fuck and how the fuck") var/turf/newturf = get_turf(src) if(newturf && lastlocation == newturf) - if(last_disk_move < world.time - 5000 && prob((world.time - 5000 - last_disk_move)*0.00001)) + if(last_disk_move < world.time - 5000 && prob((world.time - 5000 - last_disk_move)*0.0001)) var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control if(istype(loneop)) loneop.weight += 1 diff --git a/code/modules/antagonists/nukeop/equipment/pinpointer.dm b/code/modules/antagonists/nukeop/equipment/pinpointer.dm index 1cdc356559..d8dc709975 100644 --- a/code/modules/antagonists/nukeop/equipment/pinpointer.dm +++ b/code/modules/antagonists/nukeop/equipment/pinpointer.dm @@ -52,7 +52,7 @@ /obj/item/pinpointer/nuke/proc/switch_mode_to(new_mode) if(isliving(loc)) var/mob/living/L = loc - to_chat(L, "Your [name] beeps as it reconfigures its tracking algorithms.") + to_chat(L, "Your [name] beeps as it reconfigures it's tracking algorithms.") playsound(L, 'sound/machines/triple_beep.ogg', 50, 1) mode = new_mode scan_for_target() @@ -65,7 +65,8 @@ /obj/item/pinpointer/syndicate_cyborg // Cyborg pinpointers just look for a random operative. name = "cyborg syndicate pinpointer" desc = "An integrated tracking device, jury-rigged to search for living Syndicate operatives." - flags_1 = NODROP_1 + item_flags = NODROP + flags_1 = NONE /obj/item/pinpointer/syndicate_cyborg/scan_for_target() target = null @@ -79,4 +80,3 @@ if(closest_operative) target = closest_operative ..() - diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm index df7d21e46b..db25adcda4 100644 --- a/code/modules/antagonists/nukeop/nukeop.dm +++ b/code/modules/antagonists/nukeop/nukeop.dm @@ -65,6 +65,8 @@ nuke.r_code = nuke_team.memorized_code else //Already set by admins/something else? nuke_team.memorized_code = nuke.r_code + for(var/obj/machinery/nuclearbomb/beer/beernuke in GLOB.nuke_list) + beernuke.r_code = nuke_team.memorized_code else stack_trace("Syndicate nuke not found during nuke team creation.") nuke_team.memorized_code = null @@ -256,7 +258,8 @@ /datum/team/nuclear/proc/syndies_escaped() var/obj/docking_port/mobile/S = SSshuttle.getShuttle("syndicate") - return S && (is_centcom_level(S.z) || is_transit_level(S.z)) + var/obj/docking_port/stationary/transit/T = locate() in S.loc + return S && (is_centcom_level(S.z) || T) /datum/team/nuclear/proc/get_result() var/evacuation = SSshuttle.emergency.mode == SHUTTLE_ENDGAME @@ -275,7 +278,7 @@ return NUKE_RESULT_WRONG_STATION else if (!disk_rescued && !station_was_nuked && nuke_off_station && syndies_didnt_escape) return NUKE_RESULT_WRONG_STATION_DEAD - else if ((disk_rescued || evacuation) && operatives_dead()) + else if ((disk_rescued && evacuation) && operatives_dead()) return NUKE_RESULT_CREW_WIN_SYNDIES_DEAD else if (disk_rescued) return NUKE_RESULT_CREW_WIN diff --git a/code/modules/antagonists/official/official.dm b/code/modules/antagonists/official/official.dm index 4b867585ae..23bf472422 100644 --- a/code/modules/antagonists/official/official.dm +++ b/code/modules/antagonists/official/official.dm @@ -31,7 +31,7 @@ else if (!mission) var/datum/objective/missionobj = new missionobj.owner = owner - missionobj.explanation_text = "Conduct a routine preformance review of [station_name()] and its Captain." + missionobj.explanation_text = "Conduct a routine performance review of [station_name()] and its Captain." missionobj.completed = 1 mission = missionobj objectives |= mission diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index c520b64146..03150c0254 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -109,11 +109,6 @@ revealed = FALSE incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_REVENANT - if(staticOverlays.len) - for(var/mob/living/simple_animal/drone/D in GLOB.drones_list) - if(D && D.client && D.seeStatic) - D.staticOverlays.Remove(staticOverlays) - D.client.images.Remove(staticOverlays) to_chat(src, "You are once more concealed.") if(unstun_time && world.time >= unstun_time) unstun_time = 0 @@ -250,15 +245,6 @@ else to_chat(src, "You have been revealed!") unreveal_time = unreveal_time + time - if(staticOverlays.len) - for(var/mob/living/simple_animal/drone/D in GLOB.drones_list) - if(D && D.client && D.seeStatic) - if(D.staticChoice in staticOverlays) - D.staticOverlays |= staticOverlays[D.staticChoice] - D.client.images |= staticOverlays[D.staticChoice] - else - D.staticOverlays |= staticOverlays["static"] - D.client.images |= staticOverlays["static"] update_spooky_icon() /mob/living/simple_animal/revenant/proc/stun(time) diff --git a/code/modules/antagonists/revenant/revenant_spawn_event.dm b/code/modules/antagonists/revenant/revenant_spawn_event.dm index 483be4dc34..c9a892cd64 100644 --- a/code/modules/antagonists/revenant/revenant_spawn_event.dm +++ b/code/modules/antagonists/revenant/revenant_spawn_event.dm @@ -53,7 +53,7 @@ var/mob/living/simple_animal/revenant/revvie = new(pick(spawn_locs)) revvie.key = selected.key - message_admins("[key_name_admin(revvie)] [ADMIN_FLW(revvie)] has been made into a revenant by an event.") + message_admins("[ADMIN_LOOKUPFLW(revvie)] has been made into a revenant by an event.") log_game("[key_name(revvie)] was spawned as a revenant by an event.") spawned_mobs += revvie return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index 19c3a43020..a454a9a964 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -201,7 +201,7 @@ /datum/antagonist/rev/farewell() if(ishuman(owner.current)) - owner.current.visible_message("[owner.current] looks like [owner.p_theyve()] just remembered [owner.p_their()] real allegiance!", null, null, null, owner.current) + owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just remembered [owner.current.p_their()] real allegiance!", null, null, null, owner.current) to_chat(owner, "You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...") else if(issilicon(owner.current)) owner.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.", null, null, null, owner.current) diff --git a/code/modules/antagonists/slaughter/slaughterevent.dm b/code/modules/antagonists/slaughter/slaughterevent.dm index 38054fccec..4d81741c91 100644 --- a/code/modules/antagonists/slaughter/slaughterevent.dm +++ b/code/modules/antagonists/slaughter/slaughterevent.dm @@ -41,7 +41,7 @@ to_chat(S, S.playstyle_string) to_chat(S, "You are currently not currently in the same plane of existence as the station. Blood Crawl near a blood pool to manifest.") SEND_SOUND(S, 'sound/magic/demon_dies.ogg') - message_admins("[key_name_admin(S)] has been made into a slaughter demon by an event.") + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a slaughter demon by an event.") log_game("[key_name(S)] was spawned as a slaughter demon by an event.") spawned_mobs += S return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm index 3ea2e1d739..d4d86cc087 100644 --- a/code/modules/antagonists/swarmer/swarmer.dm +++ b/code/modules/antagonists/swarmer/swarmer.dm @@ -128,6 +128,9 @@ return ..() | SPAN_ROBOT /mob/living/simple_animal/hostile/swarmer/emp_act() + . = ..() + if(. & EMP_PROTECT_SELF) + return if(health > 1) adjustHealth(health-1) else @@ -370,6 +373,10 @@ to_chat(S, "Attempting to dismantle this machine would result in an immediate counterattack. Aborting.") return FALSE +/obj/machinery/porta_turret_cover/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) + to_chat(S, "Attempting to dismantle this machine would result in an immediate counterattack. Aborting.") + return FALSE + /mob/living/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) S.DisperseTarget(src) return TRUE @@ -402,6 +409,10 @@ to_chat(S, "This object does not contain enough materials to work with.") return FALSE +/obj/machinery/field/generator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) + to_chat(S, "Destroying this object would cause a catastrophic chain reaction. Aborting.") + return FALSE + ////END CTRL CLICK FOR SWARMERS//// /mob/living/simple_animal/hostile/swarmer/proc/Fabricate(atom/fabrication_object,fabrication_cost = 0) @@ -554,6 +565,9 @@ playsound(src, 'sound/items/welder.ogg', 100, 1) /obj/structure/swarmer/emp_act() + . = ..() + if(. & EMP_PROTECT_SELF) + return qdel(src) /obj/structure/swarmer/trap diff --git a/code/modules/antagonists/traitor/IAA/internal_affairs.dm b/code/modules/antagonists/traitor/IAA/internal_affairs.dm index 605db9797d..5213c679ca 100644 --- a/code/modules/antagonists/traitor/IAA/internal_affairs.dm +++ b/code/modules/antagonists/traitor/IAA/internal_affairs.dm @@ -5,12 +5,6 @@ #define TRAITOR_AGENT_ROLE "Syndicate External Affairs Agent" /datum/antagonist/traitor/internal_affairs - name = "Internal Affairs Agent" - human_datum = /datum/antagonist/traitor/human/internal_affairs - ai_datum = /datum/antagonist/traitor/AI/internal_affairs - antagpanel_category = "IAA" - -/datum/antagonist/traitor/AI/internal_affairs name = "Internal Affairs Agent" employer = "Nanotrasen" special_role = "internal affairs agent" @@ -20,47 +14,29 @@ var/list/datum/mind/targets_stolen -/datum/antagonist/traitor/human/internal_affairs - name = "Internal Affairs Agent" - employer = "Nanotrasen" - special_role = "internal affairs agent" - antagpanel_category = "IAA" - var/syndicate = FALSE - var/last_man_standing = FALSE - var/list/datum/mind/targets_stolen - - -/datum/antagonist/traitor/human/internal_affairs/proc/give_pinpointer() +/datum/antagonist/traitor/internal_affairs/proc/give_pinpointer() if(owner && owner.current) owner.current.apply_status_effect(/datum/status_effect/agent_pinpointer) -/datum/antagonist/traitor/human/internal_affairs/apply_innate_effects() +/datum/antagonist/traitor/internal_affairs/apply_innate_effects() .=..() //in case the base is used in future if(owner && owner.current) give_pinpointer(owner.current) -/datum/antagonist/traitor/human/internal_affairs/remove_innate_effects() +/datum/antagonist/traitor/internal_affairs/remove_innate_effects() .=..() if(owner && owner.current) owner.current.remove_status_effect(/datum/status_effect/agent_pinpointer) -/datum/antagonist/traitor/human/internal_affairs/on_gain() +/datum/antagonist/traitor/internal_affairs/on_gain() START_PROCESSING(SSprocessing, src) .=..() -/datum/antagonist/traitor/human/internal_affairs/on_removal() +/datum/antagonist/traitor/internal_affairs/on_removal() STOP_PROCESSING(SSprocessing,src) .=..() -/datum/antagonist/traitor/human/internal_affairs/process() +/datum/antagonist/traitor/internal_affairs/process() iaa_process() -/datum/antagonist/traitor/AI/internal_affairs/on_gain() - START_PROCESSING(SSprocessing, src) - .=..() -/datum/antagonist/traitor/AI/internal_affairs/on_removal() - STOP_PROCESSING(SSprocessing,src) - .=..() -/datum/antagonist/traitor/AI/internal_affairs/process() - iaa_process() /datum/status_effect/agent_pinpointer id = "agent_pinpointer" @@ -68,6 +44,7 @@ tick_interval = PINPOINTER_PING_TIME alert_type = /obj/screen/alert/status_effect/agent_pinpointer var/minimum_range = PINPOINTER_MINIMUM_RANGE + var/range_fuzz_factor = PINPOINTER_EXTRA_RANDOM_RANGE var/mob/scan_target = null /obj/screen/alert/status_effect/agent_pinpointer @@ -85,7 +62,7 @@ if(here.z != there.z) linked_alert.icon_state = "pinonnull" return - if(get_dist_euclidian(here,there)<=minimum_range + rand(0, PINPOINTER_EXTRA_RANDOM_RANGE)) + if(get_dist_euclidian(here,there)<=minimum_range + rand(0, range_fuzz_factor)) linked_alert.icon_state = "pinondirect" else linked_alert.setDir(get_dir(here, there)) @@ -142,21 +119,14 @@ continue remove_objective(objective_) -/datum/antagonist/traitor/human/internal_affairs/reinstate_escape_objective() +/datum/antagonist/traitor/internal_affairs/reinstate_escape_objective() ..() - var/datum/objective/escape/escape_objective = new + var/objtype = traitor_kind == TRAITOR_HUMAN ? /datum/objective/escape : /datum/objective/survive + var/datum/objective/escape_objective = new objtype escape_objective.owner = owner add_objective(escape_objective) -/datum/antagonist/traitor/AI/internal_affairs/reinstate_escape_objective() - ..() - var/datum/objective/survive/survive_objective = new - survive_objective.owner = owner - add_objective(survive_objective) - -/datum/antagonist/traitor/proc/steal_targets(datum/mind/victim) - var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA - +/datum/antagonist/traitor/internal_affairs/proc/steal_targets(datum/mind/victim) if(!owner.current||owner.current.stat==DEAD) return to_chat(owner.current, " Target eliminated: [victim.name]") @@ -165,13 +135,13 @@ var/datum/objective/assassinate/internal/objective = objective_ if(objective.target==owner) continue - else if(this.targets_stolen.Find(objective.target) == 0) + else if(targets_stolen.Find(objective.target) == 0) var/datum/objective/assassinate/internal/new_objective = new new_objective.owner = owner new_objective.target = objective.target new_objective.update_explanation_text() add_objective(new_objective) - this.targets_stolen += objective.target + targets_stolen += objective.target var/status_text = objective.check_completion() ? "neutralised" : "active" to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ") else if(istype(objective_, /datum/objective/destroy/internal)) @@ -179,31 +149,30 @@ var/datum/objective/destroy/internal/new_objective = new if(objective.target==owner) continue - else if(this.targets_stolen.Find(objective.target) == 0) + else if(targets_stolen.Find(objective.target) == 0) new_objective.owner = owner new_objective.target = objective.target new_objective.update_explanation_text() add_objective(new_objective) - this.targets_stolen += objective.target + targets_stolen += objective.target var/status_text = objective.check_completion() ? "neutralised" : "active" to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ") - this.last_man_standing = TRUE + last_man_standing = TRUE for(var/objective_ in owner.objectives) if(!is_internal_objective(objective_)) continue var/datum/objective/assassinate/internal/objective = objective_ if(!objective.check_completion()) - this.last_man_standing = FALSE + last_man_standing = FALSE return - if(this.last_man_standing) - if(this.syndicate) + if(last_man_standing) + if(syndicate) to_chat(owner.current," All the loyalist agents are dead, and no more is required of you. Die a glorious death, agent. ") else to_chat(owner.current," All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.") replace_escape_objective(owner) -/datum/antagonist/traitor/proc/iaa_process() - var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA +/datum/antagonist/traitor/internal_affairs/proc/iaa_process() if(owner&&owner.current&&owner.current.stat!=DEAD) for(var/objective_ in owner.objectives) if(!is_internal_objective(objective_)) @@ -220,20 +189,18 @@ else if(objective.stolen) var/fail_msg = "Your sensors tell you that [objective.target.current.real_name], one of the targets you were meant to have killed, pulled one over on you, and is still alive - do the job properly this time! " - if(this.last_man_standing) - if(this.syndicate) + if(last_man_standing) + if(syndicate) fail_msg += " You no longer have permission to die. " else fail_msg += " The truth could still slip out!
    Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated." reinstate_escape_objective(owner) - this.last_man_standing = FALSE + last_man_standing = FALSE to_chat(owner.current, fail_msg) objective.stolen = FALSE -/datum/antagonist/traitor/proc/forge_iaa_objectives() - var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA +/datum/antagonist/traitor/internal_affairs/proc/forge_iaa_objectives() if(SSticker.mode.target_list.len && SSticker.mode.target_list[owner]) // Is a double agent - // Assassinate var/datum/mind/target_mind = SSticker.mode.target_list[owner] if(issilicon(target_mind.current)) @@ -241,6 +208,7 @@ destroy_objective.owner = owner destroy_objective.target = target_mind destroy_objective.update_explanation_text() + add_objective(destroy_objective) else var/datum/objective/assassinate/internal/kill_objective = new kill_objective.owner = owner @@ -253,31 +221,25 @@ employer = "The Syndicate" owner.special_role = TRAITOR_AGENT_ROLE special_role = TRAITOR_AGENT_ROLE - this.syndicate = TRUE + syndicate = TRUE forge_single_objective() - else ..() // Give them standard objectives. return -/datum/antagonist/traitor/human/internal_affairs/forge_traitor_objectives() +/datum/antagonist/traitor/internal_affairs/forge_traitor_objectives() forge_iaa_objectives() - var/datum/objective/escape/escape_objective = new + + var/objtype = traitor_kind == TRAITOR_HUMAN ? /datum/objective/escape : /datum/objective/survive + var/datum/objective/escape_objective = new objtype escape_objective.owner = owner add_objective(escape_objective) -/datum/antagonist/traitor/AI/internal_affairs/forge_traitor_objectives() - forge_iaa_objectives() - var/datum/objective/survive/survive_objective = new - survive_objective.owner = owner - add_objective(survive_objective) - -/datum/antagonist/traitor/proc/greet_iaa() - var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA - var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "embezzlement", "piloting under the influence", "dereliction of duty", "syndicate collaboration", "mutiny", "multiple homicides", "corporate espionage", "recieving bribes", "malpractice", "worship of prohbited life forms", "possession of profane texts", "murder", "arson", "insulting their manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence") +/datum/antagonist/traitor/internal_affairs/proc/greet_iaa() + var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "embezzlement", "piloting under the influence", "dereliction of duty", "syndicate collaboration", "mutiny", "multiple homicides", "corporate espionage", "receiving bribes", "malpractice", "worship of prohibited life forms", "possession of profane texts", "murder", "arson", "insulting their manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence") to_chat(owner.current, "You are the [special_role].") - if(this.syndicate) + if(syndicate) to_chat(owner.current, "Your target has been framed for [crime], and you have been tasked with eliminating them to prevent them defending themselves in court.") to_chat(owner.current, "Any damage you cause will be a further embarrassment to Nanotrasen, so you have no limits on collateral damage.") to_chat(owner.current, " You have been provided with a standard uplink to accomplish your task. ") @@ -289,13 +251,9 @@ to_chat(owner.current, "Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.") owner.announce_objectives() -/datum/antagonist/traitor/AI/internal_affairs/greet() +/datum/antagonist/traitor/internal_affairs/greet() greet_iaa() -/datum/antagonist/traitor/human/internal_affairs/greet() - greet_iaa() - - #undef PROB_ACTUAL_TRAITOR #undef PINPOINTER_EXTRA_RANDOM_RANGE #undef PINPOINTER_MINIMUM_RANGE diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index f3ea4ef2ea..9066759648 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -1,39 +1,23 @@ +#define TRAITOR_HUMAN "human" +#define TRAITOR_AI "AI" + /datum/antagonist/traitor name = "Traitor" roundend_category = "traitors" antagpanel_category = "Traitor" job_rank = ROLE_TRAITOR antag_moodlet = /datum/mood_event/focused - var/should_specialise = TRUE //do we split into AI and human, set to true on inital assignment only - var/ai_datum = /datum/antagonist/traitor/AI - var/human_datum = /datum/antagonist/traitor/human var/special_role = ROLE_TRAITOR var/employer = "The Syndicate" var/give_objectives = TRUE var/should_give_codewords = TRUE - - - -/datum/antagonist/traitor/human - show_in_antagpanel = FALSE - should_specialise = FALSE var/should_equip = TRUE - - -/datum/antagonist/traitor/AI - show_in_antagpanel = FALSE - should_specialise = FALSE - -/datum/antagonist/traitor/specialization(datum/mind/new_owner) - if(should_specialise) - if(new_owner.current && isAI(new_owner.current)) - return new ai_datum() - else - return new human_datum() - else - return ..() + var/traitor_kind = TRAITOR_HUMAN //Set on initial assignment /datum/antagonist/traitor/on_gain() + if(owner.current && isAI(owner.current)) + traitor_kind = TRAITOR_AI + SSticker.mode.traitors += owner owner.special_role = special_role if(give_objectives) @@ -56,19 +40,18 @@ traitor_mob.dna.add_mutation(CLOWNMUT) /datum/antagonist/traitor/on_removal() - SSticker.mode.traitors -= owner - if(!silent && owner.current) - to_chat(owner.current," You are no longer the [special_role]! ") - owner.special_role = null - ..() - -/datum/antagonist/traitor/AI/on_removal() - if(owner.current && isAI(owner.current)) + //Remove malf powers. + if(traitor_kind == TRAITOR_AI && owner.current && isAI(owner.current)) var/mob/living/silicon/ai/A = owner.current A.set_zeroth_law("") A.verbs -= /mob/living/silicon/ai/proc/choose_modules A.malf_picker.remove_malf_verbs(A) qdel(A.malf_picker) + + SSticker.mode.traitors -= owner + if(!silent && owner.current) + to_chat(owner.current," You are no longer the [special_role]! ") + owner.special_role = null ..() /datum/antagonist/traitor/proc/add_objective(var/datum/objective/O) @@ -80,9 +63,13 @@ objectives -= O /datum/antagonist/traitor/proc/forge_traitor_objectives() - return + switch(traitor_kind) + if(TRAITOR_AI) + forge_ai_objectives() + else + forge_human_objectives() -/datum/antagonist/traitor/human/forge_traitor_objectives() +/datum/antagonist/traitor/proc/forge_human_objectives() var/is_hijacker = FALSE if (GLOB.joined_player_list.len >= 30) // Less murderboning on lowpop thanks is_hijacker = prob(10) @@ -127,7 +114,7 @@ add_objective(escape_objective) return -/datum/antagonist/traitor/AI/forge_traitor_objectives() +/datum/antagonist/traitor/proc/forge_ai_objectives() var/objective_count = 0 if(prob(30)) @@ -142,9 +129,16 @@ var/datum/objective/survive/exist/exist_objective = new exist_objective.owner = owner add_objective(exist_objective) + + /datum/antagonist/traitor/proc/forge_single_objective() - return 0 -/datum/antagonist/traitor/human/forge_single_objective() //Returns how many objectives are added + switch(traitor_kind) + if(TRAITOR_AI) + return forge_single_AI_objective() + else + return forge_single_human_objective() + +/datum/antagonist/traitor/proc/forge_single_human_objective() //Returns how many objectives are added .=1 if(prob(50)) var/list/active_ais = active_ais() @@ -164,7 +158,7 @@ kill_objective.find_target() add_objective(kill_objective) else - if(prob(15) && !(locate(/datum/objective/download in owner.objectives))) + if(prob(15) && !(locate(/datum/objective/download) in owner.objectives) && !(owner.assigned_role in list("Research Director", "Scientist", "Roboticist"))) var/datum/objective/download/download_objective = new download_objective.owner = owner download_objective.gen_amount_goal() @@ -175,7 +169,7 @@ steal_objective.find_target() add_objective(steal_objective) -/datum/antagonist/traitor/AI/forge_single_objective() +/datum/antagonist/traitor/proc/forge_single_AI_objective() .=1 var/special_pick = rand(1,4) switch(special_pick) @@ -209,34 +203,41 @@ if(should_give_codewords) give_codewords() +/datum/antagonist/traitor/proc/update_traitor_icons_added(datum/mind/traitor_mind) + var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR] + traitorhud.join_hud(owner.current) + set_antag_hud(owner.current, "traitor") + +/datum/antagonist/traitor/proc/update_traitor_icons_removed(datum/mind/traitor_mind) + var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR] + traitorhud.leave_hud(owner.current) + set_antag_hud(owner.current, null) + /datum/antagonist/traitor/proc/finalize_traitor() - SSticker.mode.update_traitor_icons_added(owner) - return + switch(traitor_kind) + if(TRAITOR_AI) + add_law_zero() + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/malf.ogg', 100, FALSE, pressure_affected = FALSE) + owner.current.grant_language(/datum/language/codespeak) + if(TRAITOR_HUMAN) + if(should_equip) + equip(silent) + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/tatoralert.ogg', 100, FALSE, pressure_affected = FALSE) -/datum/antagonist/traitor/AI/finalize_traitor() - ..() - add_law_zero() - owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/malf.ogg', 100, FALSE, pressure_affected = FALSE) - owner.current.grant_language(/datum/language/codespeak) - -/datum/antagonist/traitor/AI/apply_innate_effects(mob/living/mob_override) +/datum/antagonist/traitor/apply_innate_effects(mob/living/mob_override) . = ..() + update_traitor_icons_added() var/mob/living/silicon/ai/A = mob_override || owner.current - if(istype(A)) + if(istype(A) && traitor_kind == TRAITOR_AI) A.hack_software = TRUE -/datum/antagonist/traitor/AI/remove_innate_effects(mob/living/mob_override) +/datum/antagonist/traitor/remove_innate_effects(mob/living/mob_override) . = ..() + update_traitor_icons_removed() var/mob/living/silicon/ai/A = mob_override || owner.current - if(istype(A)) + if(istype(A) && traitor_kind == TRAITOR_AI) A.hack_software = FALSE -/datum/antagonist/traitor/human/finalize_traitor() - ..() - if(should_equip) - equip(silent) - owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/tatoralert.ogg', 100, FALSE, pressure_affected = FALSE) - /datum/antagonist/traitor/proc/give_codewords() if(!owner.current) return @@ -251,7 +252,7 @@ to_chat(traitor_mob, "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe.") -/datum/antagonist/traitor/AI/proc/add_law_zero() +/datum/antagonist/traitor/proc/add_law_zero() var/mob/living/silicon/ai/killer = owner.current if(!killer || !istype(killer)) return @@ -263,12 +264,10 @@ killer.add_malf_picker() /datum/antagonist/traitor/proc/equip(var/silent = FALSE) - return + if(traitor_kind == TRAITOR_HUMAN) + owner.equip_traitor(employer, silent, src) -/datum/antagonist/traitor/human/equip(var/silent = FALSE) - owner.equip_traitor(employer, silent, src) - -/datum/antagonist/traitor/human/proc/assign_exchange_role() +/datum/antagonist/traitor/proc/assign_exchange_role() //set faction var/faction = "red" if(owner == SSticker.mode.exchange_blue) diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm index 4482629a2e..ff4f7276bc 100644 --- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -319,7 +319,6 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( name = "doomsday device" icon_state = "nuclearbomb_base" desc = "A weapon which disintegrates all organic life in a large area." - anchored = TRUE density = TRUE verb_exclaim = "blares" var/timing = FALSE @@ -533,7 +532,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( if(!is_station_level(AA.z)) continue AA.obj_flags |= EMAGGED - to_chat(owner, "All air alarm safeties on the station have been overriden. Air alarms may now use the Flood environmental mode.") + to_chat(owner, "All air alarm safeties on the station have been overridden. Air alarms may now use the Flood environmental mode.") owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, 0) @@ -556,6 +555,9 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( /datum/action/innate/ai/ranged/overload_machine/proc/detonate_machine(obj/machinery/M) if(M && !QDELETED(M)) + var/turf/T = get_turf(M) + message_admins("[ADMIN_LOOKUPFLW(usr)] overloaded [M.name] at [ADMIN_VERBOSEJMP(T)].") + log_game("[key_name(usr)] overloaded [M.name] at [AREACOORD(T)].") explosion(get_turf(M), 0, 2, 3, 0) if(M) //to check if the explosion killed it before we try to delete it qdel(M) @@ -623,7 +625,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( to_chat(ranged_ability_user, "You can only animate machines!") return if(!target.can_be_overridden() || is_type_in_typecache(target, GLOB.blacklisted_malf_machines)) - to_chat(ranged_ability_user, "That machine can't be overriden!") + to_chat(ranged_ability_user, "That machine can't be overridden!") return ranged_ability_user.playsound_local(ranged_ability_user, 'sound/misc/interference.ogg', 50, 0) attached_action.adjust_uses(-1) @@ -804,7 +806,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( desc = "[initial(desc)] There are [uses] reactivations remaining." -//Upgrade Camera Network: EMP-proofs all cameras, in addition to giving them x-ray vision. +//Upgrade Camera Network: EMP-proofs all cameras, in addition to giving them X-ray vision. /datum/AI_Module/large/upgrade_cameras module_name = "Upgrade Camera Network" mod_pick_name = "upgradecam" diff --git a/code/modules/antagonists/valentines/valentine.dm b/code/modules/antagonists/valentines/valentine.dm index 7e1effbaff..31e69b32c2 100644 --- a/code/modules/antagonists/valentines/valentine.dm +++ b/code/modules/antagonists/valentines/valentine.dm @@ -16,8 +16,17 @@ /datum/antagonist/valentine/on_gain() forge_objectives() + if(isliving(owner)) + var/mob/living/L = owner + L.apply_status_effect(STATUS_EFFECT_INLOVE, date) . = ..() +/datum/antagonist/valentine/on_removal() + . = ..() + if(isliving(owner)) + var/mob/living/L = owner + L.remove_status_effect(STATUS_EFFECT_INLOVE) + /datum/antagonist/valentine/greet() to_chat(owner, "You're on a date with [date.name]! Protect [date.p_them()] at all costs. This takes priority over all other loyalties.") diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 1427f5ab68..415d1318cb 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -98,8 +98,10 @@ icon_state = "reality" pixel_x = -96 pixel_y = -96 - grav_pull = 6 + dissipate = 0 + move_self = 0 consume_range = 3 + grav_pull = 4 current_size = STAGE_FOUR allowed_size = STAGE_FOUR @@ -107,6 +109,10 @@ move() eat() return + +/obj/singularity/wizard/mapped/admin_investigate_setup() + return + /////////////////////////////////////////Scrying/////////////////// /obj/item/scrying @@ -203,7 +209,7 @@ for(var/obj/item/I in H) H.dropItemToGround(I) - var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire) + var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionnaire) H.equip_to_slot_or_del(new hat(H), SLOT_HEAD) H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), SLOT_W_UNIFORM) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), SLOT_SHOES) @@ -277,7 +283,7 @@ if(BODY_ZONE_PRECISE_MOUTH) var/wgw = sanitize(input(user, "What would you like the victim to say", "Voodoo", null) as text) target.say(wgw) - log_game("[user][user.key] made [target][target.key] say [wgw] with a voodoo doll.") + log_game("[key_name(user)] made [key_name(target)] say [wgw] with a voodoo doll.") if(BODY_ZONE_PRECISE_EYES) user.set_machine(src) user.reset_perspective(target) diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index e26c1e6d39..50bc4f54a4 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -9,7 +9,7 @@ desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefact's power." w_class = WEIGHT_CLASS_TINY slot_flags = ITEM_SLOT_BELT - var/usability = 0 + var/usability = FALSE var/old_shard = FALSE var/spent = FALSE @@ -23,7 +23,7 @@ whatever spark it once held long extinguished." /obj/item/soulstone/anybody - usability = 1 + usability = TRUE /obj/item/soulstone/anybody/chaplain name = "mysterious old shard" @@ -63,8 +63,9 @@ if(!ishuman(M))//If target is not a human. return ..() if(iscultist(M)) - to_chat(user, "\"Come now, do not capture your bretheren's soul.\"") - return + if(iscultist(user)) + to_chat(user, "\"Come now, do not capture your bretheren's soul.\"") + return add_logs(user, M, "captured [M.name]'s soul", src) transfer_soul("VICTIM", M, user) @@ -82,7 +83,7 @@ /obj/item/soulstone/proc/release_shades(mob/user) for(var/mob/living/simple_animal/shade/A in src) A.status_flags &= ~GODMODE - A.canmove = 1 + A.canmove = TRUE A.forceMove(get_turf(user)) A.cancel_camera() icon_state = "soulstone" @@ -114,7 +115,7 @@ var/obj/item/soulstone/SS = O if(!iscultist(user) && !iswizard(user) && !SS.usability) to_chat(user, "An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly.") - user.Dizzy(120) + user.Dizzy(30) return SS.transfer_soul("CONSTRUCT",src,user) SS.was_used() @@ -128,15 +129,15 @@ switch(choice) if("FORCE") if(!iscarbon(target)) //TODO: Add sacrifice stoning for non-organics, just because you have no body doesnt mean you dont have a soul - return 0 + return FALSE if(contents.len) - return 0 + return FALSE var/mob/living/carbon/T = target if(T.client != null) for(var/obj/item/W in T) T.dropItemToGround(W) init_shade(T, user) - return 1 + return TRUE else to_chat(user, "Capture failed!: The soul has already fled its mortal frame. You attempt to bring it back...") return getCultGhost(T,user) @@ -149,7 +150,7 @@ to_chat(user, "\"This soul is mine. SACRIFICE THEM!\"") else to_chat(user, "The soulstone seems to reject this soul.") - return 0 + return FALSE if(contents.len) to_chat(user, "Capture failed!: The soulstone is full! Free an existing soul to make room.") else @@ -172,7 +173,7 @@ else T.forceMove(src) //put shade in stone T.status_flags |= GODMODE - T.canmove = 0 + T.canmove = FALSE T.health = T.maxHealth icon_state = "soulstone2" name = "soulstone: Shade of [T.real_name]" @@ -222,7 +223,7 @@ if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && SSticker && SSticker.mode) SSticker.mode.add_cultist(newstruct.mind, 0) if(iscultist(stoner) || cultoverride) - to_chat(newstruct, "You are still bound to serve the cult[stoner ? " and [stoner]":""], follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.") + to_chat(newstruct, "You are still bound to serve the cult[stoner ? " and [stoner]":""], follow [stoner ? stoner.p_their() : "their"] orders and help [stoner ? stoner.p_them() : "them"] complete [stoner ? stoner.p_their() : "their"] goals at all costs.") else if(stoner) to_chat(newstruct, "You are still bound to serve your creator, [stoner], follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.") newstruct.clear_alert("bloodsense") @@ -239,7 +240,7 @@ T.dust_animation() var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade(src) S.status_flags |= GODMODE //So they won't die inside the stone somehow - S.canmove = 0//Can't move out of the soul stone + S.canmove = FALSE//Can't move out of the soul stone S.name = "Shade of [T.real_name]" S.real_name = "Shade of [T.real_name]" S.key = T.key @@ -272,15 +273,15 @@ if(consenting_candidates.len) chosen_ghost = pick(consenting_candidates) if(!T) - return 0 + return FALSE if(!chosen_ghost) to_chat(U, "There were no spirits willing to become a shade.") - return 0 + return FALSE if(contents.len) //If they used the soulstone on someone else in the meantime - return 0 + return FALSE T.ckey = chosen_ghost.ckey for(var/obj/item/W in T) T.dropItemToGround(W) init_shade(T, U) qdel(T) - return 1 + return TRUE diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 3f94c65437..afefaa68c1 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -318,7 +318,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." item_path = /obj/item/scrying category = "Defensive" @@ -409,7 +409,7 @@ /datum/spellbook_entry/item/battlemage name = "Battlemage Armour" - desc = "An ensorcelled suit of armour, protected by a powerful shield. The shield can completly negate sixteen attacks before being permanently depleted." + desc = "An ensorceled suit of armour, protected by a powerful shield. The shield can completely negate sixteen attacks before being permanently depleted." item_path = /obj/item/clothing/suit/space/hardsuit/shielded/wizard limit = 1 category = "Defensive" @@ -452,7 +452,7 @@ /datum/spellbook_entry/summon/ghosts name = "Summon Ghosts" - desc = "Spook the crew out by making them see dead people. Be warned, ghosts are capricious and occasionally vindicative, and some will use their incredibly minor abilties to frustrate you." + desc = "Spook the crew out by making them see dead people. Be warned, ghosts are capricious and occasionally vindicative, and some will use their incredibly minor abilities to frustrate you." cost = 0 /datum/spellbook_entry/summon/ghosts/IsAvailible() @@ -589,22 +589,22 @@ switch(category) if("Offensive") dat += "Spells and items geared towards debilitating and destroying.

    " - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
    " + dat += "Items are not bound to you and can be stolen. Additionally they cannot typically be returned once purchased.
    " dat += "For spells: the number after the spell name is the cooldown time.
    " dat += "You can reduce this number by spending more points on the spell.
    " if("Defensive") - dat += "Spells and items geared towards improving your survivabilty or reducing foes' ability to attack.

    " - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
    " + dat += "Spells and items geared towards improving your survivability or reducing foes' ability to attack.

    " + dat += "Items are not bound to you and can be stolen. Additionally they cannot typically be returned once purchased.
    " dat += "For spells: the number after the spell name is the cooldown time.
    " dat += "You can reduce this number by spending more points on the spell.
    " if("Mobility") dat += "Spells and items geared towards improving your ability to move. It is a good idea to take at least one.

    " - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
    " + dat += "Items are not bound to you and can be stolen. Additionally they cannot typically be returned once purchased.
    " dat += "For spells: the number after the spell name is the cooldown time.
    " dat += "You can reduce this number by spending more points on the spell.
    " if("Assistance") - dat += "Spells and items geared towards bringing in outside forces to aid you or improving upon your other items and abilties.

    " - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
    " + dat += "Spells and items geared towards bringing in outside forces to aid you or improving upon your other items and abilities.

    " + dat += "Items are not bound to you and can be stolen. Additionally they cannot typically be returned once purchased.
    " dat += "For spells: the number after the spell name is the cooldown time.
    " dat += "You can reduce this number by spending more points on the spell.
    " if("Challenges") diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 25a0e804a4..d40666babb 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -52,7 +52,7 @@ if(I.use_tool(src, user, 0, volume=40)) status = TRUE GLOB.bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]" - message_admins("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]") + message_admins("[ADMIN_LOOKUPFLW(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]") to_chat(user, "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.") add_fingerprint(user) return TRUE @@ -117,7 +117,7 @@ if(isigniter(assembly.a_left) == isigniter(assembly.a_right)) return - if((src in user.get_equipped_items()) && !user.canUnEquip(src)) + if((src in user.get_equipped_items(TRUE)) && !user.canUnEquip(src)) to_chat(user, "[src] is stuck to you!") return diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index c60519b45e..2ac7f2e383 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -1,6 +1,7 @@ /obj/item/assembly/flash name = "flash" desc = "A powerful and versatile flashbulb device, with applications ranging from disorienting attackers to acting as visual receptors in robot production." + icon = 'icons/obj/device.dmi' icon_state = "flash" item_state = "flashtool" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' @@ -153,13 +154,15 @@ to_chat(user, "[src] emits a blinding light!") /obj/item/assembly/flash/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return if(!try_use_flash()) - return FALSE + return AOE_flash() burn_out() - . = ..() -/obj/item/assembly/flash/activate()//AOE flash on signal recieved +/obj/item/assembly/flash/activate()//AOE flash on signal received if(!..()) return AOE_flash() @@ -208,7 +211,7 @@ /obj/item/assembly/flash/armimplant name = "photon projector" - desc = "A high-powered photon projector implant normally used for lighting purposes, but also doubles as a flashbulb weapon. Self-repair protocals fix the flashbulb if it ever burns out." + desc = "A high-powered photon projector implant normally used for lighting purposes, but also doubles as a flashbulb weapon. Self-repair protocols fix the flashbulb if it ever burns out." var/flashcd = 20 var/overheat = 0 var/obj/item/organ/cyberimp/arm/flash/I = null diff --git a/code/modules/assembly/helpers.dm b/code/modules/assembly/helpers.dm index f1dc93b446..5ad5e129a0 100644 --- a/code/modules/assembly/helpers.dm +++ b/code/modules/assembly/helpers.dm @@ -13,4 +13,4 @@ Name: IsAssemblyHolder Desc: If true is an object that can hold an assemblyholder object */ /obj/proc/IsAssemblyHolder() - return FALSE + return FALSE \ No newline at end of file diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index 2aae7db5e2..1f62bfaaef 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -26,7 +26,7 @@ return FALSE//Cooldown check var/turf/location = get_turf(loc) if(location) - location.hotspot_expose(1000,1000) + location.hotspot_expose(700,10) sparks.start() return TRUE diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 4a6c9d2db3..94359f0a10 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -33,6 +33,7 @@ /obj/item/assembly/infra/Destroy() STOP_PROCESSING(SSobj, src) + QDEL_NULL(listener) QDEL_LIST(beams) . = ..() @@ -166,8 +167,14 @@ listener = newloc.AddComponent(/datum/component/redirect, COMSIG_ATOM_EXITED, CALLBACK(src, .proc/check_exit)) /obj/item/assembly/infra/proc/check_exit(atom/movable/offender) - if(offender && ((offender.flags_1 & ABSTRACT_1) || offender == src)) + if(QDELETED(src)) return + if(offender == src || istype(offender,/obj/effect/beam/i_beam)) + return + if (offender && isitem(offender)) + var/obj/item/I = offender + if (I.item_flags & ABSTRACT) + return return refreshBeam() /obj/item/assembly/infra/ui_interact(mob/user)//TODO: change this this to the wire control panel @@ -216,10 +223,13 @@ var/obj/item/assembly/infra/master anchored = TRUE density = FALSE - flags_1 = ABSTRACT_1 pass_flags = PASSTABLE|PASSGLASS|PASSGRILLE|LETPASSTHROW /obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj) - if(istype(AM, /obj/effect/beam) || (AM.flags_1 & ABSTRACT_1)) + if(istype(AM, /obj/effect/beam)) return + if (isitem(AM)) + var/obj/item/I = AM + if (I.item_flags & ABSTRACT) + return master.trigger_beam(AM, get_turf(src)) diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index 7f6a1fab12..97b4543a05 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -34,27 +34,35 @@ update_icon() return TRUE +/obj/item/assembly/prox_sensor/on_detach() + . = ..() + if(!.) + return + else + proximity_monitor.SetHost(src,src) + + /obj/item/assembly/prox_sensor/toggle_secure() secured = !secured if(!secured) if(scanning) toggle_scan() - proximity_monitor.host = src + proximity_monitor.SetHost(src,src) timing = FALSE STOP_PROCESSING(SSobj, src) else START_PROCESSING(SSobj, src) - proximity_monitor.host = loc + proximity_monitor.SetHost(loc,src) update_icon() return secured + /obj/item/assembly/prox_sensor/HasProximity(atom/movable/AM as mob|obj) if (istype(AM, /obj/effect/beam)) return sense() - /obj/item/assembly/prox_sensor/proc/sense() if(!scanning || !secured || next_activate > world.time) return FALSE diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 42188bba9f..8959029b9b 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -24,7 +24,7 @@ return MANUAL_SUICIDE /obj/item/assembly/signaler/proc/manual_suicide(mob/living/carbon/user) - user.visible_message("[user]'s \the [src] recieves a signal, killing [user.p_them()] instantly!") + user.visible_message("[user]'s \the [src] receives a signal, killing [user.p_them()] instantly!") user.adjustOxyLoss(200)//it sends an electrical pulse to their heart, killing them. or something. user.death(0) @@ -158,21 +158,21 @@ Code: // Embedded signaller used in grenade construction. // It's necessary because the signaler doens't have an off state. // Generated during grenade construction. -Sayu -/obj/item/assembly/signaler/reciever +/obj/item/assembly/signaler/receiver var/on = FALSE -/obj/item/assembly/signaler/reciever/proc/toggle_safety() +/obj/item/assembly/signaler/receiver/proc/toggle_safety() on = !on -/obj/item/assembly/signaler/reciever/activate() +/obj/item/assembly/signaler/receiver/activate() toggle_safety() return TRUE -/obj/item/assembly/signaler/reciever/examine(mob/user) +/obj/item/assembly/signaler/receiver/examine(mob/user) ..() to_chat(user, "The radio receiver is [on?"on":"off"].") -/obj/item/assembly/signaler/reciever/receive_signal(datum/signal/signal) +/obj/item/assembly/signaler/receiver/receive_signal(datum/signal/signal) if(!on) return return ..(signal) @@ -186,6 +186,7 @@ Code: item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + resistance_flags = FIRE_PROOF var/anomaly_type = /obj/effect/anomaly /obj/item/assembly/signaler/anomaly/receive_signal(datum/signal/signal) diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index a3c9c68d55..ede69a6b22 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -42,6 +42,11 @@ active_hotspot.just_spawned = (current_cycle < SSair.times_fired) //remove just_spawned protection if no longer processing this cell SSair.add_to_active(src, 0) + else + var/datum/gas_mixture/heating = air_contents.remove_ratio(exposed_volume/air_contents.volume) + heating.temperature = exposed_temperature + heating.react() + assume_air(heating) return igniting //This is the icon for fire on turfs, also helps for nurturing small fires until they are full tile @@ -231,7 +236,7 @@ else chance_of_deletion = 100 if(prob(chance_of_deletion)) - T.ScrapeAway() + T.Melt() else T.to_be_destroyed = FALSE T.max_fire_temperature_sustained = 0 @@ -256,4 +261,4 @@ . = ..() if(!isliving(loc)) return INITIALIZE_HINT_QDEL -#undef INSUFFICIENT \ No newline at end of file +#undef INSUFFICIENT diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index 8acf6b095e..104879b168 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -100,28 +100,38 @@ if (atmos_overlay_types) for(var/overlay in atmos_overlay_types-new_overlay_types) //doesn't remove overlays that would only be added - vars["vis_contents"] -= overlay + vis_contents -= overlay - if (new_overlay_types.len) + if (length(new_overlay_types)) if (atmos_overlay_types) - vars["vis_contents"] += new_overlay_types - atmos_overlay_types //don't add overlays that already exist + vis_contents += new_overlay_types - atmos_overlay_types //don't add overlays that already exist else - vars["vis_contents"] += new_overlay_types + vis_contents += new_overlay_types UNSETEMPTY(new_overlay_types) src.atmos_overlay_types = new_overlay_types /turf/open/proc/tile_graphic() - . = new /list + var/static/list/nonoverlaying_gases = typecache_of_gases_with_no_overlays() if(air) + . = new /list var/list/gases = air.gases for(var/id in gases) + if (nonoverlaying_gases[id]) + continue var/gas = gases[id] var/gas_meta = gas[GAS_META] var/gas_overlay = gas_meta[META_GAS_OVERLAY] if(gas_overlay && gas[MOLES] > gas_meta[META_GAS_MOLES_VISIBLE]) . += gas_overlay +/proc/typecache_of_gases_with_no_overlays() + . = list() + for (var/gastype in subtypesof(/datum/gas)) + var/datum/gas/gasvar = gastype + if (!initial(gasvar.gas_overlay)) + .[gastype] = TRUE + /////////////////////////////SIMULATION/////////////////////////////////// #define LAST_SHARE_CHECK \ @@ -238,9 +248,6 @@ if (!M.anchored && !M.pulledby && M.last_high_pressure_movement_air_cycle < SSair.times_fired) M.experience_pressure_difference(pressure_difference, pressure_direction) -/turf/closed/proc/high_pressure_movements() - return - /atom/movable/var/pressure_resistance = 10 /atom/movable/var/last_high_pressure_movement_air_cycle = 0 diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 6e78256c87..f2bb51159c 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -285,8 +285,6 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) return 1 /datum/gas_mixture/share(datum/gas_mixture/sharer, atmos_adjacent_turfs = 4) - if(!sharer) - return 0 var/list/cached_gases = gases var/list/sharer_gases = sharer.gases @@ -322,7 +320,7 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) if(delta > 0) heat_capacity_self_to_sharer += gas_heat_capacity else - heat_capacity_sharer_to_self -= gas_heat_capacity //subtract here instead of adding the absolute value because we know that delta is negative. saves a proc call. + heat_capacity_sharer_to_self -= gas_heat_capacity //subtract here instead of adding the absolute value because we know that delta is negative. gas[MOLES] -= delta sharergas[MOLES] += delta @@ -348,8 +346,7 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) if(abs(new_sharer_heat_capacity/old_sharer_heat_capacity - 1) < 0.1) // <10% change in sharer heat capacity temperature_share(sharer, OPEN_HEAT_TRANSFER_COEFFICIENT) - var/list/unique_gases = cached_gases ^ sharer_gases - if(unique_gases.len) //if all gases were present in both mixtures, we know that no gases are 0 + if(length(cached_gases ^ sharer_gases)) //if all gases were present in both mixtures, we know that no gases are 0 garbage_collect(cached_gases - sharer_gases) //any gases the sharer had, we are guaranteed to have. gases that it didn't have we are not. sharer.garbage_collect(sharer_gases - cached_gases) //the reverse is equally true sharer.after_share(src, atmos_adjacent_turfs) @@ -358,8 +355,7 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) TOTAL_MOLES(cached_gases,our_moles) var/their_moles TOTAL_MOLES(sharer_gases,their_moles) - var/delta_pressure = temperature_archived*(our_moles + moved_moles) - sharer.temperature_archived*(their_moles - moved_moles) - return delta_pressure * R_IDEAL_GAS_EQUATION / volume + return (temperature_archived*(our_moles + moved_moles) - sharer.temperature_archived*(their_moles - moved_moles)) * R_IDEAL_GAS_EQUATION / volume /datum/gas_mixture/after_share(datum/gas_mixture/sharer, atmos_adjacent_turfs = 4) return diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index 12ad70a9e3..9d0b5dd8a4 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -43,6 +43,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g var/moles_visible = null var/dangerous = FALSE //currently used by canisters var/fusion_power = 0 //How much the gas accelerates a fusion reaction + /datum/gas/oxygen id = "o2" specific_heat = 20 @@ -57,7 +58,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g id = "co2" specific_heat = 30 name = "Carbon Dioxide" - fusion_power = 2 + fusion_power = 3 /datum/gas/plasma id = "plasma" @@ -73,6 +74,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g name = "Water Vapor" gas_overlay = "water_vapor" moles_visible = MOLES_GAS_VISIBLE + fusion_power = 4 /datum/gas/hypernoblium id = "nob" @@ -89,7 +91,6 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g gas_overlay = "nitrous_oxide" moles_visible = 1 dangerous = TRUE - fusion_power = 2 /datum/gas/nitryl id = "no2" @@ -98,7 +99,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g gas_overlay = "nitryl" moles_visible = MOLES_GAS_VISIBLE dangerous = TRUE - fusion_power = 1.5 + fusion_power = 10 /datum/gas/tritium id = "tritium" @@ -107,13 +108,15 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g gas_overlay = "tritium" moles_visible = MOLES_GAS_VISIBLE dangerous = TRUE - fusion_power = 2 + fusion_power = 1 + /datum/gas/bz id = "bz" specific_heat = 20 name = "BZ" dangerous = TRUE - fusion_power = 2 + fusion_power = 15 + /datum/gas/stimulum id = "stim" specific_heat = 5 @@ -129,6 +132,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g /obj/effect/overlay/gas icon = 'icons/effects/tile_effects.dmi' mouse_opacity = MOUSE_OPACITY_TRANSPARENT + anchored = TRUE // should only appear in vis_contents, but to be safe layer = FLY_LAYER appearance_flags = TILE_BOUND diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index dd953dcb11..67836746fa 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -4,15 +4,15 @@ #define PLASMA_MINIMUM_OXYGEN_NEEDED 2 #define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 30 #define FIRE_CARBON_ENERGY_RELEASED 100000 //Amount of heat released per mole of burnt carbon into the tile -#define FIRE_HYDROGEN_ENERGY_RELEASED 280000 // Amount of heat released per mole of burnt hydrogen and/or tritium(hydrogen isotope) +#define FIRE_HYDROGEN_ENERGY_RELEASED 280000 //Amount of heat released per mole of burnt hydrogen and/or tritium(hydrogen isotope) #define FIRE_PLASMA_ENERGY_RELEASED 3000000 //Amount of heat released per mole of burnt plasma into the tile //General assmos defines. #define WATER_VAPOR_FREEZE 200 #define NITRYL_FORMATION_ENERGY 100000 #define TRITIUM_BURN_OXY_FACTOR 100 #define TRITIUM_BURN_TRIT_FACTOR 10 -#define TRITIUM_BURN_RADIOACTIVITY_FACTOR 50000 //The neutrons gotta go somewhere. Completely arbitrary number. -#define TRITIUM_MINIMUM_RADIATION_ENERGY 0.1 //minimum 0.01 moles trit or 10 moles oxygen to start producing rads +#define TRITIUM_BURN_RADIOACTIVITY_FACTOR 50000 //The neutrons gotta go somewhere. Completely arbitrary number. +#define TRITIUM_MINIMUM_RADIATION_ENERGY 0.1 //minimum 0.01 moles trit or 10 moles oxygen to start producing rads #define SUPER_SATURATION_THRESHOLD 96 #define STIMULUM_HEAT_SCALE 100000 #define STIMULUM_FIRST_RISE 0.65 @@ -20,14 +20,38 @@ #define STIMULUM_SECOND_RISE 0.0009 #define STIMULUM_ABSOLUTE_DROP 0.00000335 #define REACTION_OPPRESSION_THRESHOLD 5 - //Plasma fusion properties -#define PLASMA_BINDING_ENERGY 3000000 -#define MAX_CATALYST_EFFICENCY 9 -#define PLASMA_FUSED_COEFFICENT 0.08 -#define CATALYST_COEFFICENT 0.01 -#define FUSION_PURITY_THRESHOLD 0.95 -#define FUSION_HEAT_DROPOFF (20000+T0C) -#define NOBLIUM_FORMATION_ENERGY 2e9 //1 Mole of Noblium takes the planck energy to condense. +#define NOBLIUM_FORMATION_ENERGY 2e9 //1 Mole of Noblium takes the planck energy to condense. +//Plasma fusion properties +#define FUSION_ENERGY_THRESHOLD 3e9 //Amount of energy it takes to start a fusion reaction +#define FUSION_TEMPERATURE_THRESHOLD 1000 //Temperature required to start a fusion reaction +#define FUSION_MOLE_THRESHOLD 250 //Mole count required (tritium/plasma) to start a fusion reaction +#define FUSION_RELEASE_ENERGY_SUPER 3e9 //Amount of energy released in the fusion process, super tier +#define FUSION_RELEASE_ENERGY_HIGH 1e9 //Amount of energy released in the fusion process, high tier +#define FUSION_RELEASE_ENERGY_MID 5e8 //Amount of energy released in the fusion process, mid tier +#define FUSION_RELEASE_ENERGY_LOW 1e8 //Amount of energy released in the fusion process, low tier +#define FUSION_MEDIATION_FACTOR 80 //Arbitrary +#define FUSION_SUPER_TIER 50 //anything above this is super tier +#define FUSION_HIGH_TIER 20 //anything above this and below 50 is high tier +#define FUSION_MID_TIER 5 //anything above this and below 20 is mid tier - below this is low tier, but that doesnt need a define +#define FUSION_ENERGY_DIVISOR_SUPER 25 +#define FUSION_ENERGY_DIVISOR_HIGH 20 +#define FUSION_ENERGY_DIVISOR_MID 10 +#define FUSION_ENERGY_DIVISOR_LOW 2 +#define FUSION_GAS_CREATION_FACTOR_SUPER 0.20 //stimulum and pluoxium - 40% in total +#define FUSION_GAS_CREATION_FACTOR_HIGH 0.60 //trit - one gas, so its higher than the other two - 60% in total +#define FUSION_GAS_CREATION_FACTOR_MID 0.45 //BZ and N2O - 90% in total +#define FUSION_GAS_CREATION_FACTOR_LOW 0.48 //O2 and CO2 - 96% in total +#define FUSION_MID_TIER_RAD_PROB_FACTOR 2 //probability of radpulse is power ratio * this for whatever tier +#define FUSION_LOW_TIER_RAD_PROB_FACTOR 5 +#define FUSION_EFFICIENCY_BASE 60 //used in the fusion efficiency calculations +#define FUSION_EFFICIENCY_DIVISOR 0.6 //ditto +#define FUSION_RADIATION_FACTOR 15000 //horizontal asymptote +#define FUSION_RADIATION_CONSTANT 30 //equation is form of (ax) / (x + b), where a = radiation factor and b = radiation constant (https://www.desmos.com/calculator/4i1f296phl) +#define FUSION_VOLUME_SUPER 100 //volume of the sound the fusion noises make +#define FUSION_VOLUME_HIGH 50 +#define FUSION_VOLUME_MID 25 +#define FUSION_VOLUME_LOW 10 + /proc/init_gas_reactions() var/list/reaction_types = list() @@ -64,7 +88,7 @@ /datum/gas_reaction/nobliumsupression priority = INFINITY - name = "Hyper-Noblium Reaction Supression" + name = "Hyper-Noblium Reaction Suppression" id = "nobstop" /datum/gas_reaction/nobliumsupression/init_reqs() @@ -111,7 +135,7 @@ var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow var/temperature = air.temperature var/list/cached_results = air.reaction_results - cached_results[id] = 0 + cached_results["fire"] = 0 var/turf/open/location = isturf(holder) ? holder : null var/burned_fuel = 0 @@ -131,7 +155,7 @@ ASSERT_GAS(/datum/gas/water_vapor, air) //oxygen+more-or-less hydrogen=H2O cached_gases[/datum/gas/water_vapor][MOLES] += burned_fuel/TRITIUM_BURN_OXY_FACTOR - cached_results[id] += burned_fuel + cached_results["fire"] += burned_fuel if(energy_released > 0) var/new_heat_capacity = air.heat_capacity() @@ -148,7 +172,7 @@ item.temperature_expose(air, temperature, CELL_VOLUME) location.temperature_expose(air, temperature, CELL_VOLUME) - return cached_results[id] ? REACTING : NO_REACTION + return cached_results["fire"] ? REACTING : NO_REACTION //plasma combustion: combustion of oxygen and plasma (treated as hydrocarbons). creates hotspots. exothermic /datum/gas_reaction/plasmafire @@ -169,7 +193,7 @@ var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow var/temperature = air.temperature var/list/cached_results = air.reaction_results - cached_results[id] = 0 + cached_results["fire"] = 0 var/turf/open/location = isturf(holder) ? holder : null //Handle plasma burning @@ -206,7 +230,7 @@ energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate) - cached_results[id] += (plasma_burn_rate)*(1+oxygen_burn_rate) + cached_results["fire"] += (plasma_burn_rate)*(1+oxygen_burn_rate) if(energy_released > 0) var/new_heat_capacity = air.heat_capacity() @@ -223,20 +247,22 @@ item.temperature_expose(air, temperature, CELL_VOLUME) location.temperature_expose(air, temperature, CELL_VOLUME) - return cached_results[id] ? REACTING : NO_REACTION + return cached_results["fire"] ? REACTING : NO_REACTION -//fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again. +//fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again (and again). /datum/gas_reaction/fusion - exclude = TRUE + exclude = FALSE priority = 2 name = "Plasmic Fusion" id = "fusion" +//Since fusion isn't really intended to happen in successive chains, the requirements are very high /datum/gas_reaction/fusion/init_reqs() min_requirements = list( - "ENER" = PLASMA_BINDING_ENERGY * 1000, - /datum/gas/plasma = 50, - /datum/gas/carbon_dioxide = 1 + "TEMP" = FUSION_TEMPERATURE_THRESHOLD, + "ENER" = FUSION_ENERGY_THRESHOLD, + /datum/gas/plasma = FUSION_MOLE_THRESHOLD, + /datum/gas/tritium = FUSION_MOLE_THRESHOLD ) /datum/gas_reaction/fusion/react(datum/gas_mixture/air, datum/holder) @@ -250,46 +276,75 @@ location = get_turf(holder) var/old_heat_capacity = air.heat_capacity() - var/reaction_energy - var/mediation = 100*(air.heat_capacity()-(cached_gases[/datum/gas/plasma][MOLES]*cached_gases[/datum/gas/plasma][GAS_META][META_GAS_SPECIFIC_HEAT]))/(air.total_moles()-cached_gases[/datum/gas/plasma][MOLES]) //This is the average heat capacity of the mixture,not including plasma. + var/reaction_energy = 0 + + var/mediation = FUSION_MEDIATION_FACTOR*(air.heat_capacity()-(cached_gases[/datum/gas/plasma][MOLES]*cached_gases[/datum/gas/plasma][GAS_META][META_GAS_SPECIFIC_HEAT]))/(air.total_moles()-cached_gases[/datum/gas/plasma][MOLES]) //This is the average specific heat of the mixture,not including plasma. + + var/moles_excluding_plasma = air.total_moles() - cached_gases[/datum/gas/plasma][MOLES] + var/plasma_differential = (cached_gases[/datum/gas/plasma][MOLES] - moles_excluding_plasma) / air.total_moles() + var/reaction_efficiency = FUSION_EFFICIENCY_BASE ** -((plasma_differential ** 2) / FUSION_EFFICIENCY_DIVISOR) //https://www.desmos.com/calculator/6jjx3vdrvx + var/gases_fused = air.total_moles() + var/gas_power = 0 for (var/id in cached_gases) - gas_power += cached_gases[id][GAS_META][META_GAS_FUSION_POWER]*cached_gases[id][MOLES] - var/plasma_fused = 0 - var/power_ratio = min(gas_power/mediation,100)//100 is a lot, we really don't want to go over this. - if (power_ratio > 10) //Super-fusion. Fuses everything into one big atom which then turns to tritium instantly. Very dangerous, but super cool. - var/gases_fused = air.total_moles() - reaction_energy += gases_fused*PLASMA_BINDING_ENERGY*(gas_power/(mediation*100)) + gas_power += reaction_efficiency * (cached_gases[id][GAS_META][META_GAS_FUSION_POWER]*cached_gases[id][MOLES]) + + var/power_ratio = gas_power/mediation + var/radiation_power = (FUSION_RADIATION_FACTOR * power_ratio) / (power_ratio + FUSION_RADIATION_CONSTANT) //https://www.desmos.com/calculator/4i1f296phl + + if (power_ratio > FUSION_SUPER_TIER) //power ratio 50+: SUPER TIER. The gases become so energized that they fuse into stimulum and pluoxium, which is pretty nice! IF you can salvage them, which is going to be hard because this reaction is ridiculously dangerous. + reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_SUPER * (power_ratio / FUSION_ENERGY_DIVISOR_SUPER) for (var/id in cached_gases) cached_gases[id][MOLES] = 0 - air.assert_gas(/datum/gas/tritium) - cached_gases[/datum/gas/tritium][MOLES] += gases_fused - if (prob(power_ratio)) //You really don't want this to happen - empulse(location, power_ratio*0.5, power_ratio) - radiation_pulse(location, power_ratio*2000) - explosion(location,0,1,power_ratio*0.5,power_ratio,TRUE,TRUE)//Bypasses cap. Doesn't blow large hole in station, but produces moderate devestation for long ranges. Be careful with this. + air.assert_gases(/datum/gas/stimulum,/datum/gas/pluoxium) + cached_gases[/datum/gas/stimulum][MOLES] += gases_fused * FUSION_GAS_CREATION_FACTOR_SUPER //60% of the gas is converted to energy, 40% to stimulum and pluoxium + cached_gases[/datum/gas/pluoxium][MOLES] += gases_fused * FUSION_GAS_CREATION_FACTOR_SUPER + if (location) //It's going to happen regardless of whether you want it to or not + radiation_pulse(location, radiation_power * 2) + explosion(location,0,0,10,power_ratio,TRUE,TRUE)//A decent explosion with a huge shockwave. People WILL know you're doing fusion. + playsound(location, "sound/effects/supermatter.ogg", FUSION_VOLUME_SUPER, 0) - else if (power_ratio > 1) //Mediation is overpowered, fusion reaction starts to break down. - plasma_fused = cached_gases[/datum/gas/plasma][MOLES] - reaction_energy += plasma_fused*PLASMA_BINDING_ENERGY - cached_gases[/datum/gas/plasma][MOLES] -= plasma_fused - cached_gases[/datum/gas/carbon_dioxide][MOLES] = 0 + else if (power_ratio > FUSION_HIGH_TIER) //power ratio 20-50; High tier. Fuses into one big atom which then turns to tritium instantly. Very dangerous, but super cool. + reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_HIGH * (power_ratio / FUSION_ENERGY_DIVISOR_HIGH) + for (var/id in cached_gases) + cached_gases[id][MOLES] = 0 + cached_gases[/datum/gas/tritium][MOLES] += gases_fused * FUSION_GAS_CREATION_FACTOR_HIGH //40% of the gas is converted to energy, 60% to tritium + if (location) + if(prob(power_ratio)) //You really don't want this to happen. + radiation_pulse(location, radiation_power) + explosion(location,0,0,3,power_ratio * 0.5,TRUE,TRUE)//A tiny explosion with a large shockwave. People will know you're doing fusion. + playsound(location, "sound/effects/supermatter.ogg", FUSION_VOLUME_HIGH, 0) + else + playsound(location, "sound/effects/phasein.ogg", FUSION_VOLUME_HIGH, 0) + + else if (power_ratio > FUSION_MID_TIER) //power_ratio 5 to 20; Mediation is overpowered, fusion reaction starts to break down. + reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_MID * (power_ratio / FUSION_ENERGY_DIVISOR_MID) + for (var/id in cached_gases) + cached_gases[id][MOLES] = 0 air.assert_gases(/datum/gas/bz,/datum/gas/nitrous_oxide) - cached_gases[/datum/gas/bz][MOLES] += gas_power*0.05 - cached_gases[/datum/gas/nitrous_oxide][MOLES] += gas_power*0.05 + cached_gases[/datum/gas/bz][MOLES] += gases_fused * FUSION_GAS_CREATION_FACTOR_MID //10% of the gas is converted to energy, 90% to BZ and N2O + cached_gases[/datum/gas/nitrous_oxide][MOLES] += gases_fused * FUSION_GAS_CREATION_FACTOR_MID if (location) - empulse(location, mediation*0.002, mediation*0.004) - radiation_pulse(location, power_ratio*(reaction_energy)/(0.3*PLASMA_BINDING_ENERGY)) - else - reaction_energy += cached_gases[/datum/gas/plasma][MOLES]*PLASMA_BINDING_ENERGY*(gas_power/mediation) - air.assert_gas(/datum/gas/oxygen) - cached_gases[/datum/gas/oxygen][MOLES] += gas_power + cached_gases[/datum/gas/plasma][MOLES] - cached_gases[/datum/gas/plasma][MOLES] = 0 + if(prob(power_ratio * FUSION_MID_TIER_RAD_PROB_FACTOR)) //Still weak, but don't stand next to it unprotected + radiation_pulse(location, radiation_power * 0.5) + playsound(location, "sound/effects/supermatter.ogg", FUSION_VOLUME_MID, 0) + else + playsound(location, "sound/effects/phasein.ogg", FUSION_VOLUME_MID, 0) + + else //power ratio 0 to 5; Gas power is overpowered. Fusion isn't nearly as powerful. + reaction_energy += gases_fused * FUSION_RELEASE_ENERGY_LOW * (power_ratio / FUSION_ENERGY_DIVISOR_LOW) for (var/gas in cached_gases) - if (cached_gases[gas][GAS_META][META_GAS_FUSION_POWER]) - cached_gases[gas][MOLES] = 0 + cached_gases[gas][MOLES] = 0 + air.assert_gases(/datum/gas/oxygen, /datum/gas/carbon_dioxide) + cached_gases[/datum/gas/oxygen][MOLES] += gases_fused * FUSION_GAS_CREATION_FACTOR_LOW //4% of the gas is converted to energy, 94% to oxygen and CO2 + cached_gases[/datum/gas/carbon_dioxide][MOLES] += gases_fused * FUSION_GAS_CREATION_FACTOR_LOW if (location) - radiation_pulse(location, (reaction_energy)/(0.3*PLASMA_BINDING_ENERGY)) + if(prob(power_ratio * FUSION_LOW_TIER_RAD_PROB_FACTOR)) //Weak, but still something to look out for + radiation_pulse(location, radiation_power * 0.25) + playsound(location, "sound/effects/supermatter.ogg", FUSION_VOLUME_LOW, 0) + else + playsound(location, "sound/effects/phasein.ogg", FUSION_VOLUME_LOW, 0) + if(reaction_energy > 0) var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) @@ -336,7 +391,7 @@ /datum/gas_reaction/bzformation/init_reqs() min_requirements = list( - /datum/gas/tritium = 10, + /datum/gas/nitrous_oxide = 10, /datum/gas/plasma = 10 ) @@ -347,13 +402,13 @@ var/pressure = air.return_pressure() var/old_heat_capacity = air.heat_capacity() - var/reaction_efficency = min(1/((pressure/(0.1*ONE_ATMOSPHERE))*(max(cached_gases[/datum/gas/plasma][MOLES]/cached_gases[/datum/gas/tritium][MOLES],1))),cached_gases[/datum/gas/tritium][MOLES],cached_gases[/datum/gas/plasma][MOLES]/2) + var/reaction_efficency = min(1/((pressure/(0.1*ONE_ATMOSPHERE))*(max(cached_gases[/datum/gas/plasma][MOLES]/cached_gases[/datum/gas/nitrous_oxide][MOLES],1))),cached_gases[/datum/gas/nitrous_oxide][MOLES],cached_gases[/datum/gas/plasma][MOLES]/2) var/energy_released = 2*reaction_efficency*FIRE_CARBON_ENERGY_RELEASED - if ((cached_gases[/datum/gas/tritium][MOLES] - reaction_efficency < 0 )|| (cached_gases[/datum/gas/plasma][MOLES] - (2*reaction_efficency) < 0)) //Shouldn't produce gas from nothing. + if ((cached_gases[/datum/gas/nitrous_oxide][MOLES] - reaction_efficency < 0 )|| (cached_gases[/datum/gas/plasma][MOLES] - (2*reaction_efficency) < 0)) //Shouldn't produce gas from nothing. return NO_REACTION ASSERT_GAS(/datum/gas/bz,air) cached_gases[/datum/gas/bz][MOLES] += reaction_efficency - cached_gases[/datum/gas/tritium][MOLES] -= reaction_efficency + cached_gases[/datum/gas/nitrous_oxide][MOLES] -= reaction_efficency cached_gases[/datum/gas/plasma][MOLES] -= 2*reaction_efficency @@ -367,6 +422,7 @@ priority = 5 name = "Stimulum formation" id = "stimformation" + /datum/gas_reaction/stimformation/init_reqs() min_requirements = list( /datum/gas/tritium = 30, @@ -441,10 +497,4 @@ #undef STIMULUM_SECOND_RISE #undef STIMULUM_ABSOLUTE_DROP #undef REACTION_OPPRESSION_THRESHOLD -#undef PLASMA_BINDING_ENERGY -#undef MAX_CATALYST_EFFICENCY -#undef PLASMA_FUSED_COEFFICENT -#undef CATALYST_COEFFICENT -#undef FUSION_PURITY_THRESHOLD -#undef FUSION_HEAT_DROPOFF #undef NOBLIUM_FORMATION_ENERGY diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 7bfacbee26..6e6355ed72 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -61,7 +61,6 @@ desc = "A machine that monitors atmosphere levels. Goes off if the area is dangerous." icon = 'icons/obj/monitors.dmi' icon_state = "alarm0" - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 4 active_power_usage = 8 diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index fdb59ec1cf..7d095869cb 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -38,6 +38,7 @@ Pipelines + Other Objects -> Pipe network var/construction_type var/pipe_state //icon_state as a pipe item + var/on = FALSE /obj/machinery/atmospherics/examine(mob/user) ..() @@ -124,7 +125,7 @@ Pipelines + Other Objects -> Pipe network pixel_y = (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y layer = initial(layer) + ((piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE) -/obj/machinery/atmospherics/proc/can_be_node(obj/machinery/atmospherics/target) +/obj/machinery/atmospherics/proc/can_be_node(obj/machinery/atmospherics/target, iteration) return connection_check(target, piping_layer) //Find a connecting /obj/machinery/atmospherics in specified direction diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index 7f37e049dd..dd593c53bc 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -1,24 +1,41 @@ //node2, air2, network2 correspond to input //node1, air1, network1 correspond to output - +#define CIRCULATOR_HOT 0 +#define CIRCULATOR_COLD 1 /obj/machinery/atmospherics/components/binary/circulator name = "circulator/heat exchanger" desc = "A gas circulator pump and heat exchanger." - icon_state = "circ1-off" + icon_state = "circ-off-0" - var/side = CIRC_LEFT - var/status = 0 + var/active = FALSE var/last_pressure_delta = 0 - pipe_flags = PIPING_ONE_PER_TURF + pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY - anchored = TRUE density = TRUE - var/global/const/CIRC_LEFT = 1 - var/global/const/CIRC_RIGHT = 2 + var/flipped = 0 + var/mode = CIRCULATOR_HOT + var/obj/machinery/power/generator/generator + +//default cold circ for mappers +/obj/machinery/atmospherics/components/binary/circulator/cold + mode = CIRCULATOR_COLD + +/obj/machinery/atmospherics/components/binary/circulator/Initialize(mapload) + .=..() + component_parts = list(new /obj/item/circuitboard/machine/circulator) + +/obj/machinery/atmospherics/components/binary/circulator/ComponentInitialize() + . = ..() + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ) + +/obj/machinery/atmospherics/components/binary/circulator/Destroy() + if(generator) + disconnectFromGenerator() + return ..() /obj/machinery/atmospherics/components/binary/circulator/proc/return_transfer_air() @@ -57,11 +74,115 @@ /obj/machinery/atmospherics/components/binary/circulator/update_icon() if(!is_operational()) - icon_state = "circ[side]-p" + icon_state = "circ-p-[flipped]" else if(last_pressure_delta > 0) if(last_pressure_delta > ONE_ATMOSPHERE) - icon_state = "circ[side]-run" + icon_state = "circ-run-[flipped]" else - icon_state = "circ[side]-slow" + icon_state = "circ-slow-[flipped]" else - icon_state = "circ[side]-off" + icon_state = "circ-off-[flipped]" + +/obj/machinery/atmospherics/components/binary/circulator/wrench_act(mob/living/user, obj/item/I) + if(!panel_open) + return + anchored = !anchored + I.play_tool_sound(src) + if(generator) + disconnectFromGenerator() + to_chat(user, "You [anchored?"secure":"unsecure"] [src].") + + + var/obj/machinery/atmospherics/node1 = nodes[1] + var/obj/machinery/atmospherics/node2 = nodes[2] + + if(node1) + node1.disconnect(src) + nodes[1] = null + nullifyPipenet(parents[1]) + if(node2) + node2.disconnect(src) + nodes[2] = null + nullifyPipenet(parents[2]) + + if(anchored) + SetInitDirections() + atmosinit() + node1 = nodes[1] + if(node1) + node1.atmosinit() + node1.addMember(src) + node2 = nodes[2] + if(node2) + node2.atmosinit() + node2.addMember(src) + build_network() + + return TRUE + +/obj/machinery/atmospherics/components/binary/circulator/SetInitDirections() + switch(dir) + if(NORTH, SOUTH) + initialize_directions = EAST|WEST + if(EAST, WEST) + initialize_directions = NORTH|SOUTH + +/obj/machinery/atmospherics/components/binary/circulator/getNodeConnects() + if(flipped) + return list(turn(dir, 270), turn(dir, 90)) + return list(turn(dir, 90), turn(dir, 270)) + +/obj/machinery/atmospherics/components/binary/circulator/can_be_node(obj/machinery/atmospherics/target) + if(anchored) + return ..(target) + return FALSE + +/obj/machinery/atmospherics/components/binary/circulator/multitool_act(mob/living/user, obj/item/I) + if(generator) + disconnectFromGenerator() + mode = !mode + to_chat(user, "You set [src] to [mode?"cold":"hot"] mode.") + return TRUE + +/obj/machinery/atmospherics/components/binary/circulator/screwdriver_act(mob/user, obj/item/I) + panel_open = !panel_open + I.play_tool_sound(src) + to_chat(user, "You [panel_open?"open":"close"] the panel on [src].") + return TRUE + +/obj/machinery/atmospherics/components/binary/circulator/crowbar_act(mob/user, obj/item/I) + default_deconstruction_crowbar(I) + return TRUE + +/obj/machinery/atmospherics/components/binary/circulator/on_deconstruction() + if(generator) + disconnectFromGenerator() + +/obj/machinery/atmospherics/components/binary/circulator/proc/disconnectFromGenerator() + if(mode) + generator.cold_circ = null + else + generator.hot_circ = null + generator.update_icon() + generator = null + +/obj/machinery/atmospherics/components/binary/circulator/setPipingLayer(new_layer) + ..() + pixel_x = 0 + pixel_y = 0 + +/obj/machinery/atmospherics/components/binary/circulator/verb/circulator_flip() + set name = "Flip" + set category = "Object" + set src in oview(1) + + if(!ishuman(usr)) + return + + if(anchored) + to_chat(usr, "[src] is anchored!") + return + + flipped = !flipped + to_chat(usr, "You flip [src].") + update_icon() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index 5940cf6209..879668e4d7 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -20,7 +20,6 @@ Acts like a normal vent, but has an input AND output. var/id = null var/datum/radio_frequency/radio_connection - var/on = FALSE var/pump_direction = 1 //0 = siphoning, 1 = releasing var/external_pressure_bound = ONE_ATMOSPHERE @@ -31,12 +30,12 @@ Acts like a normal vent, but has an input AND output. //EXT_BOUND: Do not pass external_pressure_bound //INPUT_MIN: Do not pass input_pressure_min //OUTPUT_MAX: Do not pass output_pressure_max - + /obj/machinery/atmospherics/components/binary/dp_vent_pump/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X pixel_y = -PIPING_LAYER_P_Y - + /obj/machinery/atmospherics/components/binary/dp_vent_pump/layer3 piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X @@ -45,12 +44,12 @@ Acts like a normal vent, but has an input AND output. /obj/machinery/atmospherics/components/binary/dp_vent_pump/on on = TRUE icon_state = "dpvent_map_on" - + /obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X pixel_y = -PIPING_LAYER_P_Y - + /obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer3 piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X @@ -62,12 +61,24 @@ Acts like a normal vent, but has an input AND output. /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume name = "large dual-port air vent" - + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix + id = INCINERATOR_TOXMIX_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos + id = INCINERATOR_ATMOS_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava + id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X pixel_y = -PIPING_LAYER_P_Y - + /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer3 piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X @@ -76,12 +87,12 @@ Acts like a normal vent, but has an input AND output. /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on on = TRUE icon_state = "dpvent_map_on" - + /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X pixel_y = -PIPING_LAYER_P_Y - + /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer3 piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X @@ -216,7 +227,7 @@ Acts like a normal vent, but has an input AND output. pressure_checks &= ~1 pump_direction = 0 - if("stabalize" in signal.data) + if("stabilize" in signal.data) pressure_checks |= 1 pump_direction = 1 diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index e3f36c0126..329ef33637 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -16,7 +16,6 @@ Passive gate is similar to the regular pump except: interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_SET_MACHINE - var/on = FALSE var/target_pressure = ONE_ATMOSPHERE var/frequency = 0 @@ -25,7 +24,7 @@ Passive gate is similar to the regular pump except: construction_type = /obj/item/pipe/directional pipe_state = "passivegate" - + /obj/machinery/atmospherics/components/binary/passive_gate/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 408ef19aa2..e7df188f70 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -19,7 +19,6 @@ Thus, the two variables affect pump operation are set in New(): can_unwrench = TRUE - var/on = FALSE var/target_pressure = ONE_ATMOSPHERE var/frequency = 0 @@ -28,7 +27,7 @@ Thus, the two variables affect pump operation are set in New(): construction_type = /obj/item/pipe/directional pipe_state = "pump" - + /obj/machinery/atmospherics/components/binary/pump/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -42,7 +41,7 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/components/binary/pump/on on = TRUE icon_state = "pump_on_map" - + /obj/machinery/atmospherics/components/binary/pump/on/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -52,7 +51,7 @@ Thus, the two variables affect pump operation are set in New(): piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X pixel_y = PIPING_LAYER_P_Y - + /obj/machinery/atmospherics/components/binary/pump/Destroy() SSradio.remove_object(src,frequency) if(radio_connection) @@ -133,8 +132,8 @@ Thus, the two variables affect pump operation are set in New(): switch(action) if("power") on = !on - investigate_log("Pump, [src.name], was turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]") + investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE if("pressure") var/pressure = params["pressure"] diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index 50f34e097f..f22ac62106 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -13,14 +13,13 @@ It's like a regular ol' straight pipe, but you can turn it on and off. var/frequency = 0 var/id = null - var/open = FALSE var/valve_type = "m" //lets us have a nice, clean, OOP update_icon_nopipes() construction_type = /obj/item/pipe/binary pipe_state = "mvalve" var/switching = FALSE - + /obj/machinery/atmospherics/components/binary/valve/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -31,15 +30,15 @@ It's like a regular ol' straight pipe, but you can turn it on and off. pixel_x = PIPING_LAYER_P_X pixel_y = PIPING_LAYER_P_Y -/obj/machinery/atmospherics/components/binary/valve/open - open = TRUE - -/obj/machinery/atmospherics/components/binary/valve/open/layer1 +/obj/machinery/atmospherics/components/binary/valve/on + on = TRUE + +/obj/machinery/atmospherics/components/binary/valve/on/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X pixel_y = -PIPING_LAYER_P_Y -/obj/machinery/atmospherics/components/binary/valve/open/layer3 +/obj/machinery/atmospherics/components/binary/valve/on/layer3 piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X pixel_y = PIPING_LAYER_P_Y @@ -47,11 +46,11 @@ It's like a regular ol' straight pipe, but you can turn it on and off. /obj/machinery/atmospherics/components/binary/valve/update_icon_nopipes(animation = 0) normalize_dir() if(animation) - flick("[valve_type]valve_[open][!open]",src) - icon_state = "[valve_type]valve_[open?"on":"off"]" + flick("[valve_type]valve_[on][!on]",src) + icon_state = "[valve_type]valve_[on?"on":"off"]" /obj/machinery/atmospherics/components/binary/valve/proc/open() - open = TRUE + on = TRUE update_icon_nopipes() update_parents() var/datum/pipeline/parent1 = parents[1] @@ -59,7 +58,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off. investigate_log("was opened by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) /obj/machinery/atmospherics/components/binary/valve/proc/close() - open = FALSE + on = FALSE update_icon_nopipes() investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) @@ -76,14 +75,10 @@ It's like a regular ol' straight pipe, but you can turn it on and off. return switching = TRUE sleep(10) - if(open) + if(on) close() else open() - var/turf/T = get_turf(src) - var/area/A = get_area(src) - investigate_log("Valve, [src.name], was manipiulated by [key_name(usr)] at [x], [y], [z], [A]", "atmos") - message_admins("Valve, [src.name], was manipulated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)], [A]") switching = FALSE /obj/machinery/atmospherics/components/binary/valve/digital // can be controlled by AI @@ -93,7 +88,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off. valve_type = "d" pipe_state = "dvalve" interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN | INTERACT_MACHINE_OPEN_SILICON - + /obj/machinery/atmospherics/components/binary/valve/digital/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -104,6 +99,19 @@ It's like a regular ol' straight pipe, but you can turn it on and off. pixel_x = PIPING_LAYER_P_X pixel_y = PIPING_LAYER_P_Y +/obj/machinery/atmospherics/components/binary/valve/digital/on + on = TRUE + +/obj/machinery/atmospherics/components/binary/valve/digital/on/layer1 + piping_layer = PIPING_LAYER_MIN + pixel_x = -PIPING_LAYER_P_X + pixel_y = -PIPING_LAYER_P_Y + +/obj/machinery/atmospherics/components/binary/valve/digital/on/layer3 + piping_layer = PIPING_LAYER_MAX + pixel_x = PIPING_LAYER_P_X + pixel_y = PIPING_LAYER_P_Y + /obj/machinery/atmospherics/components/binary/valve/digital/update_icon_nopipes(animation) if(!is_operational()) normalize_dir() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index 536e0f18a2..a3ecda947a 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -19,7 +19,6 @@ Thus, the two variables affect pump operation are set in New(): can_unwrench = TRUE - var/on = FALSE var/transfer_rate = MAX_TRANSFER_RATE var/frequency = 0 @@ -28,7 +27,7 @@ Thus, the two variables affect pump operation are set in New(): construction_type = /obj/item/pipe/directional pipe_state = "volumepump" - + /obj/machinery/atmospherics/components/binary/volume_pump/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -56,7 +55,7 @@ Thus, the two variables affect pump operation are set in New(): piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X pixel_y = PIPING_LAYER_P_Y - + /obj/machinery/atmospherics/components/binary/volume_pump/update_icon_nopipes() if(!is_operational()) icon_state = "volpump_off" @@ -80,7 +79,7 @@ Thus, the two variables affect pump operation are set in New(): if((input_starting_pressure < 0.01) || (output_starting_pressure > 9000)) return - var/transfer_ratio = min(1, transfer_rate/air1.volume) + var/transfer_ratio = transfer_rate/air1.volume var/datum/gas_mixture/removed = air1.remove_ratio(transfer_ratio) @@ -129,13 +128,10 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/components/binary/volume_pump/ui_act(action, params) if(..()) return - var/turf/T = get_turf(src) - var/area/A = get_area(src) switch(action) if("power") on = !on - investigate_log("Volume Pump, [src.name], was turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) - message_admins("Volume Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]") + investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE if("rate") var/rate = params["rate"] @@ -186,11 +182,6 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/components/binary/volume_pump/can_unwrench(mob/user) . = ..() - var/area/A = get_area(src) if(. && on && is_operational()) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE - else - investigate_log("Volume Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) - message_admins("Volume Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(usr)] at [A]") - return diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index c333651f5a..e31d96a0c2 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -73,6 +73,9 @@ Pipenet stuff; housekeeping P.build_pipeline(src) /obj/machinery/atmospherics/components/proc/nullifyPipenet(datum/pipeline/reference) + if(!reference) + CRASH("nullifyPipenet(null) called by [type] on [COORD(src)]") + return var/i = parents.Find(reference) reference.other_airs -= airs[i] reference.other_atmosmch -= src diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 8ec10f9d20..4101deb00c 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -4,7 +4,6 @@ desc = "Very useful for filtering gasses." density = FALSE can_unwrench = TRUE - var/on = FALSE var/target_pressure = ONE_ATMOSPHERE var/filter_type = null var/frequency = 0 @@ -22,11 +21,11 @@ piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X pixel_y = PIPING_LAYER_P_Y - + /obj/machinery/atmospherics/components/trinary/filter/flipped icon_state = "filter_off_f" flipped = TRUE - + /obj/machinery/atmospherics/components/trinary/filter/flipped/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -58,7 +57,7 @@ /obj/machinery/atmospherics/components/trinary/filter/atmos //Used for atmos waste loops on = TRUE icon_state = "filter_on" - + /obj/machinery/atmospherics/components/trinary/filter/atmos/n2 name = "nitrogen filter" filter_type = "n2" @@ -78,7 +77,7 @@ /obj/machinery/atmospherics/components/trinary/filter/atmos/flipped //This feels wrong, I know icon_state = "filter_on_f" flipped = TRUE - + /obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2 name = "nitrogen filter" filter_type = "n2" @@ -94,7 +93,7 @@ /obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma name = "plasma filter" filter_type = "plasma" - + /obj/machinery/atmospherics/components/trinary/filter/update_icon() cut_overlays() for(var/direction in GLOB.cardinals) diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index f0c30bfe28..4dd2972526 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -6,8 +6,6 @@ can_unwrench = TRUE desc = "Very useful for mixing gasses." - var/on = FALSE - var/target_pressure = ONE_ATMOSPHERE var/node1_concentration = 0.5 var/node2_concentration = 0.5 @@ -26,7 +24,7 @@ piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X pixel_y = PIPING_LAYER_P_Y - + /obj/machinery/atmospherics/components/trinary/mixer/flipped icon_state = "mixer_off_f" flipped = TRUE @@ -40,7 +38,7 @@ piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X pixel_y = PIPING_LAYER_P_Y - + /obj/machinery/atmospherics/components/trinary/mixer/airmix //For standard airmix to distro name = "air mixer" icon_state = "mixer_on" @@ -48,19 +46,19 @@ node2_concentration = O2STANDARD on = TRUE target_pressure = MAX_OUTPUT_PRESSURE - + /obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse node1_concentration = O2STANDARD node2_concentration = N2STANDARD - + /obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped icon_state = "mixer_on_f" flipped = TRUE - + /obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse node1_concentration = O2STANDARD node2_concentration = N2STANDARD - + /obj/machinery/atmospherics/components/trinary/mixer/update_icon() cut_overlays() for(var/direction in GLOB.cardinals) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 90c5641002..cca6c4d15a 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -5,7 +5,6 @@ icon = 'icons/obj/cryogenics.dmi' icon_state = "pod-off" density = TRUE - anchored = TRUE max_integrity = 350 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 30, "acid" = 30) layer = ABOVE_WINDOW_LAYER @@ -14,7 +13,6 @@ pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY occupant_typecache = list(/mob/living/carbon, /mob/living/simple_animal) - var/on = FALSE var/autoeject = FALSE var/volume = 100 diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index 2859ef29e6..b4c37a2140 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -6,7 +6,6 @@ can_unwrench = TRUE resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF //really helpful in building gas chambers for xenomorphs - var/on = FALSE var/injecting = 0 var/volume_rate = 50 @@ -19,7 +18,7 @@ layer = GAS_SCRUBBER_LAYER pipe_state = "injector" - + /obj/machinery/atmospherics/components/unary/outlet_injector/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -75,7 +74,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on on = TRUE - + /obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 2ff19218f5..5359e2324e 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -6,14 +6,12 @@ var/icon_state_on = "cold_on" var/icon_state_open = "cold_off" density = TRUE - anchored = TRUE max_integrity = 300 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 30) layer = OBJ_LAYER circuit = /obj/item/circuitboard/machine/thermomachine pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY - var/on = FALSE var/min_temperature = 0 var/max_temperature = 0 var/target_temperature = T20C @@ -164,11 +162,11 @@ max_temperature = T20C min_temperature = 170 //actual minimum temperature is defined by RefreshParts() circuit = /obj/item/circuitboard/machine/thermomachine/freezer - + /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on on = TRUE icon_state = "freezer_1" - + /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/Initialize() . = ..() if(target_temperature == initial(target_temperature)) @@ -193,7 +191,7 @@ /obj/machinery/atmospherics/components/unary/thermomachine/heater/on on = TRUE icon_state = "heater_1" - + /obj/machinery/atmospherics/components/unary/thermomachine/heater/RefreshParts() ..() var/L 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 4bb1960758..ced4855b1a 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -16,7 +16,6 @@ layer = GAS_SCRUBBER_LAYER var/id_tag = null - var/on = FALSE var/pump_direction = RELEASING var/pressure_checks = EXT_BOUND @@ -32,7 +31,7 @@ var/radio_filter_in pipe_state = "uvent" - + /obj/machinery/atmospherics/components/unary/vent_pump/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -46,7 +45,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on on = TRUE icon_state = "vent_map_on" - + /obj/machinery/atmospherics/components/unary/vent_pump/on/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -62,7 +61,7 @@ pressure_checks = INT_BOUND internal_pressure_bound = 4000 external_pressure_bound = 0 - + /obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -76,7 +75,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on on = TRUE icon_state = "vent_map_siphon_on" - + /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -126,8 +125,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/Destroy() var/area/A = get_area(src) - A.air_vent_names -= id_tag - A.air_vent_info -= id_tag + if (A) + A.air_vent_names -= id_tag + A.air_vent_info -= id_tag SSradio.remove_object(src,frequency) radio_connection = null @@ -136,7 +136,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/high_volume name = "large air vent" power_channel = EQUIP - + /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -150,7 +150,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on on = TRUE icon_state = "vent_map_on" - + /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -166,7 +166,7 @@ pressure_checks = INT_BOUND internal_pressure_bound = 2000 external_pressure_bound = 0 - + /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -180,7 +180,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on on = TRUE icon_state = "vent_map_siphon_on" - + /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -341,7 +341,7 @@ pressure_checks &= ~EXT_BOUND pump_direction = SIPHONING - if("stabalize" in signal.data) + if("stabilize" in signal.data) pressure_checks |= EXT_BOUND pump_direction = RELEASING @@ -399,7 +399,7 @@ user.visible_message("[user] welds the vent shut.", "You weld the vent shut.", "You hear welding.") welded = TRUE else - user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.") + user.visible_message("[user] unwelded the vent.", "You unweld the vent.", "You hear welding.") welded = FALSE update_icon() pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir) 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 c962eaad6d..7a207cbed5 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -14,7 +14,6 @@ layer = GAS_SCRUBBER_LAYER var/id_tag = null - var/on = FALSE var/scrubbing = SCRUBBING //0 = siphoning, 1 = scrubbing var/filter_types = list(/datum/gas/carbon_dioxide) @@ -29,7 +28,7 @@ var/radio_filter_in pipe_state = "scrubber" - + /obj/machinery/atmospherics/components/unary/vent_scrubber/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -52,7 +51,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on on = TRUE icon_state = "scrub_map_on" - + /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -65,15 +64,13 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy() var/area/A = get_area(src) - A.air_scrub_names -= id_tag - A.air_scrub_info -= id_tag + if (A) + A.air_scrub_names -= id_tag + A.air_scrub_info -= id_tag SSradio.remove_object(src,frequency) radio_connection = null - - for(var/I in adjacent_turfs) - I = null - + adjacent_turfs.Cut() return ..() /obj/machinery/atmospherics/components/unary/vent_scrubber/auto_use_power() @@ -304,6 +301,11 @@ if(. && on && is_operational()) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + +/obj/machinery/atmospherics/components/unary/vent_scrubber/examine(mob/user) + ..() + if(welded) + to_chat(user, "It seems welded shut.") /obj/machinery/atmospherics/components/unary/vent_scrubber/can_crawl_through() return !welded diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm index a4cc2eb337..cfaef38f6c 100644 --- a/code/modules/atmospherics/machinery/datum_pipeline.dm +++ b/code/modules/atmospherics/machinery/datum_pipeline.dm @@ -60,7 +60,7 @@ warning("build_pipeline(): [item.type] added to a pipenet while still having one. (pipes leading to the same spot stacking in one turf) Nearby: ([item.x], [item.y], [item.z])") pipenetwarnings -= 1 if(pipenetwarnings == 0) - warning("build_pipeline(): further messages about pipenets will be supressed") + warning("build_pipeline(): further messages about pipenets will be suppressed") members += item possible_expansions += item @@ -129,6 +129,9 @@ /obj/machinery/atmospherics/components/addMember(obj/machinery/atmospherics/A) var/datum/pipeline/P = returnPipenet(A) + if(!P) + CRASH("null.addMember() called by [type] on [COORD(src)]") + return P.addMember(A, src) @@ -219,7 +222,7 @@ continue GL += P.return_air() for(var/obj/machinery/atmospherics/components/binary/valve/V in P.other_atmosmch) - if(V.open) + if(V.on) PL |= V.parents[1] PL |= V.parents[2] for(var/obj/machinery/atmospherics/components/unary/portables_connector/C in P.other_atmosmch) diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index 9a310fb545..b0afefd58a 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/atmospherics/pipes/meter.dmi' icon_state = "meterX" layer = GAS_PUMP_LAYER - anchored = TRUE power_channel = ENVIRON use_power = IDLE_POWER_USE idle_power_usage = 2 diff --git a/code/modules/atmospherics/machinery/other/miner.dm b/code/modules/atmospherics/machinery/other/miner.dm index 61681c0b38..20251418bc 100644 --- a/code/modules/atmospherics/machinery/other/miner.dm +++ b/code/modules/atmospherics/machinery/other/miner.dm @@ -10,7 +10,6 @@ desc = "Gasses mined from the gas giant below (above?) flow out through this massive vent." icon = 'icons/obj/atmospherics/components/miners.dmi' icon_state = "miner" - anchored = TRUE density = FALSE resistance_flags = INDESTRUCTIBLE|ACID_PROOF|FIRE_PROOF var/spawn_id = null diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm index ee52d89e5b..b087859a47 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm @@ -1,7 +1,6 @@ /obj/machinery/atmospherics/pipe/heat_exchanging icon = 'icons/obj/atmospherics/pipes/heat.dmi' level = 2 - var/initialize_directions_he var/minimum_temperature_difference = 20 var/thermal_conductivity = WINDOW_HEAT_TRANSFER_COEFFICIENT color = "#404040" @@ -9,22 +8,18 @@ var/icon_temperature = T20C //stop small changes in temperature causing icon refresh resistance_flags = LAVA_PROOF | FIRE_PROOF -/obj/machinery/atmospherics/pipe/heat_exchanging/New() - ..() +/obj/machinery/atmospherics/pipe/heat_exchanging/Initialize() + . = ..() add_atom_colour("#404040", FIXED_COLOUR_PRIORITY) -/obj/machinery/atmospherics/pipe/heat_exchanging/can_be_node(obj/machinery/atmospherics/pipe/heat_exchanging/target) - if(!istype(target)) - return 0 - if(target.initialize_directions_he & get_dir(target,src)) - return 1 +/obj/machinery/atmospherics/pipe/heat_exchanging/isConnectable(obj/machinery/atmospherics/pipe/heat_exchanging/target, given_layer, HE_type_check = TRUE) + if(istype(target, /obj/machinery/atmospherics/pipe/heat_exchanging) != HE_type_check) + return FALSE + . = ..() /obj/machinery/atmospherics/pipe/heat_exchanging/hide() return -/obj/machinery/atmospherics/pipe/heat_exchanging/GetInitDirections() - return ..() | initialize_directions_he - /obj/machinery/atmospherics/pipe/heat_exchanging/process_atmos() var/environment_temperature = 0 var/datum/gas_mixture/pipe_air = return_air() @@ -56,8 +51,6 @@ L.bodytemperature = avg_temp pipe_air.temperature = avg_temp - - /obj/machinery/atmospherics/pipe/heat_exchanging/process() if(!parent) return //machines subsystem fires before atmos is initialized so this prevents race condition runtimes diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm index d0bf90c27b..606693ddda 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm @@ -9,11 +9,9 @@ thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT dir = SOUTH - initialize_directions = NORTH - initialize_directions_he = SOUTH device_type = BINARY - + construction_type = /obj/item/pipe/directional pipe_state = "junction" @@ -26,34 +24,18 @@ piping_layer = PIPING_LAYER_MAX pixel_x = PIPING_LAYER_P_X pixel_y = PIPING_LAYER_P_Y - + /obj/machinery/atmospherics/pipe/heat_exchanging/junction/SetInitDirections() switch(dir) - if(SOUTH) - initialize_directions = NORTH - initialize_directions_he = SOUTH - if(NORTH) - initialize_directions = SOUTH - initialize_directions_he = NORTH - if(EAST) - initialize_directions = WEST - initialize_directions_he = EAST - if(WEST) - initialize_directions = EAST - initialize_directions_he = WEST + if(NORTH,SOUTH) + initialize_directions = SOUTH|NORTH + if(EAST,WEST) + initialize_directions = WEST|EAST /obj/machinery/atmospherics/pipe/heat_exchanging/junction/getNodeConnects() return list(turn(dir, 180), dir) -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/can_be_node(obj/machinery/atmospherics/target, iteration) - var/init_dir - switch(iteration) - if(1) - init_dir = target.initialize_directions - if(2) - var/obj/machinery/atmospherics/pipe/heat_exchanging/H = target - if(!istype(H)) - return 0 - init_dir = H.initialize_directions_he - if(init_dir & get_dir(target,src)) - return 1 +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/isConnectable(obj/machinery/atmospherics/target, given_layer, he_type_check) + if(dir == get_dir(target, src)) + return ..(target, given_layer, FALSE) //we want a normal pipe instead + return ..(target, given_layer, TRUE) diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm index 9b95840875..6689905cf7 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm @@ -6,13 +6,13 @@ desc = "A manifold composed of regular pipes." dir = SOUTH - initialize_directions_he = EAST|NORTH|WEST + initialize_directions = EAST|NORTH|WEST device_type = TRINARY construction_type = /obj/item/pipe/trinary pipe_state = "he_manifold" - + /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -26,13 +26,13 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/SetInitDirections() switch(dir) if(NORTH) - initialize_directions_he = EAST|SOUTH|WEST + initialize_directions = EAST|SOUTH|WEST if(SOUTH) - initialize_directions_he = WEST|NORTH|EAST + initialize_directions = WEST|NORTH|EAST if(EAST) - initialize_directions_he = SOUTH|WEST|NORTH + initialize_directions = SOUTH|WEST|NORTH if(WEST) - initialize_directions_he = NORTH|EAST|SOUTH + initialize_directions = NORTH|EAST|SOUTH /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/update_icon() var/invis = invisibility ? "-f" : "" @@ -53,13 +53,13 @@ name = "4-way pipe manifold" desc = "A manifold composed of heat-exchanging pipes." - initialize_directions_he = NORTH|SOUTH|EAST|WEST + initialize_directions = NORTH|SOUTH|EAST|WEST device_type = QUATERNARY construction_type = /obj/item/pipe/quaternary pipe_state = "he_manifold4w" - + /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -71,7 +71,7 @@ pixel_y = PIPING_LAYER_P_Y /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/SetInitDirections() - initialize_directions_he = initial(initialize_directions_he) + initialize_directions = initial(initialize_directions) /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_icon() var/invis = invisibility ? "-f" : "" diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm index d00304114d..ad137a227d 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm @@ -5,13 +5,13 @@ desc = "A one meter section of heat-exchanging pipe." dir = SOUTH - initialize_directions_he = SOUTH|NORTH + initialize_directions = SOUTH|NORTH device_type = BINARY construction_type = /obj/item/pipe/binary/bendable pipe_state = "he" - + /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X @@ -24,12 +24,12 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple/SetInitDirections() if(dir in GLOB.diagonals) - initialize_directions_he = dir + initialize_directions = dir switch(dir) if(NORTH,SOUTH) - initialize_directions_he = SOUTH|NORTH + initialize_directions = SOUTH|NORTH if(EAST,WEST) - initialize_directions_he = WEST|EAST + initialize_directions = WEST|EAST /obj/machinery/atmospherics/pipe/heat_exchanging/simple/proc/normalize_dir() if(dir==SOUTH) diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 132e750343..1771609125 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -437,8 +437,8 @@ danger[gas[GAS_META][META_GAS_NAME]] = gas[MOLES] //ex. "plasma" = 20 if(danger.len) - message_admins("[ADMIN_LOOKUPFLW(usr)] opened a canister that contains the following: [ADMIN_JMP(src)]") - log_admin("[key_name(usr)] opened a canister that contains the following at [COORD(src)]:") + message_admins("[ADMIN_LOOKUPFLW(usr)] opened a canister that contains the following at [ADMIN_VERBOSEJMP(src)]:") + log_admin("[key_name(usr)] opened a canister that contains the following at [AREACOORD(src)]:") for(var/name in danger) var/msg = "[name]: [danger[name]] moles." log_admin(msg) diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index 68223d85a2..1a276d03c5 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -4,7 +4,7 @@ use_power = NO_POWER_USE max_integrity = 250 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 60, "acid" = 30) - + anchored = FALSE var/datum/gas_mixture/air_contents var/obj/machinery/atmospherics/components/unary/portables_connector/connected_port diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 798b555444..c0658c781d 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -58,6 +58,9 @@ air_update_turf() // Update the environment if needed. /obj/machinery/portable_atmospherics/pump/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return if(is_operational()) if(prob(50 / severity)) on = !on @@ -65,7 +68,6 @@ direction = PUMP_OUT pump.target_pressure = rand(0, 100 * ONE_ATMOSPHERE) update_icon() - ..() /obj/machinery/portable_atmospherics/pump/replace_tank(mob/living/user, close_valve) . = ..() @@ -112,9 +114,8 @@ var/plasma = air_contents.gases[/datum/gas/plasma] var/n2o = air_contents.gases[/datum/gas/nitrous_oxide] if(n2o || plasma) - var/area/A = get_area(src) - message_admins("[ADMIN_LOOKUPFLW(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [A][ADMIN_JMP(src)]") - log_admin("[key_name(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [A][COORD(src)]") + message_admins("[ADMIN_LOOKUPFLW(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [ADMIN_VERBOSEJMP(src)]") + log_admin("[key_name(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [AREACOORD(src)]") else if(on && direction == PUMP_OUT) investigate_log("[key_name(usr)] started a transfer into [holding].
    ", INVESTIGATE_ATMOS) . = TRUE diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index 4bb7b02288..29a454f59a 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -56,11 +56,13 @@ air_update_turf() /obj/machinery/portable_atmospherics/scrubber/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return if(is_operational()) if(prob(50 / severity)) on = !on update_icon() - ..() /obj/machinery/portable_atmospherics/scrubber/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state) diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm index 87b9736722..9bebcfe546 100644 --- a/code/modules/awaymissions/bluespaceartillery.dm +++ b/code/modules/awaymissions/bluespaceartillery.dm @@ -10,7 +10,6 @@ icon_state = "control_boxp1" icon = 'icons/obj/machines/particle_accelerator.dmi' density = TRUE - anchored = TRUE /obj/machinery/artillerycontrol/process() if(reload < reload_cooldown) @@ -47,7 +46,7 @@ return if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) priority_announce("Bluespace artillery fire detected. Brace for impact.") - message_admins("[key_name_admin(usr)] has launched an artillery strike.") + message_admins("[ADMIN_LOOKUPFLW(usr)] has launched an artillery strike.") var/list/L = list() for(var/turf/T in get_area_turfs(thearea.type)) L+=T diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 09504c60b7..56f5d63b0c 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -135,7 +135,6 @@ desc = "Used for running friendly games of capture the flag." icon = 'icons/obj/device.dmi' icon_state = "syndbeacon" - anchored = TRUE resistance_flags = INDESTRUCTIBLE var/team = WHITE_TEAM var/team_span = "" @@ -495,14 +494,14 @@ W.registered_name = H.real_name W.update_label(W.registered_name, W.assignment) - // The shielded hardsuit is already NODROP_1 + // The shielded hardsuit is already NODROP no_drops += H.get_item_by_slot(SLOT_GLOVES) no_drops += H.get_item_by_slot(SLOT_SHOES) no_drops += H.get_item_by_slot(SLOT_W_UNIFORM) no_drops += H.get_item_by_slot(SLOT_EARS) for(var/i in no_drops) var/obj/item/I = i - I.flags_1 |= NODROP_1 + I.item_flags |= NODROP /datum/outfit/ctf/instagib r_hand = /obj/item/gun/energy/laser/instakill @@ -652,7 +651,6 @@ desc = "You should capture this." icon = 'icons/obj/machines/dominator.dmi' icon_state = "dominator" - anchored = TRUE resistance_flags = INDESTRUCTIBLE var/obj/machinery/capture_the_flag/controlling var/team = "none" diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 889e6f628b..0ee182d9f8 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -37,10 +37,12 @@ if(jobban_isbanned(user, banType)) to_chat(user, "You are jobanned!") return + if(QDELETED(src) || QDELETED(user)) + return var/ghost_role = alert("Become [mob_name]? (Warning, You can no longer be cloned!)",,"Yes","No") if(ghost_role == "No" || !loc) return - log_game("[user.ckey] became [mob_name]") + log_game("[key_name(user)] became [mob_name]") create(ckey = user.ckey) /obj/effect/mob_spawn/Initialize(mapload) @@ -361,8 +363,9 @@ name = "bartender sleeper" icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" - flavour_text = "You are a space bartender!" + flavour_text = "You are a space bartender! Time to mix drinks and change lives. Smoking space drugs makes it easier to understand your patrons' odd dialect." assignedrole = "Space Bartender" + id_job = "Bartender" /datum/outfit/spacebartender name = "Space Bartender" @@ -373,7 +376,6 @@ glasses = /obj/item/clothing/glasses/sunglasses/reagent id = /obj/item/card/id - /obj/effect/mob_spawn/human/beach outfit = /datum/outfit/beachbum @@ -385,14 +387,23 @@ name = "beach bum sleeper" icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" - flavour_text = "You are a beach bum!" + flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?" assignedrole = "Beach Bum" +/obj/effect/mob_spawn/human/beach/alive/lifeguard + flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff." + mob_gender = "female" + name = "lifeguard sleeper" + id_job = "Lifeguard" + uniform = /obj/item/clothing/under/shorts/red + /datum/outfit/beachbum name = "Beach Bum" glasses = /obj/item/clothing/glasses/sunglasses - uniform = /obj/item/clothing/under/shorts/red r_pocket = /obj/item/storage/wallet/random + l_pocket = /obj/item/reagent_containers/food/snacks/pizzaslice/dank; + uniform = /obj/item/clothing/under/pants/youngfolksjeans + id = /obj/item/card/id /datum/outfit/beachbum/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) ..() diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index 2293ac8098..5c3e87a367 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -6,7 +6,6 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) icon = 'icons/obj/machines/gateway.dmi' icon_state = "off" density = TRUE - anchored = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF var/active = 0 var/checkparts = TRUE diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index ae119db9e7..57d8420fa8 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -58,7 +58,7 @@ /obj/item/paper/fluff/awaymissions/academy/grade/failure name = "Pyromancy Evaluation" - info = "Current Grade: F. Educator's Notes: No improvement shown despite multiple private lessons. Suggest additional tutilage." + info = "Current Grade: F. Educator's Notes: No improvement shown despite multiple private lessons. Suggest additional tutelage." /obj/singularity/academy @@ -131,7 +131,7 @@ if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) - message_admins("[key_name_admin(C)] was spawned as Wizard Academy Defender") + message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Wizard Academy Defender") current_wizard.ghostize() // on the off chance braindead defender gets back in current_wizard.key = C.key @@ -273,7 +273,7 @@ var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, null, ROLE_WIZARD, 50, H) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) - message_admins("[key_name_admin(C)] was spawned as Dice Servant") + message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Dice Servant") H.key = C.key var/obj/effect/proc_holder/spell/targeted/summonmob/S = new diff --git a/code/modules/awaymissions/mission_code/caves.dm b/code/modules/awaymissions/mission_code/caves.dm index fd2f8f18af..fd2735678d 100644 --- a/code/modules/awaymissions/mission_code/caves.dm +++ b/code/modules/awaymissions/mission_code/caves.dm @@ -31,14 +31,14 @@ //caves papers /obj/item/paper/crumpled/awaymissions/caves/unsafe_area - info = "
    WARNING


    Majority of this area is consitered 'unsafe' past this point. Theres an outpost directly south of here where you can get your bearing and travel further down if needed. Traveling in groups is HIGHLY advised, the shit out there can be extremely deadly if you're alone.
    " + info = "
    WARNING


    Majority of this area is considered 'unsafe' past this point. Theres an outpost directly south of here where you can get your bearing and travel further down if needed. Traveling in groups is HIGHLY advised, the shit out there can be extremely deadly if you're alone.
    " /obj/item/paper/fluff/awaymissions/caves/omega name = "Subject Omega Notes" info = "
    Testing Notes


    Subject appears unresponsive to most interactions, refusing to move away from the corners or face any scientists. Subject appears to move between the two back corners every observation. A strange humming can be heard from inside the cell, appears to be originating from the subject itself, further testing is necessary to confirm or deny this.
    " /obj/item/paper/fluff/awaymissions/caves/magma - info = "
    Mining is hell down here, you can feel the heat of the magma no matter how thick the suit is. Conditions are barely managble as is, restless nights and horrid work conditions. The ore maybe rich down here, but we've already lost a few men to the faults shifting, god knows how much longer till it all just collapses down and consumes everyone with it.
    " + info = "
    Mining is hell down here, you can feel the heat of the magma no matter how thick the suit is. Conditions are barely manageable as is, restless nights and horrid work conditions. The ore maybe rich down here, but we've already lost a few men to the faults shifting, god knows how much longer till it all just collapses down and consumes everyone with it.
    " /obj/item/paper/fluff/awaymissions/caves/work_notice name = "work notice" @@ -48,7 +48,7 @@ name = "shipment notice" info = "
    We were suppose to get a shipment of these special laser rifles and a couple 'nades to help combat the wildlife down here, but its been weeks since we last heard from the caravan carrying the shit down here. At this point we can only assume they fell victim to one of the monster nests or the dumbasses managed to trip into the lava. So much for that shipment, I guess.
    " -/obj/item/paper/fluff/awaymissions/caves/saftey_notice +/obj/item/paper/fluff/awaymissions/caves/safety_notice name = "safety notice" info = "
    Some of the miners have gone to laying some mine traps among the lower levels of the mine to keep the monsters at bay. This probably isn't the smartest idea in a cavern like this but the boys seem to get a chuckle out of every distant blast they hear go off, so I guess it works
    " diff --git a/code/modules/awaymissions/mission_code/moonoutpost19.dm b/code/modules/awaymissions/mission_code/moonoutpost19.dm index b66aa6e64d..c0af9cd08c 100644 --- a/code/modules/awaymissions/mission_code/moonoutpost19.dm +++ b/code/modules/awaymissions/mission_code/moonoutpost19.dm @@ -29,8 +29,7 @@ /area/awaymission/moonoutpost19/hive name = "The Hive" - always_unpowered = FALSE - has_gravity = FALSE + always_unpowered = TRUE power_environ = FALSE power_equip = FALSE power_light = FALSE @@ -45,7 +44,7 @@ /obj/item/paper/fluff/awaymissions/moonoutpost19/research/larva_social name = "Larva Xenomorph Social Interactions & Capturing Procedure" - info = "Researcher: Dr. Sakuma Sano
    Date: 04/06/2554

    Report:
    As expected, all that is left of the monkeys we sent in earlier is a group of xenomorph larvae. It is quite clear that the facehuggers are not selective in their hosts, and so far the gestation process has been shown to have a 100% success rate.

    The larvae themselves have been behaving very differently from the lone larva we first observed, and despite shying away from humans they are clearly comfortable with others of their kind. Our previous suspicions on larvae have been confirmed with their demonstration of playfulness: they are not nearly as aggressive or violent when young, before molting to adulthood.

    The majority of the play we observed involved a sort of hide-and-seek, and occasionally wrestling by tangling themselves and struggling out of it. While normally we would write these off as instinctual play for honing their skills when they molt, their growth period is so incredibly fast and they are still such adept killers that it would serve no practical purpose. The only explanation for this is perhaps to create bonds and friendships with each other, if that is even possible for such an incredibly hostile race. It may be that they are much more reasonable with each other than other life forms.

    It had become clear that now was the best time to extract a xenomorph for dissecting, as these were all still larvae and the queen was still attached to its ovipositor and would be immobile. With the approval of the research director, we sent in our medical robot that had been dubbed 'Head Surgeon' into the containment pen, dropping the shields for only a fraction of a second to allow it entry. The larvae were cautious, but the curiosity of one had him within grabbing range of our robot. It was brought out and quickly euthanized through lethal injection, courtesy of our mechanical doctor." + info = "Researcher: Dr. Sakuma Sano
    Date: 04/06/2554

    Report:
    As expected, all that is left of the monkeys we sent in earlier is a group of xenomorph larvae. It is quite clear that the facehuggers are not selective in their hosts, and so far the gestation process has been shown to have a 100% success rate.

    The larvae themselves have been behaving very differently from the lone larva we first observed, and despite shying away from humans they are clearly comfortable with others of their kind. Our previous suspicions on larvae have been confirmed with their demonstration of playfulness: they are not nearly as aggressive or violent when young, before molting to adulthood.

    The majority of the play we observed involved a sort of hide-and-seek, and occasionally wrestling by tangling themselves and struggling out of it. While normally we would write these off as instinctual play for honing their skills when they molt, their growth period is so incredibly fast and they are still such adept killers that it would serve no practical purpose. The only explanation for this is perhaps to create bonds and friendships with each other, if that is even possible for such an incredibly hostile race. It may be that they are much more reasonable with each other than other life forms.

    It had become clear that now was the best time to extract a xenomorph for dissecting, as these were all still larvae and the queen was still attached to its ovipositor and would be immobile. With the approval of the research director, we sent in our medical robot that had been dubbed 'Head Surgeon' into the containment pen, dropping the shields for only a fraction of a second to allow it entry. The larvae were cautious, but the curiosity of one had him within grabbing range of our robot. It was brought out and quickly euthanized through lethal injection, courtesy of our mechanical doctor." /obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_queen name = "Queen Xenomorph Physiology & Behavior Observation" @@ -66,7 +65,7 @@ /obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_hivemind name = "The Hivemind Hypothesis" info = "Researcher: Dr. Mark Douglas
    Date: 17/06/2554

    Report:
    Earlier today we have observed a new phenomenon with our subjects. While feeding them our last monkey subject and throwing out the box, the aliens merely looked at us instead of infecting the monkey right away. They looked to be collectively distressed as they would no longer be given hosts, where instead we would move to the next phase of the experiment. When I glanced at the gas tanks and piping leading to their cell, I looked back to see all of them were up against the glass, even the queen! It was as if they all understood what was going to happen, even though we knew only the queen had the cognitive capability to do so.

    The only explanation for this is a form of communication between the aliens, but we have seen no such action take place anywhere in the cell until now. We also know that regular drone and hunter xenomorphs have no personality or instinct to survive by themselves. Perhaps the queen has a direct link to them? A form of a commander or overseer that controls their every move? A hivemind?" - + /obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_behavior name = "A Preliminary Study of Alien Behavior" info = "Researcher: Dr. Sakuma Sano
    Date: 08/06/2554

    Report:
    The xenomorphs we have come to study here are a remarkable species. They are almost universally aggressive across all castes, showing no remorse or guilt or pause before or after acts of violence. They appear to be a species entirely designed to kill. Oddly enough, even their method of reproduction is a brutal two-for-one method of birthing a new xenomorph and killing its host.

    The lone xenomorph we studied only five days ago showed little sign of intelligence. Only a simple drone that flung itself at the safety glass and shields repeatedly and thankfully without success. Once the drone molted into a queen, it became much more calm and calculating, merely looking at us and waiting while building its nest. As the hive grew in size and in numbers, so too did the intelligence of the common hunter and drone. We are still researching how they can communicate with one another and the relationship between the different castes and the queen. We will continue to update our research as we learn more about the species." @@ -81,11 +80,11 @@ /obj/item/paper/fluff/awaymissions/moonoutpost19/research/evacuation name = "Evacuation Procedure" - info = "

    In The Event of Xenobiology Breach: Evacuate staff, Lock down Xenobiology, Notify on-site superiors and/or Central Command immediatly.



    Current Xenobiology Containment Level:Secure RUN

    " + info = "

    In The Event of Xenobiology Breach: Evacuate staff, Lock down Xenobiology, Notify on-site superiors and/or Central Command immediately.



    Current Xenobiology Containment Level:Secure RUN

    " /obj/item/paper/fluff/awaymissions/moonoutpost19/log/personal name = "Personal Log" - info = "Log 1:
    We got our promised supply drop today. We were only meant to get it, what, a week ago? This bloody gateway keeps desyncing itself, and that means subsisting off recycled water and carb packs. No clue where the damn thing connects to on its off days, and HQ say we are 'not to touch it if it isn't linking to command.' We dumped off the assload of crates Jim filled, got our boxes of oxygen, food and drink, and closed the portal.

    Log 2:
    Damn thing is acting up again. Three days no contact this time. I thought I heard clanking noises from it yesterday. Jim is going on about the NT base or some shit. We've been over this before - They don't know we're here, that engineer was too drunk to recognise his suit, especially since I had it painted orange. He's starting to get annoying. We're safe.

    Log 3:
    Gateway synced itself up automatically today. I opened it for an instant to spy through it, got a glimpse of the inside of a transport container. Either HQ's redecorating or something, or there's more than two of these things." + info = "Log 1:
    We got our promised supply drop today. We were only meant to get it, what, a week ago? This bloody gateway keeps desyncing itself, and that means subsisting off recycled water and carb packs. No clue where the damn thing connects to on its off days, and HQ say we are 'not to touch it if it isn't linking to command.' We dumped off the assload of crates Jim filled, got our boxes of oxygen, food and drink, and closed the portal.

    Log 2:
    Damn thing is acting up again. Three days no contact this time. I thought I heard clanking noises from it yesterday. Jim is going on about the NT base or some shit. We've been over this before - They don't know we're here, that engineer was too drunk to recognize his suit, especially since I had it painted orange. He's starting to get annoying. We're safe.

    Log 3:
    Gateway synced itself up automatically today. I opened it for an instant to spy through it, got a glimpse of the inside of a transport container. Either HQ's redecorating or something, or there's more than two of these things." /obj/item/paper/fluff/awaymissions/moonoutpost19/log/personal_2 name = "Personal Log" @@ -101,7 +100,7 @@ /obj/item/paper/fluff/awaymissions/moonoutpost19/log/ivan name = "Personal Log - Ivan Volodin" - info = "Ivan Volodin Stories:

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

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

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

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

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

    Entry Sex: 19/06/2554:
    Purple bugs jumpy today. When waved, get hiss. Maybe very bad. Maybe just ill. Do not know. Is science problem, is not engineer problem. I eat sandwich. Is glorious job. Wish to never end." + info = "Ivan Volodin Stories:

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

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

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

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

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

    Entry Sex: 19/06/2554:
    Purple bugs jumpy today. When waved, get hiss. Maybe very bad. Maybe just ill. Do not know. Is science problem, is not engineer problem. I eat sandwich. Is glorious job. Wish to never end." /obj/item/paper/fluff/awaymissions/moonoutpost19/log/gerald name = "Personal Log - Gerald Rosswell" @@ -118,5 +117,5 @@ /obj/item/paper/fluff/awaymissions/moonoutpost19/goodbye_note name = "Note" info = "Bugs break out. I run to here and lock door. I hear door next to me break open and screams. All nice people here dead now. I no want to be eaten, and bottle always said to be coward way out, but person who say that is stupid. Mira, there is no escape for me, tell Alexis and Elena that father will never come home, and that I love you all." - + diff --git a/code/modules/awaymissions/mission_code/murderdome.dm b/code/modules/awaymissions/mission_code/murderdome.dm new file mode 100644 index 0000000000..2a7cb21841 --- /dev/null +++ b/code/modules/awaymissions/mission_code/murderdome.dm @@ -0,0 +1,41 @@ +/obj/structure/window/reinforced/fulltile/indestructable + name = "robust window" + flags_1 = PREVENT_CLICK_UNDER_1 | NODECONSTRUCT_1 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + +/obj/structure/grille/indestructable + flags_1 = CONDUCT_1 | NODECONSTRUCT_1 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + +/obj/effect/spawner/structure/window/reinforced/indestructable + spawn_list = list(/obj/structure/grille/indestructable, /obj/structure/window/reinforced/fulltile/indestructable) + +/obj/structure/barricade/security/murderdome + name = "respawnable barrier" + desc = "A barrier. Provides cover in firefights." + deploy_time = 0 + deploy_message = 0 + +/obj/structure/barricade/security/murderdome/make_debris() + new /obj/effect/murderdome/dead_barricade(get_turf(src)) + +/obj/effect/murderdome/dead_barricade + name = "dead barrier" + desc = "It provided cover in fire fights. And now it's gone." + icon = 'icons/obj/objects.dmi' + icon_state = "barrier0" + alpha = 100 + +/obj/effect/murderdome/dead_barricade/Initialize() + . = ..() + addtimer(CALLBACK(src, .proc/respawn), 3 MINUTES) + +/obj/effect/murderdome/dead_barricade/proc/respawn() + if(!QDELETED(src)) + new /obj/structure/barricade/security/murderdome(get_turf(src)) + qdel(src) + +/area/awaymission/vr/murderdome + name = "Murderdome" + requires_power = FALSE + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 274658e5ea..b3018d9d1c 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -89,7 +89,7 @@ icon_state = "awaycontent22" /area/awaymission/snowdin/post/broken_shuttle - name = "Snowdin Outpost - Broken Transist Shuttle" + name = "Snowdin Outpost - Broken Transit Shuttle" icon_state = "awaycontent20" requires_power = FALSE @@ -223,8 +223,9 @@ var/list/plasma_parts = list()//a list of the organic parts to be turned into plasma limbs var/list/robo_parts = list()//keep a reference of robotic parts so we know if we can turn them into a plasmaman var/mob/living/carbon/human/PP = L - if(istype(PP.dna.species, /datum/species/plasmaman || /datum/species/android || /datum/species/synth)) //ignore plasmamen/robotic species - return + var/S = PP.dna.species + if(istype(S, /datum/species/plasmaman) || istype(S, /datum/species/android) || istype(S, /datum/species/synth)) //ignore plasmamen/robotic species + continue for(var/BP in PP.bodyparts) var/obj/item/bodypart/NN = BP @@ -263,7 +264,7 @@ /obj/item/paper/crumpled/ruins/snowdin/foreshadowing name = "scribbled note" - info = {"Somnethings gone VERY wrong here. Jouslen has been mumbling about some weird shit in his cabin during the night and he seems always tired when we're working. I tried to confront him about it and he blew up on me, + info = {"Something's gone VERY wrong here. Jouslen has been mumbling about some weird shit in his cabin during the night and he seems always tired when we're working. I tried to confront him about it and he blew up on me, telling me to mind my own business. I reported him to the officer, said he'd look into it. We only got another 2 months here before we're pulled for another assignment, so this shit can't go any quicker.."} /obj/item/paper/crumpled/ruins/snowdin/misc1 @@ -283,58 +284,58 @@ /obj/item/paper/fluff/awaymissions/snowdin/research_feed name = "Research Feed" - info = {"A page full of graphs and other detailed infomation on the seismic activity of the surrounding area."} + info = {"A page full of graphs and other detailed information on the seismic activity of the surrounding area."} //profile of each of the old crewmembers for the outpost /obj/item/paper/fluff/awaymissions/snowdin/profile/overseer name = "Personnel Record AOP#01" - info = {"
    Personnel Log


    Name:Caleb Reed
    Age:38
    Gender:Male
    On-Site Profession:Outpost Overseer

    Infomation

    Caleb Reed lead several expeditions + info = {"
    Personnel Log


    Name:Caleb Reed
    Age:38
    Gender:Male
    On-Site Profession:Outpost Overseer

    Information

    Caleb Reed lead several expeditions among uncharted planets in search of plasma for Nanotrasen, scouring from hot savanas to freezing arctics. Track record is fairly clean with only incidient including the loss of two researchers during the expedition of _______, where mis-used of explosive ordinance for tunneling causes a cave-in."} /obj/item/paper/fluff/awaymissions/snowdin/profile/sec1 name = "Personnel Record AOP#02" - info = {"
    Personnel Log


    Name:James Reed
    Age:43
    Gender:Male
    On-Site Profession:Outpost Security

    Infomation

    James Reed has been a part + info = {"
    Personnel Log


    Name:James Reed
    Age:43
    Gender:Male
    On-Site Profession:Outpost Security

    Information

    James Reed has been a part of Nanotrasen's security force for over 20 years, first joining in 22XX. A clean record and unwavering loyalty to the corperation through numerous deployments to various sites makes him a valuable asset to Natotrasen when it comes to keeping the peace while prioritizing Nanotrasen privacy matters. "} /obj/item/paper/fluff/awaymissions/snowdin/profile/hydro1 name = "Personnel Record AOP#03" - info = {"
    Personnel Log


    Name:Katherine Esterdeen
    Age:27
    Gender:Female
    On-Site Profession:Outpost Botanist

    Infomation

    Katherine Esterdeen is a recent + info = {"
    Personnel Log


    Name:Katherine Esterdeen
    Age:27
    Gender:Female
    On-Site Profession:Outpost Botanist

    Information

    Katherine Esterdeen is a recent graduate with a major in Botany and a PH.D in Ecology. Having a clean record and eager to work, Esterdeen seems to be the right fit for maintaining plants in the middle of nowhere."} /obj/item/paper/fluff/awaymissions/snowdin/profile/engi1 name = "Personnel Record AOP#04" - info = {"
    Personnel Log


    Name:Rachel Migro
    Age:35
    Gender:Female
    On-Site Profession:Outpost Engineer

    Infomation

    Recently certified to be a full-time Journeyman, Rachel has + info = {"
    Personnel Log


    Name:Rachel Migro
    Age:35
    Gender:Female
    On-Site Profession:Outpost Engineer

    Information

    Recently certified to be a full-time Journeyman, Rachel has been assigned various construction projects in the past 5 years. Competent and has no past infractions, should be of little concern."} /obj/item/paper/fluff/awaymissions/snowdin/profile/research1 name = "Personnel Record AOP#05" - info = {"
    Personnel Log


    Name:Jacob Ullman
    Age:27
    Gender:Male
    On-Site Profession:Outpost Researcher

    Infomation

    "} + info = {"
    Personnel Log


    Name:Jacob Ullman
    Age:27
    Gender:Male
    On-Site Profession:Outpost Researcher

    Information

    "} /obj/item/paper/fluff/awaymissions/snowdin/profile/research2 name = "Personnel Record AOP#06" - info = {"
    Personnel Log


    Name:Elizabeth Queef
    Age:28
    Gender:Female
    On-Site Profession:Outpost Researcher

    Infomation

    "} + info = {"
    Personnel Log


    Name:Elizabeth Queef
    Age:28
    Gender:Female
    On-Site Profession:Outpost Researcher

    Information

    "} /obj/item/paper/fluff/awaymissions/snowdin/profile/research3 name = "Personnel Record AOP#07" - info = {"
    Personnel Log


    Name:Jouslen McGee
    Age:38
    Gender:Male
    On-Site Profession:Outpost Researcher

    Infomation

    "} + info = {"
    Personnel Log


    Name:Jouslen McGee
    Age:38
    Gender:Male
    On-Site Profession:Outpost Researcher

    Information

    "} /obj/item/paper/fluff/awaymissions/snowdin/secnotice name = "Security Notice" - info = {"YOu have been assigned to this Arctic Post with intention of protecting Nanotrasen assets and ensuring vital infomation is kept secure while the stationed crew obeys protocal. The picked + info = {"YOu have been assigned to this Arctic Post with intention of protecting Nanotrasen assets and ensuring vital information is kept secure while the stationed crew obeys protocol. The picked staff for this post have been pre-screened with no prior incidients on record, but incase of an issue you have been given a single holding cell and instructions to contact Central to terminate the offending crewmember."} /obj/item/paper/fluff/awaymissions/snowdin/mining name = "Assignment Notice" - info = {"This cold-ass planet is the new-age equivilant of striking gold. Huge deposits of plasma and literal streams of plasma run through the caverns under all this ice and we're here to mine it all.\ + info = {"This cold-ass planet is the new-age equivalent of striking gold. Huge deposits of plasma and literal streams of plasma run through the caverns under all this ice and we're here to mine it all.\ Nanotrasen pays by the pound, so get minin' boys!"} /obj/item/paper/crumpled/ruins/snowdin/lootstructures name = "scribbled note" - info = {"There's some ruins scattered along the cavern, their walls seem to be made of some sort of super-condensned mixture of ice and snow. We've already barricaded up the ones we've found so far, + info = {"There's some ruins scattered along the cavern, their walls seem to be made of some sort of super-condensed mixture of ice and snow. We've already barricaded up the ones we've found so far, since we keep hearing some strange noises from inside. Besides, what sort of fool would wrecklessly run into ancient ruins full of monsters for some old gear, anyway?"} /obj/item/paper/crumpled/ruins/snowdin/shovel @@ -388,7 +389,7 @@ DELAY 30 SAY Nanotrasen is pleased to have you working in one of the many top-of-the-line research posts within the $%@!! sector! DELAY 30 - SAY Further job assignment infomation can be found at your local security post! Have a secure day! + SAY Further job assignment information can be found at your local security post! Have a secure day! DELAY 20;"} /obj/item/disk/holodisk/snowdin/overrun @@ -529,7 +530,7 @@ /obj/item/gun/ballistic/automatic/c20r/unrestricted = 16, /obj/item/gun/magic/wand/resurrection/inert = 15, /obj/item/gun/magic/wand/resurrection = 10, - /obj/item/radio/uplink/old = 2, + /obj/item/uplink/old = 2, /obj/item/book/granter/spell/charge = 12, /obj/item/grenade/clusterbuster/spawner_manhacks = 15, /obj/item/book/granter/spell/fireball = 10, @@ -558,7 +559,7 @@ /obj/item/clothing/under/syndicate/coldres name = "insulated tactical turtleneck" - desc = "A non-descript and slightly suspicious-looking turtleneck with digital camouflage cargo pants. The interior has been padded with special insulation for both warmth and protection." + desc = "A nondescript and slightly suspicious-looking turtleneck with digital camouflage cargo pants. The interior has been padded with special insulation for both warmth and protection." armor = list("melee" = 20, "bullet" = 10, "laser" = 0,"energy" = 5, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25) cold_protection = CHEST|GROIN|ARMS|LEGS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT @@ -606,6 +607,15 @@ id = /obj/item/card/id/syndicate implants = list(/obj/item/implant/exile) +/datum/outfit/vr/snowtide + name = "Snowdin Outfit" + shoes = /obj/item/clothing/shoes/winterboots + suit = /obj/item/clothing/suit/hooded/wintercoat + back = /obj/item/storage/backpack + mask = /obj/item/clothing/mask/breath + r_pocket = /obj/item/tank/internals/emergency_oxygen/engi + internals_slot = SLOT_R_STORE + /obj/effect/mob_spawn/human/syndicatesoldier/coldres/alive/female mob_gender = FEMALE @@ -666,4 +676,5 @@ /obj/effect/turf_decal/snowdin_station_sign/up/seven icon_state = "AOPU7" - +/obj/effect/landmark/vr_spawn/snowdin + vr_outfit = /datum/outfit/vr/snowtide diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index ba06b96959..acb329b5c5 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -63,7 +63,6 @@ icon = 'icons/obj/device.dmi' icon_state = "syndbeacon" - anchored = TRUE density = TRUE use_power = NO_POWER_USE diff --git a/code/modules/awaymissions/signpost.dm b/code/modules/awaymissions/signpost.dm index fb542d92b9..4d85d947c2 100644 --- a/code/modules/awaymissions/signpost.dm +++ b/code/modules/awaymissions/signpost.dm @@ -7,33 +7,55 @@ var/question = "Travel back?" var/list/zlevels -/obj/structure/signpost/New() +/obj/structure/signpost/Initialize() . = ..() set_light(2) zlevels = SSmapping.levels_by_trait(ZTRAIT_STATION) -/obj/structure/signpost/attackby(obj/item/W, mob/user, params) - return attack_hand(user) - -/obj/structure/signpost/attack_hand(mob/user) +/obj/structure/signpost/interact(mob/user) . = ..() if(.) return - switch(alert(question,name,"Yes","No")) - if("Yes") - var/turf/T = find_safe_turf(zlevels=zlevels) + if(alert(question,name,"Yes","No") == "Yes" && Adjacent(user)) + var/turf/T = find_safe_turf(zlevels=zlevels) - if(T) - user.forceMove(T) - to_chat(user, "You blink and find yourself in [get_area_name(T)].") - else - to_chat(user, "Nothing happens. You feel that this is a bad sign.") - if("No") - return + if(T) + var/atom/movable/AM = user.pulling + if(AM) + AM.forceMove(T) + user.forceMove(T) + if(AM) + user.start_pulling(AM) + to_chat(user, "You blink and find yourself in [get_area_name(T)].") + else + to_chat(user, "Nothing happens. You feel that this is a bad sign.") + +/obj/structure/signpost/attackby(obj/item/W, mob/user, params) + return interact(user) + +/obj/structure/signpost/attack_paw(mob/user) + return interact(user) + +/obj/structure/signpost/attack_hulk(mob/user, does_attack_animation = 0) + return interact(user) + +/obj/structure/signpost/attack_larva(mob/user) + return interact(user) + +/obj/structure/signpost/attack_robot(mob/user) + if (Adjacent(user)) + return interact(user) + +/obj/structure/signpost/attack_slime(mob/user) + return interact(user) + +/obj/structure/signpost/attack_animal(mob/user) + return interact(user) /obj/structure/signpost/salvation name = "\proper salvation" desc = "In the darkest times, we will find our way home." + resistance_flags = INDESTRUCTIBLE /obj/structure/signpost/exit name = "exit" @@ -41,7 +63,7 @@ exit the area." question = "Leave? You might never come back." -/obj/structure/signpost/exit/New() +/obj/structure/signpost/exit/Initialize() . = ..() zlevels = list() for(var/i in 1 to world.maxz) diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index 65abae44c5..3903df9686 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/structures.dmi' icon_state = "speaking_tile" layer = 5 + resistance_flags = INDESTRUCTIBLE var/speaking = FALSE var/times_spoken_to = 0 var/list/shenanigans = list() @@ -88,6 +89,27 @@ speaking = FALSE times_spoken_to++ +/obj/structure/speaking_tile/attackby(obj/item/W, mob/user, params) + return interact(user) + +/obj/structure/speaking_tile/attack_paw(mob/user) + return interact(user) + +/obj/structure/speaking_tile/attack_hulk(mob/user, does_attack_animation = 0) + return interact(user) + +/obj/structure/speaking_tile/attack_larva(mob/user) + return interact(user) + +/obj/structure/speaking_tile/attack_ai(mob/user) + return interact(user) + +/obj/structure/speaking_tile/attack_slime(mob/user) + return interact(user) + +/obj/structure/speaking_tile/attack_animal(mob/user) + return interact(user) + /obj/structure/speaking_tile/proc/SpeakPeace(list/statements) for(var/i in 1 to statements.len) say("[statements[i]]") diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm new file mode 100644 index 0000000000..08bd74acad --- /dev/null +++ b/code/modules/cargo/bounties/assistant.dm @@ -0,0 +1,270 @@ +/datum/bounty/item/assistant/strange_object + name = "Strange Object" + description = "Nanotrasen has taken an interest in strange objects. Find one in maint, and ship it off to CentCom right away." + reward = 1200 + wanted_types = list(/obj/item/relic) + +/datum/bounty/item/assistant/scooter + name = "Scooter" + description = "Nanotrasen has determined walking to be wasteful. Ship a scooter to CentCom to speed operations up." + reward = 1080 // the mat hoffman + wanted_types = list(/obj/vehicle/ridden/scooter) + include_subtypes = FALSE + +/datum/bounty/item/assistant/skateboard + name = "Skateboard" + description = "Nanotrasen has determined walking to be a wasteful. Ship a skateboard to CentCom to speed operations up." + reward = 900 // the tony hawk + wanted_types = list(/obj/vehicle/ridden/scooter/skateboard) + +/datum/bounty/item/assistant/stunprod + name = "Stunprod" + description = "CentCom demands a stunprod to use against dissidents. Craft one, then ship it." + reward = 1300 + wanted_types = list(/obj/item/melee/baton/cattleprod) + +/datum/bounty/item/assistant/soap + name = "Soap" + description = "Soap has gone missing from CentCom's bathrooms and nobody knows who took it. Replace it and be the hero CentCom needs." + reward = 2000 + required_count = 3 + wanted_types = list(/obj/item/soap) + +/datum/bounty/item/assistant/spear + name = "Spears" + description = "CentCom's security forces are going through budget cuts. You will be paid if you ship a set of spears." + reward = 2000 + required_count = 5 + wanted_types = list(/obj/item/twohanded/spear) + +/datum/bounty/item/assistant/toolbox + name = "Toolboxes" + description = "There's an absence of robustness at Central Command. Hurry up and ship some toolboxes as a solution." + reward = 2000 + required_count = 6 + wanted_types = list(/obj/item/storage/toolbox) + +/datum/bounty/item/assistant/statue + name = "Statue" + description = "Central Command would like to commision an artsy statue for the lobby. Ship one out, when possible." + reward = 2000 + wanted_types = list(/obj/structure/statue) + +/datum/bounty/item/assistant/clown_box + name = "Clown Box" + description = "The universe needs laughter. Stamp cardboard with a clown stamp and ship it out." + reward = 1500 + wanted_types = list(/obj/item/storage/box/clown) + +/datum/bounty/item/assistant/cheesiehonkers + name = "Cheesie Honkers" + description = "Apparently the company that makes Cheesie Honkers is going out of business soon. CentCom wants to stock up before it happens!" + reward = 1200 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/cheesiehonkers) + +/datum/bounty/item/assistant/baseball_bat + name = "Baseball Bat" + description = "Baseball fever is going on at CentCom! Be a dear and ship them some baseball bats, so that management can live out their childhood dream." + reward = 2000 + required_count = 5 + wanted_types = list(/obj/item/melee/baseball_bat) + +/datum/bounty/item/assistant/extendohand + name = "Extendo-Hand" + description = "Commander Betsy is getting old, and can't bend over to get the telescreen remote anymore. Management has requested an extendo-hand to help her out." + reward = 2500 + wanted_types = list(/obj/item/extendohand) + +/datum/bounty/item/assistant/donut + name = "Donuts" + description = "CentCom's security forces are facing heavy losses against the Syndicate. Ship donuts to raise morale." + reward = 3000 + required_count = 10 + wanted_types = list(/obj/item/reagent_containers/food/snacks/donut) + +/datum/bounty/item/assistant/donkpocket + name = "Donk-Pockets" + description = "Consumer safety recall: Warning. Donk-Pockets manufactured in the past year contain hazardous lizard biomatter. Return units to CentCom immediately." + reward = 3000 + required_count = 10 + wanted_types = list(/obj/item/reagent_containers/food/snacks/donkpocket) + +/datum/bounty/item/assistant/briefcase + name = "Briefcase" + description = "Central Command will be holding a business convention this year. Ship a few briefcases in support." + reward = 2500 + required_count = 5 + wanted_types = list(/obj/item/storage/briefcase) + +/datum/bounty/item/assistant/sunglasses + name = "Sunglasses" + description = "A famous blues duo is passing through the sector, but they've lost their shades and they can't perform. Ship new sunglasses to CentCom to rectify this." + reward = 3000 + required_count = 2 + wanted_types = list(/obj/item/clothing/glasses/sunglasses) + +/datum/bounty/item/assistant/gondola_hide + name = "Gondola Hide" + description = "Central Command has recently learned of strange creatures called Gondolas. If you catch one, ship its hide back to CentCom." + reward = 5000 + wanted_types = list(/obj/item/stack/sheet/animalhide/gondola) + +/datum/bounty/item/assistant/monkey_hide + name = "Monkey Hide" + description = "One of the scientists at CentCom is interested in testing products on monkey skin. Your mission is to acquire monkey's hide and ship it." + reward = 1500 + wanted_types = list(/obj/item/stack/sheet/animalhide/monkey) + +/datum/bounty/item/assistant/heart + name = "Heart" + description = "Commander Johnson is in critical condition after suffering a heart attack. Doctors say he needs a new heart fast. Ship one, pronto!" + reward = 3000 + wanted_types = list(/obj/item/organ/heart) + +/datum/bounty/item/assistant/lung + name = "Lungs" + description = "A recent explosion at Central Command has left multiple staff with punctured lungs. Ship spare lungs to be rewarded." + reward = 3000 + required_count = 1 + wanted_types = list(/obj/item/organ/lungs) + +/datum/bounty/item/assistant/appendix + name = "Appendix" + description = "Chef Gibb of Central Command wants to prepare a meal using a very special delicacy: an appendix. If you ship one, he'll pay." + reward = 3000 + wanted_types = list(/obj/item/organ/appendix) + +/datum/bounty/item/assistant/lizard_tail + name = "Lizard Tail" + description = "The Wizard Federation has made off with Nanotrasen's supply of lizard tails. While CentCom is dealing with the wizards, can the station spare a tail of their own?" + reward = 3000 + wanted_types = list(/obj/item/organ/tail/lizard) + +/datum/bounty/item/assistant/shard + name = "Shards" + description = "A killer clown has been stalking CentCom, and staff have been unable to catch her because she's not wearing shoes. Please ship some shards so that a booby trap can be constructed." + reward = 1500 + required_count = 15 + wanted_types = list(/obj/item/shard) + +/datum/bounty/item/assistant/comfy_chair + name = "Comfy Chairs" + description = "Commander Pat is unhappy with his chair. He claims it hurts his back. Ship some alternatives out to humor him. " + reward = 1500 + required_count = 5 + wanted_types = list(/obj/structure/chair/comfy) + +/datum/bounty/item/assistant/revolver + name = "Revolver" + description = "Captain Johann of station 12 has challenged Captain Vic of station 11 to a duel. He's asked for help securing an appropriate revolver to use." + reward = 2000 + wanted_types = list(/obj/item/gun/ballistic/revolver) + +/datum/bounty/item/assistant/hand_tele + name = "Hand Tele" + description = "Central Command has come up with a genius idea: Why not teleport cargo rather than ship it? Send over a hand tele, receive payment, then wait 6-8 years while they deliberate." + reward = 2000 + wanted_types = list(/obj/item/hand_tele) + +/datum/bounty/item/assistant/geranium + name = "Geraniums" + description = "Commander Zot has the hots for Commander Zena. Send a shipment of geraniums - her favorite flower - and he'll happily reward you." + reward = 4000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy/geranium) + +/datum/bounty/item/assistant/poppy + name = "Poppies" + description = "Commander Zot really wants to sweep Security Officer Olivia off her feet. Send a shipment of Poppies - her favorite flower - and he'll happily reward you." + reward = 1000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy) + include_subtypes = FALSE + +/datum/bounty/item/assistant/shadyjims + name = "Shady Jim's" + description = "There's an irate officer at CentCom demanding that he receive a box of Shady Jim's cigarettes. Please ship one. He's starting to make threats." + reward = 500 + wanted_types = list(/obj/item/storage/fancy/cigarettes/cigpack_shadyjims) + +/datum/bounty/item/assistant/potted_plants + name = "Potted Plants" + description = "Central Command is looking to commission a new BirdBoat-class station. You've been ordered to supply the potted plants." + reward = 2000 + required_count = 8 + wanted_types = list(/obj/item/twohanded/required/kirbyplants) + +/datum/bounty/item/assistant/earmuffs + name = "Earmuffs" + description = "Central Command is getting tired of your station's messages. They've ordered that you ship some earmuffs to lessen the annoyance." + reward = 1000 + wanted_types = list(/obj/item/clothing/ears/earmuffs) + +/datum/bounty/item/assistant/handcuffs + name = "Handcuffs" + description = "A large influx of escaped convicts have arrived at Central Command. Now is the perfect time to ship out spare handcuffs (or restraints)." + reward = 1000 + required_count = 5 + wanted_types = list(/obj/item/restraints/handcuffs) + +/datum/bounty/item/assistant/monkey_cubes + name = "Monkey Cubes" + description = "Due to a recent genetics accident, Central Command is in serious need of monkeys. Your mission is to ship monkey cubes." + reward = 2000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/monkeycube) + +/datum/bounty/item/assistant/chainsaw + name = "Chainsaw" + description = "The chef at CentCom is having trouble butchering her animals. She requests one chainsaw, please." + reward = 2500 + wanted_types = list(/obj/item/twohanded/required/chainsaw) + +/datum/bounty/item/assistant/ied + name = "IED" + description = "Nanotrasen's maximum security prison at CentCom is undergoing personnel training. Ship a handful of IEDs to serve as a training tools." + reward = 2000 + required_count = 3 + wanted_types = list(/obj/item/grenade/iedcasing) + +/datum/bounty/item/assistant/bonfire + name = "Lit Bonfire" + description = "Space heaters are malfunctioning and the cargo crew of Central Command is starting to feel cold. Ship a lit bonfire to warm them up." + reward = 5000 + wanted_types = list(/obj/structure/bonfire) + +/datum/bounty/item/assistant/bonfire/applies_to(obj/O) + if(!..()) + return FALSE + var/obj/structure/bonfire/B = O + return !!B.burning + +/datum/bounty/item/assistant/plasma_tank + name = "Full Tank of Plasma" + description = "Station 12 has requested supplies to set up a singularity engine. In particular, they request 28 moles of plasma." + reward = 2500 + wanted_types = list(/obj/item/tank) + var/moles_required = 20 // A full tank is 28 moles, but CentCom ignores that fact. + +/datum/bounty/item/assistant/plasma_tank/applies_to(obj/O) + if(!..()) + return FALSE + var/obj/item/tank/T = O + if(!T.air_contents.gases[/datum/gas/plasma]) + return FALSE + return T.air_contents.gases[/datum/gas/plasma][MOLES] >= moles_required + +/datum/bounty/item/assistant/corgimeat + name = "Raw Corgi Meat" + description = "The Syndicate recently stole all of CentCom's corgi meat. Ship out a replacement immediately." + reward = 3000 + wanted_types = list(/obj/item/reagent_containers/food/snacks/meat/slab/corgi) + +/datum/bounty/item/chef/action_figures + name = "Action Figures" + description = "The vice president's son saw an ad for action figures on the telescreen and now he won't shut up about them. Ship some to ease his complaints." + reward = 4000 + required_count = 5 + wanted_types = list(/obj/item/toy/figure) + diff --git a/code/modules/cargo/bounties/chef.dm b/code/modules/cargo/bounties/chef.dm new file mode 100644 index 0000000000..da296911e7 --- /dev/null +++ b/code/modules/cargo/bounties/chef.dm @@ -0,0 +1,138 @@ +/datum/bounty/item/chef/birthday_cake + name = "Birthday Cake" + description = "Nanotrasen's birthday is coming up! Ship them a birthday cake to celebrate!" + reward = 4000 + wanted_types = list(/obj/item/reagent_containers/food/snacks/store/cake/birthday, /obj/item/reagent_containers/food/snacks/cakeslice/birthday) + +/datum/bounty/item/chef/soup + name = "Soup" + description = "To quell the homeless uprising, Nanotrasen will be serving soup to all underpaid workers. Ship any type of soup." + reward = 3000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/soup) + +/datum/bounty/item/chef/popcorn + name = "Popcorn Bags" + description = "Upper management wants to host a movie night. Ship bags of popcorn for the occasion." + reward = 3000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/popcorn) + +/datum/bounty/item/chef/onionrings + name = "Onion Rings" + description = "Nanotrasen is remembering Saturn day. Ship onion rings to show the station's support." + reward = 3000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/onionrings) + +/datum/bounty/item/chef/icecreamsandwich + name = "Ice Cream Sandwiches" + description = "Upper management has been screaming non-stop for ice cream. Please send some." + reward = 4000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/icecreamsandwich) + +/datum/bounty/item/chef/bread + name = "Bread" + description = "Problems with central planning have led to bread prices skyrocketing. Ship some bread to ease tensions." + reward = 1000 + wanted_types = list(/obj/item/reagent_containers/food/snacks/store/bread, /obj/item/reagent_containers/food/snacks/breadslice, /obj/item/reagent_containers/food/snacks/bun, /obj/item/reagent_containers/food/snacks/pizzabread, /obj/item/reagent_containers/food/snacks/rawpastrybase) + +/datum/bounty/item/chef/pie + name = "Pie" + description = "3.14159? No! CentCom management wants edible pie! Ship a whole one." + reward = 3142 + wanted_types = list(/obj/item/reagent_containers/food/snacks/pie) + +/datum/bounty/item/chef/salad + name = "Salad or Rice Bowls" + description = "CentCom management is going on a health binge. Your order is to ship salad or rice bowls." + reward = 3000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/salad) + +/datum/bounty/item/chef/carrotfries + name = "Carrot Fries" + description = "Night sight can mean life or death! A shipment of carrot fries is the order." + reward = 3500 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/carrotfries) + +/datum/bounty/item/chef/superbite + name = "Super Bite Burger" + description = "Commander Tubbs thinks he can set a competitive eating world record. All he needs is a super bite burger shipped to him." + reward = 12000 + wanted_types = list(/obj/item/reagent_containers/food/snacks/burger/superbite) + +/datum/bounty/item/chef/poppypretzel + name = "Poppy Pretzel" + description = "Central Command needs a reason to fire their HR head. Send over a poppy pretzel to force a failed drug test." + reward = 3000 + wanted_types = list(/obj/item/reagent_containers/food/snacks/poppypretzel) + +/datum/bounty/item/chef/cubancarp + name = "Cuban Carp" + description = "To celebrate the birth of Castro XXVII, ship one cuban carp to CentCom." + reward = 8000 + wanted_types = list(/obj/item/reagent_containers/food/snacks/cubancarp) + +/datum/bounty/item/chef/hotdog + name = "Hot Dog" + description = "Nanotrasen is conducting taste tests to determine the best hot dog recipe. Ship your station's version to participate." + reward = 8000 + wanted_types = list(/obj/item/reagent_containers/food/snacks/hotdog) + +/datum/bounty/item/chef/lemon + name = "Lemons" + description = "A commander claims he can turn lemons into money. Ship him a few and he'll deposit the money into the station's account." + reward = 4444 + required_count = 10 + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lemon) + +/datum/bounty/item/chef/eggplantparm + name = "Eggplant Parmigianas" + description = "A famous singer will be arriving at CentCom, and their contract demands that they only be served Eggplant Parmigiana. Ship some, please!" + reward = 3500 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/eggplantparm) + +/datum/bounty/item/chef/muffin + name = "Muffins" + description = "The Muffin Man is visiting CentCom, but he's forgotten his muffins! Your order is to rectify this." + reward = 3000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/muffin) + +/datum/bounty/item/chef/chawanmushi + name = "Chawanmushi" + description = "Nanotrasen wants to improve relations with its sister company, Japanotrasen. Ship Chawanmushi immediately." + reward = 8000 + wanted_types = list(/obj/item/reagent_containers/food/snacks/chawanmushi) + +/datum/bounty/item/chef/kebab + name = "Kebabs" + description = "Remove all kebab from station you are best food. Ship to CentCom to remove from the premises." + reward = 3500 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/kebab) + +/datum/bounty/item/chef/soylentgreen + name = "Soylent Green" + description = "CentCom has heard wonderful things about the product 'Soylent Green', and would love to try some. If you endulge them, expect a pleasant bonus." + reward = 5000 + wanted_types = list(/obj/item/reagent_containers/food/snacks/soylentgreen) + +/datum/bounty/item/chef/pancakes + name = "Pancakes" + description = "Here at Nanotrasen we consider employees to be family. And you know what families love? Pancakes. Ship a baker's dozen." + reward = 5000 + required_count = 13 + wanted_types = list(/datum/crafting_recipe/food/pancakes) + +/datum/bounty/item/chef/nuggies + name = "Chicken Nuggets" + description = "The vice president's son won't shut up about chicken nuggies. Would you mind shipping some?" + reward = 4000 + required_count = 6 + wanted_types = list(/obj/item/reagent_containers/food/snacks/nugget) + diff --git a/code/modules/cargo/bounties/item.dm b/code/modules/cargo/bounties/item.dm new file mode 100644 index 0000000000..edaf5d96fc --- /dev/null +++ b/code/modules/cargo/bounties/item.dm @@ -0,0 +1,35 @@ +/datum/bounty/item + var/required_count = 1 + var/shipped_count = 0 + var/list/wanted_types // Types accepted for the bounty. + var/include_subtypes = TRUE // Set to FALSE to make the datum apply only to a strict type. + var/list/exclude_types // Types excluded. + +/datum/bounty/item/New() + ..() + wanted_types = typecacheof(wanted_types) + exclude_types = typecacheof(exclude_types) + +/datum/bounty/item/completion_string() + return {"[shipped_count]/[required_count]"} + +/datum/bounty/item/can_claim() + return ..() && shipped_count >= required_count + +/datum/bounty/item/applies_to(obj/O) + if(!include_subtypes && !(O.type in wanted_types)) + return FALSE + if(include_subtypes && (!is_type_in_typecache(O, wanted_types) || is_type_in_typecache(O, exclude_types))) + return FALSE + if(O.flags_1 & HOLOGRAM_1) + return FALSE + return shipped_count < required_count + +/datum/bounty/item/ship(obj/O) + if(!applies_to(O)) + return + shipped_count += 1 + +/datum/bounty/item/compatible_with(datum/other_bounty) + return type != other_bounty.type + diff --git a/code/modules/cargo/bounties/mech.dm b/code/modules/cargo/bounties/mech.dm new file mode 100644 index 0000000000..c331e97266 --- /dev/null +++ b/code/modules/cargo/bounties/mech.dm @@ -0,0 +1,40 @@ +/datum/bounty/item/mech/New() + ..() + description = "Upper management has requested one [name] mech be sent as soon as possible. Ship it to receive a large payment." + +/datum/bounty/item/mech/ship(obj/O) + if(!applies_to(O)) + return + if(istype(O, /obj/mecha)) + var/obj/mecha/M = O + M.wreckage = null // So the mech doesn't explode. + ..() + +/datum/bounty/item/mech/mark_high_priority(scale_reward) + return ..(max(scale_reward * 0.7, 1.2)) + +/datum/bounty/item/mech/ripley + name = "APLU \"Ripley\"" + reward = 13000 + wanted_types = list(/obj/mecha/working/ripley) + +/datum/bounty/item/mech/odysseus + name = "Odysseus" + reward = 11000 + wanted_types = list(/obj/mecha/medical/odysseus) + +/datum/bounty/item/mech/gygax + name = "Gygax" + reward = 28000 + wanted_types = list(/obj/mecha/combat/gygax) + +/datum/bounty/item/mech/durand + name = "Durand" + reward = 20000 + wanted_types = list(/obj/mecha/combat/durand) + +/datum/bounty/item/mech/phazon + name = "Phazon" + reward = 50000 + wanted_types = list(/obj/mecha/combat/phazon) + diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm new file mode 100644 index 0000000000..3f458e2b12 --- /dev/null +++ b/code/modules/cargo/bounties/reagent.dm @@ -0,0 +1,172 @@ +/datum/bounty/reagent + var/required_volume = 10 + var/shipped_volume = 0 + var/datum/reagent/wanted_reagent + +/datum/bounty/reagent/completion_string() + return {"[round(shipped_volume)]/[required_volume] Units"} + +/datum/bounty/reagent/can_claim() + return ..() && shipped_volume >= required_volume + +/datum/bounty/reagent/applies_to(obj/O) + if(!istype(O, /obj/item/reagent_containers)) + return FALSE + if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.id)) + return FALSE + if(O.flags_1 & HOLOGRAM_1) + return FALSE + return shipped_volume < required_volume + +/datum/bounty/reagent/ship(obj/O) + if(!applies_to(O)) + return + shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.id) + if(shipped_volume > required_volume) + shipped_volume = required_volume + +/datum/bounty/reagent/compatible_with(other_bounty) + if(!istype(other_bounty, /datum/bounty/reagent)) + return TRUE + var/datum/bounty/reagent/R = other_bounty + return wanted_reagent.id != R.wanted_reagent.id + +/datum/bounty/reagent/simple_drink + name = "Simple Drink" + reward = 1500 + +datum/bounty/reagent/simple_drink/New() + // Don't worry about making this comprehensive. It doesn't matter if some drinks are skipped. + var/static/list/possible_reagents = list(\ + /datum/reagent/consumable/ethanol/antifreeze,\ + /datum/reagent/consumable/ethanol/andalusia,\ + /datum/reagent/consumable/tea/arnold_palmer,\ + /datum/reagent/consumable/ethanol/b52,\ + /datum/reagent/consumable/ethanol/bananahonk,\ + /datum/reagent/consumable/ethanol/beepsky_smash,\ + /datum/reagent/consumable/ethanol/between_the_sheets,\ + /datum/reagent/consumable/ethanol/bilk,\ + /datum/reagent/consumable/ethanol/black_russian,\ + /datum/reagent/consumable/ethanol/bloody_mary,\ + /datum/reagent/consumable/ethanol/brave_bull,\ + /datum/reagent/consumable/ethanol/martini,\ + /datum/reagent/consumable/ethanol/cuba_libre,\ + /datum/reagent/consumable/ethanol/eggnog,\ + /datum/reagent/consumable/ethanol/erikasurprise,\ + /datum/reagent/consumable/ethanol/ginfizz,\ + /datum/reagent/consumable/ethanol/gintonic,\ + /datum/reagent/consumable/ethanol/grappa,\ + /datum/reagent/consumable/ethanol/grog,\ + /datum/reagent/consumable/ethanol/hooch,\ + /datum/reagent/consumable/ethanol/iced_beer,\ + /datum/reagent/consumable/ethanol/irishcarbomb,\ + /datum/reagent/consumable/ethanol/manhattan,\ + /datum/reagent/consumable/ethanol/margarita,\ + /datum/reagent/consumable/ethanol/gargle_blaster,\ + /datum/reagent/consumable/ethanol/rum_coke,\ + /datum/reagent/consumable/ethanol/screwdrivercocktail,\ + /datum/reagent/consumable/ethanol/snowwhite,\ + /datum/reagent/consumable/soy_latte,\ + /datum/reagent/consumable/cafe_latte,\ + /datum/reagent/consumable/ethanol/syndicatebomb,\ + /datum/reagent/consumable/ethanol/tequila_sunrise,\ + /datum/reagent/consumable/ethanol/manly_dorf,\ + /datum/reagent/consumable/ethanol/thirteenloko,\ + /datum/reagent/consumable/triple_citrus,\ + /datum/reagent/consumable/ethanol/vodkamartini,\ + /datum/reagent/consumable/ethanol/whiskeysoda,\ + /datum/reagent/consumable/ethanol/beer/green,\ + /datum/reagent/consumable/ethanol/demonsblood,\ + /datum/reagent/consumable/ethanol/crevice_spike,\ + /datum/reagent/consumable/ethanol/singulo,\ + /datum/reagent/consumable/ethanol/whiskey_sour) + + var/reagent_type = pick(possible_reagents) + wanted_reagent = new reagent_type + name = wanted_reagent.name + description = "CentCom is thirsty! Send a shipment of [name] to CentCom to quench the company's thirst." + reward += rand(0, 2) * 500 + +/datum/bounty/reagent/complex_drink + name = "Complex Drink" + reward = 4000 + +datum/bounty/reagent/complex_drink/New() + // Don't worry about making this comprehensive. It doesn't matter if some drinks are skipped. + var/static/list/possible_reagents = list(\ + /datum/reagent/consumable/ethanol/atomicbomb,\ + /datum/reagent/consumable/ethanol/bacchus_blessing,\ + /datum/reagent/consumable/ethanol/bastion_bourbon,\ + /datum/reagent/consumable/ethanol/booger,\ + /datum/reagent/consumable/ethanol/hippies_delight,\ + /datum/reagent/consumable/ethanol/drunkenblumpkin,\ + /datum/reagent/consumable/ethanol/fetching_fizz,\ + /datum/reagent/consumable/ethanol/goldschlager,\ + /datum/reagent/consumable/ethanol/hearty_punch,\ + /datum/reagent/consumable/ethanol/manhattan_proj,\ + /datum/reagent/consumable/ethanol/narsour,\ + /datum/reagent/consumable/ethanol/neurotoxin,\ + /datum/reagent/consumable/ethanol/patron,\ + /datum/reagent/consumable/ethanol/quadruple_sec,\ + /datum/reagent/consumable/ethanol/quintuple_sec,\ + /datum/reagent/consumable/bluecherryshake,\ + /datum/reagent/consumable/doctor_delight,\ + /datum/reagent/consumable/ethanol/silencer) + + var/reagent_type = pick(possible_reagents) + wanted_reagent = new reagent_type + name = wanted_reagent.name + description = "CentCom is offering a reward for talented mixologists. Ship a container of [name] to claim the prize." + reward += rand(0, 4) * 500 + +/datum/bounty/reagent/chemical + name = "Chemical" + reward = 4000 + required_volume = 30 + +datum/bounty/reagent/chemical/New() + // Don't worry about making this comprehensive. It doesn't matter if some chems are skipped. + var/static/list/possible_reagents = list(\ + /datum/reagent/medicine/leporazine,\ + /datum/reagent/medicine/clonexadone,\ + /datum/reagent/medicine/pyroxadone,\ + /datum/reagent/medicine/rezadone,\ + /datum/reagent/medicine/mine_salve,\ + /datum/reagent/medicine/pen_acid,\ + /datum/reagent/medicine/perfluorodecalin,\ + /datum/reagent/medicine/ephedrine,\ + /datum/reagent/medicine/diphenhydramine,\ + /datum/reagent/medicine/atropine,\ + /datum/reagent/medicine/strange_reagent,\ + /datum/reagent/medicine/regen_jelly,\ + /datum/reagent/drug/space_drugs,\ + /datum/reagent/drug/crank,\ + /datum/reagent/drug/krokodil,\ + /datum/reagent/drug/methamphetamine,\ + /datum/reagent/drug/bath_salts,\ + /datum/reagent/drug/aranesp,\ + /datum/reagent/nitroglycerin,\ + /datum/reagent/blackpowder,\ + /datum/reagent/napalm,\ + /datum/reagent/teslium,\ + /datum/reagent/firefighting_foam,\ + /datum/reagent/consumable/honey,\ + /datum/reagent/consumable/mayonnaise,\ + /datum/reagent/consumable/frostoil,\ + /datum/reagent/toxin/slimejelly,\ + /datum/reagent/toxin/itching_powder,\ + /datum/reagent/toxin/amanitin,\ + /datum/reagent/toxin/coniine,\ + /datum/reagent/toxin/cyanide,\ + /datum/reagent/toxin/heparin,\ + /datum/reagent/toxin/skewium,\ + /datum/reagent/toxin/anacea,\ + /datum/reagent/toxin/mimesbane,\ + /datum/reagent/pax) + + var/reagent_type = pick(possible_reagents) + wanted_reagent = new reagent_type + name = wanted_reagent.name + description = "CentCom is in desperate need of the chemical [name]. Ship a container of it to be rewarded." + reward += rand(0, 4) * 500 + diff --git a/code/modules/cargo/bounties/science.dm b/code/modules/cargo/bounties/science.dm new file mode 100644 index 0000000000..a2b8676ce0 --- /dev/null +++ b/code/modules/cargo/bounties/science.dm @@ -0,0 +1,72 @@ +/datum/bounty/item/science/boh + name = "Bag of Holding" + description = "Nanotrasen would make good use of high-capacity backpacks. If you have any, please ship them." + reward = 10000 + wanted_types = list(/obj/item/storage/backpack/holding) + +/datum/bounty/item/science/tboh + name = "Trash Bag of Holding" + description = "Nanotrasen would make good use of high-capacity trash bags. If you have any, please ship them." + reward = 10000 + wanted_types = list(/obj/item/storage/backpack/holding) + +/datum/bounty/item/science/bluespace_syringe + name = "Bluespace Syringe" + description = "Nanotrasen would make good use of high-capacity syringes. If you have any, please ship them." + reward = 10000 + wanted_types = list(/obj/item/reagent_containers/syringe/bluespace) + +/datum/bounty/item/science/bluespace_body_bag + name = "Bluespace Body Bag" + description = "Nanotrasen would make good use of high-capacity body bags. If you have any, please ship them." + reward = 10000 + wanted_types = list(/obj/item/bodybag/bluespace) + +/datum/bounty/item/science/nightvision_goggles + name = "Night Vision Goggles" + description = "An electrical storm has busted all the lights at CentCom. While management is waiting for replacements, perhaps some night vision goggles can be shipped?" + reward = 10000 + wanted_types = list(/obj/item/clothing/glasses/night, /obj/item/clothing/glasses/meson/night, /obj/item/clothing/glasses/hud/health/night, /obj/item/clothing/glasses/hud/security/night, /obj/item/clothing/glasses/hud/diagnostic/night) + +/datum/bounty/item/science/experimental_welding_tool + name = "Experimental Welding Tool" + description = "A recent accident has left most of CentCom's welding tools exploded. Ship replacements to be rewarded." + reward = 10000 + required_count = 3 + wanted_types = list(/obj/item/weldingtool/experimental) + +/datum/bounty/item/science/cryostasis_beaker + name = "Cryostasis Beaker" + description = "Chemists at Central Command have discovered a new chemical that can only be held in cryostasis beakers. The only problem is they don't have any! Rectify this to receive payment." + reward = 10000 + wanted_types = list(/obj/item/reagent_containers/glass/beaker/noreact) + +/datum/bounty/item/science/diamond_drill + name = "Diamond Mining Drill" + description = "Central Command is willing to pay three months salary in exchange for one diamond mining drill." + reward = 15000 + wanted_types = list(/obj/item/mecha_parts/mecha_equipment/drill/diamonddrill) + +/datum/bounty/item/science/floor_buffer + name = "Floor Buffer Upgrade" + description = "One of CentCom's janitors made a small fortune betting on carp races. Now they'd like to commission an upgrade to their floor buffer." + reward = 10000 + wanted_types = list(/obj/item/janiupgrade) + +/datum/bounty/item/science/flightsuit + name = "Flight Suit" + description = "According to all known laws of physics, flight suits are cool. CentCom will pay at a premium for them, so get shipping!" + reward = 30000 + wanted_types = list(/obj/item/clothing/suit/space/hardsuit/flightsuit) + +/datum/bounty/item/science/advanced_mop + name = "Advanced Mop" + description = "Excuse me. I'd like to request $17 for a push broom rebristling. Either that, or an advanced mop." + reward = 10000 + wanted_types = list(/obj/item/mop/advanced) + +/datum/bounty/item/science/advanced_egun + name = "Advanced Energy Gun" + description = "With the price of rechargers on the rise, upper management is interested in purchasing guns that are self-powered. If you ship one, they'll pay." + reward = 10000 + wanted_types = list(/obj/item/gun/energy/e_gun/nuclear) diff --git a/code/modules/cargo/bounties/security.dm b/code/modules/cargo/bounties/security.dm new file mode 100644 index 0000000000..d4ef29e194 --- /dev/null +++ b/code/modules/cargo/bounties/security.dm @@ -0,0 +1,62 @@ +/datum/bounty/item/security/headset + name = "Security Headset" + description = "Nanotrasen wants to ensure that their encryption is working correctly. Ship them a security headset so that they can check." + reward = 800 + wanted_types = list(/obj/item/radio/headset/headset_sec, /obj/item/radio/headset/heads/hos) + +/datum/bounty/item/security/securitybelt + name = "Security Belt" + description = "CentCom is having difficulties with their security belts. Ship one from the station to receive compensation." + reward = 800 + wanted_types = list(/obj/item/storage/belt/security) + +/datum/bounty/item/security/sechuds + name = "Security HUDSunglasses" + description = "CentCom screwed up and ordered the wrong type of security sunglasses. They request the station ship some of theirs." + reward = 800 + wanted_types = list(/obj/item/clothing/glasses/hud/security/sunglasses) + +/datum/bounty/item/security/riotshotgun + name = "Riot Shotguns" + description = "Hooligans have boarded CentCom! Ship riot shotguns quick, or things are going to get dirty." + reward = 5000 + required_count = 2 + wanted_types = list(/obj/item/gun/ballistic/shotgun/riot) + +/datum/bounty/item/security/pinpointer + name = "Nuclear Pinpointer" + description = "There's a teeny-tiny itty-bitty chance CentCom may have lost a nuke disk. Can the station spare a pinpointer to help out?" + reward = 1500 + wanted_types = list(/obj/item/pinpointer/nuke) + +/datum/bounty/item/security/captains_spare + name = "Captain's Spare" + description = "Captain Bart of Station 12 has forgotten his ID! Ship him your station's spare, would you?" + reward = 1500 + wanted_types = list(/obj/item/card/id/captains_spare) + +/datum/bounty/item/security/hardsuit + name = "Security Hardsuit" + description = "Space pirates are heading towards CentCom! Quick! Ship a security hardsuit to aid the fight!" + reward = 2000 + wanted_types = list(/obj/item/clothing/suit/space/hardsuit/security) + +/datum/bounty/item/security/krav_maga + name = "Krav Maga Gloves" + description = "Chef Howerwitz of CentCom is trying to take a kung-fu Pizza out of the oven, but his mitts aren't up to the task. Ship them a pair of Krav Maga gloves to do the job right." + reward = 2000 + wanted_types = list(/obj/item/clothing/gloves/krav_maga) + +/datum/bounty/item/security/recharger + name = "Rechargers" + description = "Nanotrasen military academy is conducting marksmanship exercises. They request that rechargers be shipped." + reward = 2000 + required_count = 3 + wanted_types = list(/obj/machinery/recharger) + +/datum/bounty/item/security/sabre + name = "Officer's Sabre" + description = "A 3-hour LARP session will be held at CentCom in the upcoming months. A shipped officer's sabre would make a good prop." + reward = 2500 + wanted_types = list(/obj/item/melee/sabre) + diff --git a/code/modules/cargo/bounties/slime.dm b/code/modules/cargo/bounties/slime.dm new file mode 100644 index 0000000000..4aa0797c70 --- /dev/null +++ b/code/modules/cargo/bounties/slime.dm @@ -0,0 +1,39 @@ +/datum/bounty/item/slime + reward = 3000 + +/datum/bounty/item/slime/New() + ..() + description = "Nanotrasen's science lead is hunting for the rare and exotic [name]. A bounty has been offered for finding it." + reward += rand(0, 4) * 500 + +/datum/bounty/item/slime/green + name = "Green Slime Extract" + wanted_types = list(/obj/item/slime_extract/green) + +/datum/bounty/item/slime/pink + name = "Pink Slime Extract" + wanted_types = list(/obj/item/slime_extract/pink) + +/datum/bounty/item/slime/gold + name = "Gold Slime Extract" + wanted_types = list(/obj/item/slime_extract/gold) + +/datum/bounty/item/slime/oil + name = "Oil Slime Extract" + wanted_types = list(/obj/item/slime_extract/oil) + +/datum/bounty/item/slime/black + name = "Black Slime Extract" + wanted_types = list(/obj/item/slime_extract/black) + +/datum/bounty/item/slime/lightpink + name = "Light Pink Slime Extract" + wanted_types = list(/obj/item/slime_extract/lightpink) + +/datum/bounty/item/slime/adamantine + name = "Adamantine Slime Extract" + wanted_types = list(/obj/item/slime_extract/adamantine) + +/datum/bounty/item/slime/rainbow + name = "Rainbow Slime Extract" + wanted_types = list(/obj/item/slime_extract/rainbow) diff --git a/code/modules/cargo/bounties/special.dm b/code/modules/cargo/bounties/special.dm new file mode 100644 index 0000000000..42c9ab8202 --- /dev/null +++ b/code/modules/cargo/bounties/special.dm @@ -0,0 +1,41 @@ +/datum/bounty/item/alien_organs + name = "Alien Organs" + description = "Nanotrasen is interested in studying Xenomorph biology. Ship a set of organs to be thoroughly compensated." + reward = 25000 + required_count = 3 + wanted_types = list(/obj/item/organ/brain/alien, /obj/item/organ/alien, /obj/item/organ/body_egg/alien_embryo) + +/datum/bounty/item/syndicate_documents + name = "Syndicate Documents" + description = "Intel regarding the syndicate is highly prized at CentCom. If you find syndicate documents, ship them. You could save lives." + reward = 10000 + wanted_types = list(/obj/item/documents/syndicate, /obj/item/documents/photocopy) + +/datum/bounty/item/syndicate_documents/applies_to(obj/O) + if(!..()) + return FALSE + if(istype(O, /obj/item/documents/photocopy)) + var/obj/item/documents/photocopy/Copy = O + return (Copy.copy_type && ispath(Copy.copy_type, /obj/item/documents/syndicate)) + return TRUE + +/datum/bounty/more_bounties + name = "More Bounties" + description = "Complete enough bounties and CentCom will issue new ones!" + reward = 3 // number of bounties + var/required_bounties = 5 + +/datum/bounty/more_bounties/can_claim() + return ..() && completed_bounty_count() >= required_bounties + +/datum/bounty/more_bounties/completion_string() + return "[min(required_bounties, completed_bounty_count())]/[required_bounties] Bounties" + +/datum/bounty/more_bounties/reward_string() + return "Up to [reward] new bounties" + +/datum/bounty/more_bounties/claim() + if(can_claim()) + claimed = TRUE + for(var/i = 0; i < reward; ++i) + try_add_bounty(random_bounty()) diff --git a/code/modules/cargo/bounties/virus.dm b/code/modules/cargo/bounties/virus.dm new file mode 100644 index 0000000000..8f078a2668 --- /dev/null +++ b/code/modules/cargo/bounties/virus.dm @@ -0,0 +1,81 @@ +/datum/bounty/virus + reward = 5000 + var/shipped = FALSE + var/stat_value = 0 + var/stat_name = "" + +/datum/bounty/virus/New() + ..() + stat_value = rand(4, 11) + if(rand(3) == 1) + stat_value *= -1 + name = "Virus ([stat_name] of [stat_value])" + description = "Nanotrasen is interested in a virus with a [stat_name] stat of exactly [stat_value]. Central Command will pay handsomely for such a virus." + reward += rand(0, 4) * 500 + +/datum/bounty/virus/completion_string() + return shipped ? "Shipped" : "Not Shipped" + +/datum/bounty/virus/can_claim() + return ..() && shipped + +/datum/bounty/virus/applies_to(obj/O) + if(shipped) + return FALSE + if(O.flags_1 & HOLOGRAM_1) + return FALSE + if(!istype(O, /obj/item/reagent_containers || !O.reagents || !O.reagents.reagent_list)) + return FALSE + var/datum/reagent/blood/B = locate() in O.reagents.reagent_list + if(!B) + return FALSE + for(var/V in B.get_diseases()) + if(!istype(V, /datum/disease/advance)) + continue + if(accepts_virus(V)) + return TRUE + return FALSE + +/datum/bounty/virus/ship(obj/O) + if(!applies_to(O)) + return + shipped = TRUE + +/datum/bounty/virus/compatible_with(datum/other_bounty) + if(!istype(other_bounty, /datum/bounty/virus)) + return TRUE + var/datum/bounty/virus/V = other_bounty + return type != V.type || stat_value != V.stat_value + + +/datum/bounty/virus/proc/accepts_virus(V) + return TRUE + +/datum/bounty/virus/resistance + stat_name = "resistance" + +/datum/bounty/virus/resistance/accepts_virus(V) + var/datum/disease/advance/A = V + return A.totalResistance() == stat_value + +/datum/bounty/virus/stage_speed + stat_name = "stage speed" + +/datum/bounty/virus/stage_speed/accepts_virus(V) + var/datum/disease/advance/A = V + return A.totalStageSpeed() == stat_value + +/datum/bounty/virus/stealth + stat_name = "stealth" + +/datum/bounty/virus/stealth/accepts_virus(V) + var/datum/disease/advance/A = V + return A.totalStealth() == stat_value + +/datum/bounty/virus/transmit + stat_name = "transmissible" + +/datum/bounty/virus/transmit/accepts_virus(V) + var/datum/disease/advance/A = V + return A.totalTransmittable() == stat_value + diff --git a/code/modules/cargo/bounty.dm b/code/modules/cargo/bounty.dm new file mode 100644 index 0000000000..6153fd7678 --- /dev/null +++ b/code/modules/cargo/bounty.dm @@ -0,0 +1,148 @@ +GLOBAL_LIST_EMPTY(bounties_list) + +/datum/bounty + var/name + var/description + var/reward = 1000 // In credits. + var/claimed = FALSE + var/high_priority = FALSE + +// Displayed on bounty UI screen. +/datum/bounty/proc/completion_string() + return "" + +// Displayed on bounty UI screen. +/datum/bounty/proc/reward_string() + return "[reward] Credits" + +/datum/bounty/proc/can_claim() + return !claimed + +// Called when the claim button is clicked. Override to provide fancy rewards. +/datum/bounty/proc/claim() + if(can_claim()) + SSshuttle.points += reward + claimed = TRUE + +// If an item sent in the cargo shuttle can satisfy the bounty. +/datum/bounty/proc/applies_to(obj/O) + return FALSE + +// Called when an object is shipped on the cargo shuttle. +/datum/bounty/proc/ship(obj/O) + return + +// When randomly generating the bounty list, duplicate bounties must be avoided. +// This proc is used to determine if two bounties are duplicates, or incompatible in general. +/datum/bounty/proc/compatible_with(other_bounty) + return TRUE + +/datum/bounty/proc/mark_high_priority(scale_reward = 2) + if(high_priority) + return + high_priority = TRUE + reward = round(reward * scale_reward) + +// This proc is called when the shuttle docks at CentCom. +// It handles items shipped for bounties. +/proc/bounty_ship_item_and_contents(atom/movable/AM, dry_run=FALSE) + if(!GLOB.bounties_list.len) + setup_bounties() + + var/list/matched_one = FALSE + for(var/thing in reverseRange(AM.GetAllContents())) + var/matched_this = FALSE + for(var/datum/bounty/B in GLOB.bounties_list) + if(B.applies_to(thing)) + matched_one = TRUE + matched_this = TRUE + if(!dry_run) + B.ship(thing) + if(!dry_run && matched_this) + qdel(thing) + return matched_one + +// Returns FALSE if the bounty is incompatible with the current bounties. +/proc/try_add_bounty(datum/bounty/new_bounty) + if(!new_bounty || !new_bounty.name || !new_bounty.description) + return FALSE + for(var/i in GLOB.bounties_list) + var/datum/bounty/B = i + if(!B.compatible_with(new_bounty) || !new_bounty.compatible_with(B)) + return FALSE + GLOB.bounties_list += new_bounty + return TRUE + +// Returns a new bounty of random type, but does not add it to GLOB.bounties_list. +/proc/random_bounty() + switch(rand(1, 9)) + if(1) + var/subtype = pick(subtypesof(/datum/bounty/item/assistant)) + return new subtype + if(2) + var/subtype = pick(subtypesof(/datum/bounty/item/mech)) + return new subtype + if(3) + var/subtype = pick(subtypesof(/datum/bounty/item/chef)) + return new subtype + if(4) + var/subtype = pick(subtypesof(/datum/bounty/item/security)) + return new subtype + if(5) + if(rand(2) == 1) + return new /datum/bounty/reagent/simple_drink + return new /datum/bounty/reagent/complex_drink + if(6) + return new /datum/bounty/reagent/chemical + if(7) + var/subtype = pick(subtypesof(/datum/bounty/virus)) + return new subtype + if(8) + var/subtype = pick(subtypesof(/datum/bounty/item/science)) + return new subtype + if(9) + var/subtype = pick(subtypesof(/datum/bounty/item/slime)) + return new subtype + +// Called lazily at startup to populate GLOB.bounties_list with random bounties. +/proc/setup_bounties() + for(var/i = 0; i < 3; ++i) + var/subtype = pick(subtypesof(/datum/bounty/item/assistant)) + try_add_bounty(new subtype) + + for(var/i = 0; i < 1; ++i) + var/list/subtype = pick(subtypesof(/datum/bounty/item/mech)) + try_add_bounty(new subtype) + + for(var/i = 0; i < 2; ++i) + var/list/subtype = pick(subtypesof(/datum/bounty/item/chef)) + try_add_bounty(new subtype) + + for(var/i = 0; i < 1; ++i) + var/list/subtype = pick(subtypesof(/datum/bounty/item/security)) + try_add_bounty(new subtype) + + try_add_bounty(new /datum/bounty/reagent/simple_drink) + try_add_bounty(new /datum/bounty/reagent/complex_drink) + try_add_bounty(new /datum/bounty/reagent/chemical) + + for(var/i = 0; i < 1; ++i) + var/list/subtype = pick(subtypesof(/datum/bounty/virus)) + try_add_bounty(new subtype) + + var/datum/bounty/B = pick(GLOB.bounties_list) + B.mark_high_priority() + + // Generate these last so they can't be high priority. + try_add_bounty(new /datum/bounty/item/alien_organs) + try_add_bounty(new /datum/bounty/item/syndicate_documents) + try_add_bounty(new /datum/bounty/more_bounties) + +/proc/completed_bounty_count() + var/count = 0 + for(var/i in GLOB.bounties_list) + var/datum/bounty/B = i + if(B.claimed) + ++count + return count + diff --git a/code/modules/cargo/bounty_console.dm b/code/modules/cargo/bounty_console.dm new file mode 100644 index 0000000000..2e5d943dd6 --- /dev/null +++ b/code/modules/cargo/bounty_console.dm @@ -0,0 +1,94 @@ +#define PRINTER_TIMEOUT 10 + +/obj/machinery/computer/bounty + name = "Nanotrasen bounty console" + desc = "Used to check and claim bounties offered by Nanotrasen" + icon_screen = "bounty" + circuit = /obj/item/circuitboard/computer/bounty + light_color = "#E2853D"//orange + var/printer_ready = 0 //cooldown var + +/obj/machinery/computer/bounty/Initialize() + . = ..() + printer_ready = world.time + PRINTER_TIMEOUT + +/obj/machinery/computer/bounty/proc/print_paper() + new /obj/item/paper/bounty_printout(loc) + +/obj/item/paper/bounty_printout + name = "paper - Bounties" + +/obj/item/paper/bounty_printout/Initialize() + . = ..() + info = "

    Nanotrasen Cargo Bounties


    " + for(var/datum/bounty/B in GLOB.bounties_list) + if(B.claimed) + continue + info += "

    [B.name]

    " + info += "
    • Reward: [B.reward_string()]
    • " + info += "
    • Completed: [B.completion_string()]
    " + +/obj/machinery/computer/bounty/ui_interact(mob/user) + . = ..() + + if(!GLOB.bounties_list.len) + setup_bounties() + + var/dat = "" + dat += "Refresh" + dat += "Print Paper" + dat += "

    Credits: [SSshuttle.points]

    " + dat += {""} + dat += "" + for(var/datum/bounty/B in GLOB.bounties_list) + var/background + if(B.can_claim()) + background = "'background-color:#4F7529;'" + else if(B.claimed) + background = "'background-color:#294675;'" + else + background = "'background-color:#990000;'" + dat += "" + if(B.high_priority) + dat += text("", B.name) + dat += text("", B.description) + dat += text("", B.reward_string()) + else + dat += text("", B.name) + dat += text("", B.description) + dat += text("", B.reward_string()) + dat += text("", B.completion_string()) + if(B.can_claim()) + dat += text("") + else if(B.claimed) + dat += text("") + else + dat += text("") + dat += "" + dat += "
    NameDescriptionRewardCompletionStatus
    []High Priority: [][][][][][]ClaimClaimedUnclaimed
    " + + var/datum/browser/popup = new(user, "bounties", "Nanotrasen Bounties", 700, 600) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + +/obj/machinery/computer/bounty/Topic(href, href_list) + if(..()) + return + + switch(href_list["choice"]) + if("Print") + if(printer_ready < world.time) + printer_ready = world.time + PRINTER_TIMEOUT + print_paper() + + if("Claim") + var/datum/bounty/B = locate(href_list["d_rec"]) + if(B in GLOB.bounties_list) + B.claim() + + if(href_list["refresh"]) + playsound(src, "terminal_type", 25, 0) + + updateUsrDialog() + diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index 59c8fa002f..f0446b9771 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -5,9 +5,9 @@ circuit = /obj/item/circuitboard/computer/cargo var/requestonly = FALSE var/contraband = FALSE - var/safety_warning = "For safety reasons the automated supply shuttle \ - cannot transport live organisms, classified nuclear weaponry or \ - homing beacons." + var/safety_warning = "For safety reasons, the automated supply shuttle \ + cannot transport live organisms, human remains, classified nuclear weaponry \ + or homing beacons." var/blockade_warning = "Bluespace instability detected. Shuttle movement impossible." light_color = "#E2853D"//orange @@ -121,7 +121,7 @@ SSshuttle.supply.obj_flags = (SSshuttle.supply.obj_flags & ~EMAGGED) SSshuttle.supply.contraband = contraband SSshuttle.moveShuttle("supply", "supply_away", TRUE) - say("The supply shuttle has departed.") + say("The supply shuttle is departing.") investigate_log("[key_name(usr)] sent the supply shuttle away.", INVESTIGATE_CARGO) else investigate_log("[key_name(usr)] called the supply shuttle.", INVESTIGATE_CARGO) diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm index 37c2915bea..2113696e90 100644 --- a/code/modules/cargo/export_scanner.dm +++ b/code/modules/cargo/export_scanner.dm @@ -1,12 +1,12 @@ /obj/item/export_scanner name = "export scanner" - desc = "A device used to check objects against Nanotrasen exports database." + desc = "A device used to check objects against Nanotrasen exports and bounty database." icon = 'icons/obj/device.dmi' icon_state = "export_scanner" item_state = "radio" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON w_class = WEIGHT_CLASS_SMALL siemens_coefficient = 1 var/obj/machinery/computer/cargo/cargo_console = null @@ -31,8 +31,9 @@ // Before you fix it: // yes, checking manifests is a part of intended functionality. var/price = export_item_and_contents(O, cargo_console.contraband, (cargo_console.obj_flags & EMAGGED), dry_run=TRUE) - if(price) to_chat(user, "Scanned [O], value: [price] credits[O.contents.len ? " (contents included)" : ""].") else to_chat(user, "Scanned [O], no export value.") + if(bounty_ship_item_and_contents(O, dry_run=TRUE)) + to_chat(user, "Scanned item is eligible for one or more bounties.") diff --git a/code/modules/cargo/exports/gear.dm b/code/modules/cargo/exports/gear.dm index 6d8d8a5d1d..125e0f708b 100644 --- a/code/modules/cargo/exports/gear.dm +++ b/code/modules/cargo/exports/gear.dm @@ -1,8 +1,5 @@ -// Armor, gloves, space suits - it all goes here - /datum/export/gear -// Security gear /datum/export/gear/sec_helmet cost = 100 unit_name = "helmet" @@ -12,37 +9,13 @@ cost = 100 unit_name = "armor vest" export_types = list(/obj/item/clothing/suit/armor/vest) - include_subtypes = FALSE - - -/datum/export/gear/riot_helmet - cost = 250 - unit_name = "riot helmet" - export_types = list(/obj/item/clothing/head/helmet/riot) - -/datum/export/gear/riot_armor - cost = 250 - unit_name = "riot armor suit" - export_types = list(/obj/item/clothing/suit/armor/riot) - -/datum/export/gear/bulletproof_armor - cost = 250 - unit_name = "bulletproof armor vest" - export_types = list(/obj/item/clothing/suit/armor/bulletproof) - -/datum/export/gear/reflector_armor - cost = 650 - unit_name = "reflector armor vest" - export_types = list(/obj/item/clothing/suit/armor/laserproof) - /datum/export/gear/riot_shield - cost = 400 + cost = 100 unit_name = "riot shield" export_types = list(/obj/item/shield/riot) -// Masks /datum/export/gear/mask/breath cost = 2 unit_name = "breath mask" @@ -55,47 +28,30 @@ include_subtypes = FALSE - -// EVA gear -/datum/export/gear/space +/datum/export/gear/space/helmet + cost = 75 + unit_name = "space helmet" + export_types = list(/obj/item/clothing/head/helmet/space, /obj/item/clothing/head/helmet/space/eva, /obj/item/clothing/head/helmet/space/nasavoid) include_subtypes = FALSE -/datum/export/gear/space/helmet - cost = 500 - unit_name = "space helmet" - export_types = list(/obj/item/clothing/head/helmet/space, /obj/item/clothing/head/helmet/space/eva) - /datum/export/gear/space/suit - cost = 600 + cost = 150 unit_name = "space suit" - export_types = list(/obj/item/clothing/suit/space, /obj/item/clothing/suit/space/eva) - - -/datum/export/gear/space/voidhelmet - cost = 550 - unit_name = "void helmet" - export_types = list(/obj/item/clothing/head/helmet/space/nasavoid) - -/datum/export/gear/space/voidsuit - cost = 650 - unit_name = "void suit" - export_types = list(/obj/item/clothing/suit/space/nasavoid) + export_types = list(/obj/item/clothing/suit/space, /obj/item/clothing/suit/space/eva, /obj/item/clothing/suit/space/nasavoid) + include_subtypes = FALSE /datum/export/gear/space/syndiehelmet - cost = 1000 + cost = 150 unit_name = "Syndicate space helmet" export_types = list(/obj/item/clothing/head/helmet/space/syndicate) - include_subtypes = TRUE /datum/export/gear/space/syndiesuit - cost = 1500 + cost = 300 unit_name = "Syndicate space suit" export_types = list(/obj/item/clothing/suit/space/syndicate) - include_subtypes = TRUE -// Radsuits /datum/export/gear/radhelmet cost = 50 unit_name = "radsuit hood" @@ -106,7 +62,6 @@ unit_name = "radsuit" export_types = list(/obj/item/clothing/suit/radiation) -// Biosuits /datum/export/gear/biohood cost = 50 unit_name = "biosuit hood" @@ -117,13 +72,12 @@ unit_name = "biosuit" export_types = list(/obj/item/clothing/suit/bio_suit) -// Bombsuits /datum/export/gear/bombhelmet - cost = 100 + cost = 50 unit_name = "bomb suit hood" export_types = list(/obj/item/clothing/head/bomb_hood) /datum/export/gear/bombsuit - cost = 300 + cost = 100 unit_name = "bomb suit" - export_types = list(/obj/item/clothing/suit/bomb_suit) \ No newline at end of file + export_types = list(/obj/item/clothing/suit/bomb_suit) diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 9eec36f53a..aed640cd47 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -1,6 +1,3 @@ -// Large objects that don't fit in crates, but must be sellable anyway. - -// Crates, boxes, lockers. /datum/export/large/crate cost = 500 k_elasticity = 0 @@ -29,9 +26,11 @@ export_types = list(/obj/structure/closet/crate/wooden) exclude_types = list() +/datum/export/large/crate/coffin + cost = 250//50 wooden crates cost 2000 points, and you can make 10 coffins in seconds with those planks. Each coffin selling for 250 means you can make a net gain of 500 points for wasting your time making coffins. + unit_name = "coffin" + export_types = list(/obj/structure/closet/crate/coffin) - -// Reagent dispensers. /datum/export/large/reagent_dispenser cost = 100 // +0-400 depending on amount of reagents left var/contents_cost = 400 @@ -58,19 +57,18 @@ -// Heavy engineering equipment. Singulo/Tesla parts mostly. /datum/export/large/emitter - cost = 400 + cost = 200 unit_name = "emitter" export_types = list(/obj/machinery/power/emitter) /datum/export/large/field_generator - cost = 400 + cost = 200 unit_name = "field generator" export_types = list(/obj/machinery/field/generator) /datum/export/large/collector - cost = 600 + cost = 200 unit_name = "collector" export_types = list(/obj/machinery/power/rad_collector) @@ -94,89 +92,14 @@ unit_name = "supermatter shard" export_types = list(/obj/machinery/power/supermatter_crystal/shard) -// Misc + /datum/export/large/iv - cost = 300 + cost = 50 unit_name = "iv drip" export_types = list(/obj/machinery/iv_drip) /datum/export/large/barrier - cost = 100 + cost = 25 unit_name = "security barrier" export_types = list(/obj/item/grenade/barrier, /obj/structure/barricade/security) -//Mecha -/datum/export/large/mech - export_types = list(/obj/mecha) - var/sellable - -/datum/export/large/mech/applies_to(obj/O) - if(!..()) - return FALSE - - var/obj/mecha/ME = O - ME.wreckage = null // So the mech doesn't blow up in the cargo shuttle - if(sellable) - return TRUE - -/datum/export/large/mech/sellable - export_types = list() - sellable = TRUE - -/datum/export/large/mech/sellable/ripley - cost = 7500 //boards cost 2500 and takes another 1566 worth of materials (glass, metal, plaseel) to build + significant labor - unit_name = "APLU \"Ripley\"" - export_types = list(/obj/mecha/working/ripley) - exclude_types = list(/obj/mecha/working/ripley/firefighter) - -/datum/export/large/mech/sellable/firefighter - cost = 9000 //same as a ripley but takes 10 more plasteel and 5 less metal - unit_name = "APLU \"Firefighter\"" - export_types = list(/obj/mecha/working/ripley/firefighter) - -/datum/export/large/mech/sellable/odysseus - cost = 6000 // 1540 of material + 2000 price boards + labor - unit_name = "odysseus" - export_types = list(/obj/mecha/medical/odysseus) - -/datum/export/large/mech/sellable/gygax - cost = 25000 // The material is worth 22631 alone. Not as big of a premium as one would expect, since R&D would have provided upgrades by then. - unit_name = "gygax" - export_types = list(/obj/mecha/combat/gygax) - exclude_types = list(/obj/mecha/combat/gygax/dark) - -/datum/export/large/mech/sellable/honkmech - cost = 80000 // The bananium alone is worth around 64887 credits - unit_name = "H.O.N.K" - message = "- HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONK HONKHONKHONKHONK" - export_types = list(/obj/mecha/combat/honker) - -/datum/export/large/mech/sellable/durand - cost = 12000 // 7586 worth of material. That's less than a gygax. Players will be disappointed by the durand's comparative lack of worth but oh well. Still a large premium because this requires significant cooperation between R&D, robotics, and cargo. - unit_name = "durand" - export_types = list(/obj/mecha/combat/durand) - -/datum/export/large/mech/sellable/phazon - cost = 50000 // 15767 material + anomaly core. Fuck it, if you're willing to try selling one of these you should get BIG FUCKING MONEY - unit_name = "phazon" - export_types = list(/obj/mecha/combat/phazon) - -/datum/export/large/mech/sellable/syndiegygax - cost = 50000 // You somehow stole a nuke op's gygax and sold it to nanotrasen. Go you. - unit_name = "captured syndicate gygax" - export_types = list(/obj/mecha/combat/gygax/dark) - -/datum/export/large/mech/sellable/syndiegygax/syndie - cost = 25000 // You somehow stole a nuke op's gygax and sold it back to the syndicate. Why would you do this? - unit_name = "gygax" - emagged = TRUE - -/datum/export/large/mech/sellable/mauler - cost = 87500 // Whoa, momma. - unit_name = "captured mauler" - export_types = list(/obj/mecha/combat/marauder/mauler) - -/datum/export/large/mech/sellable/mauler/syndie - cost = 43750 // Just like the mauler is worth 1.75x the telecrystals compared to the gygax, the price reflects this - unit_name = "mauler" - emagged = TRUE diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index 04117fc7a3..04dc76fd52 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -29,65 +29,57 @@ // Materials. Nothing but plasma is really worth selling. Better leave it all to RnD and sell some plasma instead. -// Bananium. Exporting it makes the clown cry. Priceless. /datum/export/material/bananium - cost = 5000 + cost = 1000 material_id = MAT_BANANIUM message = "cm3 of bananium" -// Diamonds. Rare and expensive. /datum/export/material/diamond - cost = 2500 + cost = 500 material_id = MAT_DIAMOND message = "cm3 of diamonds" -// Plasma. The oil of 26 century. The reason why you are here. /datum/export/material/plasma - cost = 300 + cost = 200 k_elasticity = 0 material_id = MAT_PLASMA message = "cm3 of plasma" -// Uranium. Still useful for both power generation and nuclear annihilation. /datum/export/material/uranium - cost = 400 + cost = 100 material_id = MAT_URANIUM message = "cm3 of uranium" -// Gold. Used in electronics and corrosion-resistant plating. /datum/export/material/gold - cost = 250 + cost = 125 material_id = MAT_GOLD message = "cm3 of gold" -// Silver. /datum/export/material/silver - cost = 100 + cost = 50 material_id = MAT_SILVER message = "cm3 of silver" -// Titanium. /datum/export/material/titanium - cost = 250 + cost = 125 material_id = MAT_TITANIUM message = "cm3 of titanium" -// Plastitanium. /datum/export/material/plastitanium - cost = 550 - material_id = MAT_TITANIUM // code can only check for one material_id; plastitanium is half plasma, half titanium, so ((250 x 250) + (250 x 500)) / 250 + cost = 325 // plasma + titanium costs + material_id = MAT_TITANIUM // code can only check for one material_id; plastitanium is half plasma, half titanium message = "cm3 of plastitanium" -// Metal. Common building material. /datum/export/material/metal + cost = 5 message = "cm3 of metal" material_id = MAT_METAL export_types = list( /obj/item/stack/sheet/metal, /obj/item/stack/tile/plasteel, /obj/item/stack/rods, /obj/item/stack/ore, /obj/item/coin) -// Glass. Common building material. /datum/export/material/glass + cost = 5 message = "cm3 of glass" material_id = MAT_GLASS export_types = list(/obj/item/stack/sheet/glass, /obj/item/stack/ore, diff --git a/code/modules/cargo/exports/seeds.dm b/code/modules/cargo/exports/seeds.dm index e73ef23ec4..42104ec165 100644 --- a/code/modules/cargo/exports/seeds.dm +++ b/code/modules/cargo/exports/seeds.dm @@ -1,5 +1,5 @@ /datum/export/seed - cost = 100 // Gets multiplied by potency + cost = 50 // Gets multiplied by potency k_elasticity = 1 //price inelastic/quantity elastic, only need to export a few samples unit_name = "new plant species sample" export_types = list(/obj/item/seeds) diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index a51d2e9c6e..4c167026b4 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -1,7 +1,3 @@ -// -// Sheet Exports -// - /datum/export/stack unit_name = "sheet" @@ -11,106 +7,87 @@ return S.amount return 0 +// Hides -// Leather, skin and other farming by-products. - -/datum/export/stack/skin - unit_name = "" - -// Monkey hide. Cheap. /datum/export/stack/skin/monkey - cost = 150 + cost = 50 unit_name = "monkey hide" export_types = list(/obj/item/stack/sheet/animalhide/monkey) -// Human skin. Illegal /datum/export/stack/skin/human - cost = 2000 + cost = 100 contraband = TRUE unit_name = "piece" message = "of human skin" export_types = list(/obj/item/stack/sheet/animalhide/human) -// Goliath hide. Expensive. /datum/export/stack/skin/goliath_hide - cost = 2500 + cost = 200 unit_name = "goliath hide" export_types = list(/obj/item/stack/sheet/animalhide/goliath_hide) -// Cat hide. Just in case Runtime is catsploding again. /datum/export/stack/skin/cat - cost = 2000 + cost = 150 contraband = TRUE unit_name = "cat hide" export_types = list(/obj/item/stack/sheet/animalhide/cat) -// Corgi hide. You monster. /datum/export/stack/skin/corgi - cost = 2500 + cost = 200 contraband = TRUE unit_name = "corgi hide" export_types = list(/obj/item/stack/sheet/animalhide/corgi) -// Lizard hide. Very expensive. /datum/export/stack/skin/lizard - cost = 5000 + cost = 150 unit_name = "lizard hide" export_types = list(/obj/item/stack/sheet/animalhide/lizard) -// Gondola hide. Mindbogglingly expensive. /datum/export/stack/skin/gondola - cost = 10000 + cost = 500 unit_name = "gondola hide" export_types = list(/obj/item/stack/sheet/animalhide/gondola) -// Alien hide. Extremely expensive. /datum/export/stack/skin/xeno - cost = 3000 + cost = 500 unit_name = "alien hide" export_types = list(/obj/item/stack/sheet/animalhide/xeno) - // Common materials. // For base materials, see materials.dm -// Plasteel. Lightweight, strong and contains some plasma too. /datum/export/stack/plasteel - cost = 305 // 2000u of plasma + 2000u of metal. + cost = 155 // 2000u of plasma + 2000u of metal. message = "of plasteel" export_types = list(/obj/item/stack/sheet/plasteel) -// Reinforced Glass. Common building material. 1 glass + 0.5 metal, cost is rounded up. +// 1 glass + 0.5 metal, cost is rounded up. /datum/export/stack/rglass cost = 8 message = "of reinforced glass" export_types = list(/obj/item/stack/sheet/rglass) -// Bluespace Polycrystals. Uncommon. /datum/export/stack/bscrystal - cost = 750 + cost = 300 message = "of bluespace crystals" export_types = list(/obj/item/stack/sheet/bluespace_crystal) -// Wood. Quite expensive in the grim and dark 26 century. /datum/export/stack/wood - cost = 50 + cost = 30 unit_name = "wood plank" export_types = list(/obj/item/stack/sheet/mineral/wood) -// Cardboard. Cheap. /datum/export/stack/cardboard cost = 2 message = "of cardboard" export_types = list(/obj/item/stack/sheet/cardboard) -// Sandstone. Literally dirt cheap. /datum/export/stack/sandstone cost = 1 unit_name = "block" message = "of sandstone" export_types = list(/obj/item/stack/sheet/mineral/sandstone) -// Cable. /datum/export/stack/cable cost = 0.2 unit_name = "cable piece" @@ -118,23 +95,14 @@ // Weird Stuff -// Alien Alloy. Like plasteel, but better. -// Major players would pay a lot to get some, so you can get a lot of money from producing and selling those. -// Just don't forget to fire all your production staff before the end of month. /datum/export/stack/abductor - cost = 5000 + cost = 1000 message = "of alien alloy" export_types = list(/obj/item/stack/sheet/mineral/abductor) -// Adamantine. Does not occur naurally. /datum/export/stack/adamantine unit_name = "bar" - cost = 7500 + cost = 500 message = "of adamantine" export_types = list(/obj/item/stack/sheet/mineral/adamantine) -// Mythril. Does not occur naurally. -/datum/export/stack/mythril - cost = 15000 - message = "of mythril" - export_types = list(/obj/item/stack/sheet/mineral/mythril) diff --git a/code/modules/cargo/exports/tools.dm b/code/modules/cargo/exports/tools.dm index 72514a6a89..024c93821a 100644 --- a/code/modules/cargo/exports/tools.dm +++ b/code/modules/cargo/exports/tools.dm @@ -1,5 +1,3 @@ -// Various tools and handheld engineering devices. - /datum/export/toolbox cost = 4 unit_name = "toolbox" @@ -34,7 +32,6 @@ export_types = list(/obj/item/wirecutters) -// Welding tools /datum/export/weldingtool cost = 5 unit_name = "welding tool" @@ -52,7 +49,6 @@ export_types = list(/obj/item/weldingtool/largetank, /obj/item/weldingtool/hugetank) -// Fire extinguishers /datum/export/extinguisher cost = 15 unit_name = "fire extinguisher" @@ -65,7 +61,6 @@ export_types = list(/obj/item/extinguisher/mini) -// Flashlights /datum/export/flashlight cost = 5 unit_name = "flashlight" @@ -83,7 +78,6 @@ export_types = list(/obj/item/flashlight/seclite) -// Analyzers and Scanners /datum/export/analyzer cost = 5 unit_name = "analyzer" @@ -102,18 +96,17 @@ exclude_types = list(/obj/item/radio/mech) -// High-tech tools. /datum/export/rcd - cost = 100 // 15 metal -> 75 credits, +25 credits for production + cost = 100 unit_name = "rapid construction device" export_types = list(/obj/item/construction/rcd) /datum/export/rcd_ammo - cost = 60 // 6 metal, 4 glass -> 50 credits, +10 credits + cost = 60 unit_name = "compressed matter cardridge" export_types = list(/obj/item/rcd_ammo) /datum/export/rpd - cost = 350 // 37.5 metal, 18.75 glass -> 281.25 credits, + some + cost = 100 unit_name = "rapid piping device" export_types = list(/obj/item/pipe_dispenser) diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm index ea326beacf..0d363f7132 100644 --- a/code/modules/cargo/exports/weapons.dm +++ b/code/modules/cargo/exports/weapons.dm @@ -11,18 +11,18 @@ include_subtypes = TRUE /datum/export/weapon/knife - cost = 750 + cost = 100 unit_name = "combat knife" export_types = list(/obj/item/kitchen/knife/combat) /datum/export/weapon/taser - cost = 250 + cost = 200 unit_name = "advanced taser" export_types = list(/obj/item/gun/energy/e_gun/advtaser) /datum/export/weapon/laser - cost = 250 + cost = 200 unit_name = "laser gun" export_types = list(/obj/item/gun/energy/laser) @@ -32,35 +32,34 @@ export_types = list(/obj/item/gun/energy/disabler) /datum/export/weapon/energy_gun - cost = 900 + cost = 300 unit_name = "energy gun" export_types = list(/obj/item/gun/energy/e_gun) - /datum/export/weapon/wt550 - cost = 1400 + cost = 300 unit_name = "WT-550 automatic rifle" export_types = list(/obj/item/gun/ballistic/automatic/wt550) /datum/export/weapon/shotgun - cost = 350 + cost = 300 unit_name = "combat shotgun" export_types = list(/obj/item/gun/ballistic/shotgun/automatic/combat) /datum/export/weapon/flashbang - cost = 15 + cost = 5 unit_name = "flashbang grenade" export_types = list(/obj/item/grenade/flashbang) /datum/export/weapon/teargas - cost = 15 + cost = 5 unit_name = "tear gas grenade" export_types = list(/obj/item/grenade/chem_grenade/teargas) /datum/export/weapon/flash - cost = 10 + cost = 5 unit_name = "handheld flash" export_types = list(/obj/item/assembly/flash) include_subtypes = TRUE @@ -70,56 +69,56 @@ unit_name = "pair" message = "of handcuffs" export_types = list(/obj/item/restraints/handcuffs) - + // relics of lavaland /datum/export/weapon/hierophant cost = 40000 unit_name = "Hierophant Club" export_types = list(/obj/item/hierophant_club) - + /datum/export/weapon/lava cost = 40000 unit_name = "Lava Staff" export_types = list(/obj/item/lava_staff) - + /datum/export/weapon/cleaving_saw cost = 40000 unit_name = "Cleaving Saw" export_types = list(/obj/item/melee/transforming/cleaving_saw) - + /datum/export/weapon/mayhem cost = 40000 unit_name = "Mayhem in a bottle" export_types = list(/obj/item/mayhem) - + /datum/export/weapon/blood_contract cost = 40000 unit_name = "Blood Contract" export_types = list(/obj/item/blood_contract) - + //Artifacts of lavaland /datum/export/weapon/immortality_talisman cost = 10000 unit_name = "Immortality Talisman" export_types = list(/obj/item/immortality_talisman) - + /datum/export/weapon/babel cost = 10000 unit_name = "Book of Babel" export_types = list(/obj/item/book_of_babel) - + /datum/export/weapon/hook cost = 10000 unit_name = "Meat hook" export_types = list(/obj/item/gun/magic/hook) - + /datum/export/weapon/shipbottle //the price for not breaking the bottle. cost = 20000 unit_name = "Ship in a bottle" export_types = list(/obj/item/ship_in_a_bottle) - + /datum/export/weapon/tarot //price for sacraficing a very profitiable ally cost = 20000 unit_name = "Tarot cards" @@ -129,37 +128,37 @@ cost = 5000 unit_name = "Red Cube" export_types = list(/obj/item/warp_cube/red) - + /datum/export/weapon/blue //first half of telecube cost = 5000 unit_name = "Blue Cube" export_types = list(/obj/item/warp_cube) - + /datum/export/weapon/wisplantern //thermals on lavaland cost = 10000 unit_name = "Wisp Lantern" export_types = list(/obj/item/wisp_lantern) - + /datum/export/weapon/flight //if xenobiology ever reaches the point to get these without shuttle being called they deserve it cost = 10000 - unit_name = "Strange Elixer" + unit_name = "Strange Elixir" export_types = list(/obj/item/reagent_containers/glass/bottle/potion/flight) - + /datum/export/weapon/cheart //is a very powerfull healing artifact in the robust hands cost = 10000 unit_name = "Cursed Heart" export_types = list(/obj/item/organ/heart/cursed/wizard) - + /datum/export/weapon/ckatana cost = 10000 unit_name = "Katana" export_types = list(/obj/item/katana/cursed) - + /datum/export/weapon/geye //xray cost = 10000 unit_name = "God eye" export_types = list(/obj/item/clothing/glasses/godeye) - + /datum/export/weapon/spectral cost = 10000 unit_name = "Spectral Sword" diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index c2cf51ede6..c357aac5c5 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -1,23 +1,38 @@ #define MAX_EMAG_ROCKETS 8 +#define BEACON_COST 5000 +#define SP_LINKED 1 +#define SP_READY 2 +#define SP_LAUNCH 3 +#define SP_UNLINK 4 +#define SP_UNREADY 5 /obj/machinery/computer/cargo/express name = "express supply console" desc = "This console allows the user to purchase a package \ - with 1/40th of the delivery time: made possible by NanoTrasen's new \"Drop Pod Railgun\".\ + with 1/40th of the delivery time: made possible by NanoTrasen's new \"1500mm Orbital Railgun\".\ All sales are near instantaneous - please choose carefully" icon_screen = "supply_express" circuit = /obj/item/circuitboard/computer/cargo/express blockade_warning = "Bluespace instability detected. Delivery impossible." req_access = list(ACCESS_QM) var/message - var/locked = TRUE + var/printed_beacons = 0 //number of beacons printed. Used to determine beacon names. var/list/meme_pack_data - var/podID = 0//0 is your standard supply droppod (requires dissassembly after landing), 1 is the bluespace drop pod (teleports out after landing) + var/obj/item/supplypod_beacon/beacon //the linked supplypod beacon + var/area/landingzone = /area/quartermaster/storage //where we droppin boys + var/podID = POD_STANDARD //0 is your standard supply supplypod (requires dissassembly after landing), 1 is the bluespace supply pod (teleports out after landing) + var/cooldown = 0 //cooldown to prevent printing supplypod beacon spam + var/locked = TRUE //is the console locked? unlock with ID + var/usingBeacon = FALSE //is the console in beacon mode? exists to let beacon know when a pod may come in /obj/machinery/computer/cargo/express/Initialize() . = ..() packin_up() +/obj/machinery/computer/cargo/express/Destroy() + if(beacon) + beacon.unlink_console() + return ..() /obj/machinery/computer/cargo/express/attackby(obj/item/W, mob/living/user, params) if((istype(W, /obj/item/card/id) || istype(W, /obj/item/pda)) && allowed(user)) @@ -25,17 +40,24 @@ to_chat(user, "You [locked ? "lock" : "unlock"] the interface.") return else if(istype(W, /obj/item/disk/cargo/bluespace_pod)) - podID = 1//doesnt effect circuit board, so that reversal is possible + podID = POD_BLUESPACE//doesnt effect circuit board, making reversal possible to_chat(user, "You insert the disk into [src], allowing for advanced supply delivery vehicles.") qdel(W) return TRUE + else if(istype(W, /obj/item/supplypod_beacon)) + var/obj/item/supplypod_beacon/sb = W + if (sb.express_console != src) + sb.link_console(src, user) + return TRUE + else + to_chat(user, "[src] is already linked to [sb].") ..() /obj/machinery/computer/cargo/express/emag_act(mob/living/user) if(obj_flags & EMAGGED) return user.visible_message("[user] swipes a suspicious card through [src]!", - "You change the routing protocols, allowing the Drop Pod to land anywhere on the station.") + "You change the routing protocols, allowing the Supply Pod to land anywhere on the station.") obj_flags |= EMAGGED // This also sets this on the circuit board var/obj/item/circuitboard/computer/cargo/board = circuit @@ -68,29 +90,58 @@ ui = new(user, src, ui_key, "cargo_express", name, 1000, 800, master_ui, state) ui.open() - /obj/machinery/computer/cargo/express/ui_data(mob/user) + var/canBeacon = beacon && (isturf(beacon.loc) || ismob(beacon.loc))//is the beacon in a valid location? var/list/data = list() - data["locked"] = locked + data["locked"] = locked//swipe an ID to unlock data["siliconUser"] = user.has_unlimited_silicon_privilege + data["beaconzone"] = beacon ? get_area(beacon) : ""//where is the beacon located? outputs in the tgui + data["usingBeacon"] = usingBeacon //is the mode set to deliver to the beacon or the cargobay? + data["canBeacon"] = !usingBeacon || canBeacon //is the mode set to beacon delivery, and is the beacon in a valid location? + data["canBuyBeacon"] = cooldown <= 0 && SSshuttle.points >= BEACON_COST + data["beaconError"] = usingBeacon && !canBeacon ? "(BEACON ERROR)" : ""//changes button text to include an error alert if necessary + data["hasBeacon"] = beacon != null//is there a linked beacon? + data["beaconName"] = beacon ? beacon.name : "No Beacon Found" + data["printMsg"] = cooldown > 0 ? "Print Beacon for [BEACON_COST] credits ([cooldown])" : "Print Beacon for [BEACON_COST] credits"//buttontext for printing beacons data["points"] = SSshuttle.points data["supplies"] = list() message = "Sales are near-instantaneous - please choose carefully." if(SSshuttle.supplyBlocked) message = blockade_warning + if(usingBeacon && !beacon) + message = "BEACON ERROR: BEACON MISSING"//beacon was destroyed + else if (usingBeacon && !canBeacon) + message = "BEACON ERROR: MUST BE EXPOSED"//beacon's loc/user's loc must be a turf if(obj_flags & EMAGGED) message = "(&!#@ERROR: ROUTING_#PROTOCOL MALF(*CT#ON. $UG%ESTE@ ACT#0N: !^/PULS3-%E)ET CIR*)ITB%ARD." - data["message"] = message if(!meme_pack_data) packin_up() stack_trace("You didn't give the cargo tech good advice, and he ripped the manifest. As a result, there was no pack data for [src]") data["supplies"] = meme_pack_data - + if (cooldown > 0)//cooldown used for printing beacons + cooldown-- return data /obj/machinery/computer/cargo/express/ui_act(action, params, datum/tgui/ui) switch(action) + if("LZCargo") + usingBeacon = FALSE + if (beacon) + beacon.update_status(SP_UNREADY) //ready light on beacon will turn off + if("LZBeacon") + usingBeacon = TRUE + if (beacon) + beacon.update_status(SP_READY) //turns on the beacon's ready light + if("printBeacon") + if (SSshuttle.points >= BEACON_COST) + cooldown = 10//a ~ten second cooldown for printing beacons to prevent spam + var/obj/item/supplypod_beacon/C = new /obj/item/supplypod_beacon(drop_location()) + C.link_console(src, usr)//rather than in beacon's Initialize(), we can assign the computer to the beacon by reusing this proc) + printed_beacons++//printed_beacons starts at 0, so the first one out will be called beacon # 1 + beacon.name = "Supply Pod Beacon #[printed_beacons]" + SSshuttle.points -= BEACON_COST + if("add")//Generate Supply Order first var/id = text2path(params["id"]) var/datum/supply_pack/pack = SSshuttle.supply_packs[id] @@ -108,35 +159,43 @@ rank = "Silicon" var/reason = "" var/list/empty_turfs - var/area/landingzone var/datum/supply_order/SO = new(pack, name, rank, ckey, reason) if(!(obj_flags & EMAGGED)) if(SO.pack.cost <= SSshuttle.points) - landingzone = locate(/area/quartermaster/storage) in GLOB.sortedAreas - for(var/turf/open/floor/T in landingzone.contents) - if(is_blocked_turf(T)) - continue - LAZYADD(empty_turfs, T) - CHECK_TICK - if(empty_turfs && empty_turfs.len) - var/LZ = empty_turfs[rand(empty_turfs.len-1)] + var/LZ + if (istype(beacon) && usingBeacon)//prioritize beacons over landing in cargobay + LZ = get_turf(beacon) + beacon.update_status(SP_LAUNCH) + else if (!usingBeacon)//find a suitable supplypod landing zone in cargobay + landingzone = locate(/area/quartermaster/storage) in GLOB.sortedAreas + if (!landingzone) + WARNING("[src] couldnt find a Quartermaster/Storage (aka cargobay) area on the station, and as such it has set the supplypod landingzone to the area it resides in.") + landingzone = get_area(src) + for(var/turf/open/floor/T in landingzone.contents)//uses default landing zone + if(is_blocked_turf(T)) + continue + LAZYADD(empty_turfs, T) + CHECK_TICK + if(empty_turfs && empty_turfs.len) + LZ = pick(empty_turfs) + if (SO.pack.cost <= SSshuttle.points && LZ)//we need to call the cost check again because of the CHECK_TICK call SSshuttle.points -= SO.pack.cost new /obj/effect/DPtarget(LZ, SO, podID) . = TRUE update_icon() else if(SO.pack.cost * (0.72*MAX_EMAG_ROCKETS) <= SSshuttle.points) // bulk discount :^) - landingzone = locate(pick(GLOB.the_station_areas)) in GLOB.sortedAreas + landingzone = locate(pick(GLOB.the_station_areas)) in GLOB.sortedAreas //override default landing zone for(var/turf/open/floor/T in landingzone.contents) if(is_blocked_turf(T)) continue LAZYADD(empty_turfs, T) CHECK_TICK if(empty_turfs && empty_turfs.len) - SSshuttle.points -= SO.pack.cost * (1.2*MAX_EMAG_ROCKETS) + SSshuttle.points -= SO.pack.cost * (0.72*MAX_EMAG_ROCKETS) SO.generateRequisition(get_turf(src)) for(var/i in 1 to MAX_EMAG_ROCKETS) - var/LZ = empty_turfs[rand(empty_turfs.len-1)] + var/LZ = pick(empty_turfs) LAZYREMOVE(empty_turfs, LZ) new /obj/effect/DPtarget(LZ, SO, podID) . = TRUE diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 2d3ed07505..6e88990680 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -32,11 +32,12 @@ if (admin_spawned) for(var/item in contains) var/atom/A = new item(C) - A.admin_spawned = TRUE + A.flags_1 |= ADMIN_SPAWNED_1 else for(var/item in contains) new item(C) +// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Emergency /////////////////////////////////////// @@ -59,15 +60,6 @@ crate_name = "Biker Kit" crate_type = /obj/structure/closet/crate/large -/datum/supply_pack/emergency/droneshells - name = "Drone Shell Crate" - desc = "The station's little helpers. Contains three Drone Shells." - cost = 1000 - contains = list(/obj/item/drone_shell, - /obj/item/drone_shell, - /obj/item/drone_shell) - crate_name = "drone shell crate" - /datum/supply_pack/emergency/equipment name = "Emergency Bot/Internals Crate" desc = "Explosions got you down? These supplies are guaranteed to patch up holes, in stations and people alike! Comes with two floorbots, two medbots, five oxygen masks and five small oxygen tanks." @@ -101,8 +93,8 @@ /obj/item/flashlight, /obj/item/tank/internals/oxygen/red, /obj/item/tank/internals/oxygen/red, - /obj/item/extinguisher, - /obj/item/extinguisher, + /obj/item/extinguisher/advanced, + /obj/item/extinguisher/advanced, /obj/item/clothing/head/hardhat/red, /obj/item/clothing/head/hardhat/red) crate_name = "firefighting crate" @@ -180,7 +172,7 @@ /datum/supply_pack/emergency/radiation name = "Radiation Protection Crate" - desc = "Survive the Nuclear Apocalypse and Supermatter Engine alike with two sets of Radiation suits. Each set contains a helmet, suit, and geiger counter. We'll even throw in a bottle of vodka and some glasses too, considering the life-expectancy of people who order this." + desc = "Survive the Nuclear Apocalypse and Supermatter Engine alike with two sets of Radiation suits. Each set contains a helmet, suit, and Geiger counter. We'll even throw in a bottle of vodka and some glasses too, considering the life-expectancy of people who order this." cost = 1000 contains = list(/obj/item/clothing/head/radiation, /obj/item/clothing/head/radiation, @@ -224,7 +216,7 @@ /datum/supply_pack/emergency/weedcontrol name = "Weed Control Crate" - desc = "Keep those invasive species OUT. Contains a scythe, gasmask, and two anti-weed chemical grenades. Warrenty void if used on ambrosia. Requires Hydroponics access to open." + desc = "Keep those invasive species OUT. Contains a scythe, gasmask, and two anti-weed chemical grenades. Warranty void if used on ambrosia. Requires Hydroponics access to open." cost = 1500 access = ACCESS_HYDROPONICS contains = list(/obj/item/scythe, @@ -630,7 +622,7 @@ /datum/supply_pack/engineering/shuttle_engine name = "Shuttle Engine Crate" - desc = "Through advanced bluespace-shenanigins, our engineers have managed to fit an entire shuttle engine into one tiny little crate. Requires CE access to open." + desc = "Through advanced bluespace-shenanigans, our engineers have managed to fit an entire shuttle engine into one tiny little crate. Requires CE access to open." cost = 5000 access = ACCESS_CE contains = list(/obj/structure/shuttle/engine/propulsion/burst/cargo) @@ -715,7 +707,7 @@ ////////////////////////////////////////////////////////////////////////////// //////////////////////// Engine Construction ///////////////////////////////// -////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// /datum/supply_pack/engine group = "Engine Construction" @@ -851,7 +843,7 @@ crate_name = "supermatter shard crate" crate_type = /obj/structure/closet/crate/secure/engineering dangerous = TRUE - + /datum/supply_pack/engine/tesla_coils name = "Tesla Coil Crate" desc = "Whether it's high-voltage executions, creating research points, or just plain old power generation: This pack of four Tesla coils can do it all!" @@ -999,6 +991,14 @@ crate_name = "water tank crate" crate_type = /obj/structure/closet/crate/large +/datum/supply_pack/materials/foamtank + name = "Firefighting Foam Tank Crate" + desc = "Contains a tank of firefighting foam. Also known as \"plasmaman's bane\"." + cost = 1500 + contains = list(/obj/structure/reagent_dispensers/foamtank) + crate_name = "foam tank crate" + crate_type = /obj/structure/closet/crate/large + /datum/supply_pack/materials/hightank name = "Large Water Tank Crate" desc = "Contains a high-capacity water tank. Useful for botany or other service jobs." @@ -1125,24 +1125,24 @@ desc = "Contains refills for medical vending machines." cost = 2000 contains = list(/obj/item/vending_refill/medical, - /obj/item/vending_refill/medical, - /obj/item/vending_refill/medical) + /obj/item/vending_refill/wallmed) crate_name = "medical vending crate" /datum/supply_pack/medical/virus name = "Virus Crate" - desc = "Contains twelve different bottles, each filled with a different chemical compound, each useful for virology. Also includes seven beakers and syringes. Balled-up jeans not included. Requires CMO access to open." + desc = "Contains twelve different bottles, containing several viral samples for virology research. Also includes seven beakers and syringes. Balled-up jeans not included. Requires CMO access to open." cost = 2500 access = ACCESS_CMO contains = list(/obj/item/reagent_containers/glass/bottle/flu_virion, /obj/item/reagent_containers/glass/bottle/cold, - /obj/item/reagent_containers/glass/bottle/epiglottis_virion, - /obj/item/reagent_containers/glass/bottle/liver_enhance_virion, + /obj/item/reagent_containers/glass/bottle/random_virus, + /obj/item/reagent_containers/glass/bottle/random_virus, + /obj/item/reagent_containers/glass/bottle/random_virus, + /obj/item/reagent_containers/glass/bottle/random_virus, /obj/item/reagent_containers/glass/bottle/fake_gbs, /obj/item/reagent_containers/glass/bottle/magnitis, /obj/item/reagent_containers/glass/bottle/pierrot_throat, /obj/item/reagent_containers/glass/bottle/brainrot, - /obj/item/reagent_containers/glass/bottle/hallucigen_virion, /obj/item/reagent_containers/glass/bottle/anxiety, /obj/item/reagent_containers/glass/bottle/beesease, /obj/item/storage/box/syringes, @@ -1358,55 +1358,43 @@ /datum/supply_pack/service/vending/bartending name = "Bartending Supply Crate" - desc = "Bring on the booze with six vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!" + desc = "Bring on the booze with vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!" cost = 2000 contains = list(/obj/item/vending_refill/boozeomat, - /obj/item/vending_refill/boozeomat, - /obj/item/vending_refill/boozeomat, - /obj/item/vending_refill/coffee, - /obj/item/vending_refill/coffee, /obj/item/vending_refill/coffee, /obj/item/book/granter/action/drink_fling) crate_name = "bartending supply crate" /datum/supply_pack/service/vending/cigarette name = "Cigarette Supply Crate" - desc = "Don't believe the reports - smoke today! Contains cigarette vending machine refills." + desc = "Don't believe the reports - smoke today! Contains a cigarette vending machine refill." cost = 1500 - contains = list(/obj/item/vending_refill/cigarette, - /obj/item/vending_refill/cigarette, - /obj/item/vending_refill/cigarette) + contains = list(/obj/item/vending_refill/cigarette) crate_name = "cigarette supply crate" crate_type = /obj/structure/closet/crate /datum/supply_pack/service/vending/games name = "Games Supply Crate" - desc = "Get your game on with these three game vending machine refills." + desc = "Get your game on with this game vending machine refill." cost = 1000 - contains = list(/obj/item/vending_refill/games, - /obj/item/vending_refill/games, - /obj/item/vending_refill/games) + contains = list(/obj/item/vending_refill/games) crate_name = "games supply crate" crate_type = /obj/structure/closet/crate /datum/supply_pack/service/vending/snack name = "Snack Supply Crate" - desc = "Three vending machine refills of cavity-bringin' goodness! The number one dentist recommended order!" + desc = "One vending machine refill of cavity-bringin' goodness! The number one dentist recommended order!" cost = 1500 - contains = list(/obj/item/vending_refill/snack, - /obj/item/vending_refill/snack, - /obj/item/vending_refill/snack) + contains = list(/obj/item/vending_refill/snack) crate_name = "snacks supply crate" /datum/supply_pack/service/vending/cola name = "Softdrinks Supply Crate" - desc = "Got whacked by a toolbox, but you still have those pesky teeth? Get rid of those pearly whites with these three soda machine refills, today!" + desc = "Got whacked by a toolbox, but you still have those pesky teeth? Get rid of those pearly whites with this soda machine refill, today!" cost = 1500 - contains = list(/obj/item/vending_refill/cola, - /obj/item/vending_refill/cola, - /obj/item/vending_refill/cola) + contains = list(/obj/item/vending_refill/cola) crate_name = "soft drinks supply crate" - + ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Organic ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// @@ -1430,7 +1418,7 @@ name = "Beekeeping Starter Crate" desc = "BEES BEES BEES. Contains three honey frames, a beekeeper suit and helmet, flyswatter, bee house, and, of course, a pure-bred Nanotrasen-Standardized Queen Bee!" cost = 1500 - contains = list(/obj/structure/beebox, + contains = list(/obj/structure/beebox/unwrenched, /obj/item/honey_frame, /obj/item/honey_frame, /obj/item/honey_frame, @@ -1706,14 +1694,6 @@ /datum/supply_pack/costumes_toys group = "Costumes & Toys" -/datum/supply_pack/costumes_toys/autodrobe - name = "Autodrobe Supply Crate" - desc = "Autodrobe missing your favorite dress? Solve that issue today with these two autodrobe refills." - cost = 1500 - contains = list(/obj/item/vending_refill/autodrobe, - /obj/item/vending_refill/autodrobe) - crate_name = "autodrobe supply crate" - /datum/supply_pack/costumes_toys/randomised name = "Collectable Hats Crate" desc = "Flaunt your status with three unique, highly-collectable hats!" @@ -1745,14 +1725,26 @@ /datum/supply_pack/costumes_toys/randomised/contraband name = "Contraband Crate" - desc = "Psst.. bud... want some contraband? I can get you a poster, some nice cigs, bling, even some ambrosia deus...you know, the good stuff. Just keep it away from the cops, kay?" + desc = "Psst.. bud... want some contraband? I can get you a poster, some nice cigs, dank, even some sponsored items...you know, the good stuff. Just keep it away from the cops, kay?" contraband = TRUE cost = 3000 - num_contained = 5 + num_contained = 7 contains = list(/obj/item/poster/random_contraband, + /obj/item/poster/random_contraband, + /obj/item/reagent_containers/food/snacks/grown/cannabis, + /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow, + /obj/item/reagent_containers/food/snacks/grown/cannabis/white, + /obj/item/storage/pill_bottle/zoom, + /obj/item/storage/pill_bottle/happy, + /obj/item/storage/pill_bottle/lsd, + /obj/item/storage/pill_bottle/aranesp, + /obj/item/storage/pill_bottle/stimulant, + /obj/item/toy/cards/deck/syndicate, + /obj/item/reagent_containers/food/drinks/bottle/absinthe, + /obj/item/clothing/under/syndicate/tacticool, + /obj/item/storage/fancy/cigarettes/cigpack_syndicate, /obj/item/storage/fancy/cigarettes/cigpack_shadyjims, - /obj/item/storage/fancy/cigarettes/cigpack_midori, - /obj/item/seeds/ambrosia/deus, + /obj/item/clothing/mask/gas/syndicate, /obj/item/clothing/neck/necklace/dope) crate_name = "crate" @@ -1942,6 +1934,72 @@ var/item = pick_n_take(L) new item(C) +/datum/supply_pack/costumes_toys/wardrobes/autodrobe + name = "Autodrobe Supply Crate" + desc = "Autodrobe missing your favorite dress? Solve that issue today with this autodrobe refill." + cost = 1500 + contains = list(/obj/item/vending_refill/autodrobe) + crate_name = "autodrobe supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/cargo + name = "Cargo Department Supply Crate" + desc = "This crate contains a refill for the CargoDrobe." + cost = 750 + contains = list(/obj/item/vending_refill/wardrobe/cargo_wardrobe) + crate_name = "cargo department supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/engineering + name = "Engineering Department Wardrobe Supply Crate" + desc = "This crate contains refills for the EngiDrobe and AtmosDrobe." + cost = 1500 + contains = list(/obj/item/vending_refill/wardrobe/engi_wardrobe, + /obj/item/vending_refill/wardrobe/atmos_wardrobe) + crate_name = "engineering department wardrobe supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/general + name = "General Wardrobes Supply Crate" + desc = "This crate contains refills for the CuraDrobe, BarDrobe, ChefDrobe, JaniDrobe, ChapDrobe." + cost = 3750 + contains = list(/obj/item/vending_refill/wardrobe/curator_wardrobe, + /obj/item/vending_refill/wardrobe/bar_wardrobe, + /obj/item/vending_refill/wardrobe/chef_wardrobe, + /obj/item/vending_refill/wardrobe/jani_wardrobe, + /obj/item/vending_refill/wardrobe/chap_wardrobe) + crate_name = "general wardrobes vendor refills" + +/datum/supply_pack/costumes_toys/wardrobes/hydroponics + name = "Hydrobe Supply Crate" + desc = "This crate contains a refill for the Hydrobe." + cost = 750 + contains = list(/obj/item/vending_refill/wardrobe/hydro_wardrobe) + crate_name = "hydrobe supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/medical + name = "Medical Department Wardrobe Supply Crate" + desc = "This crate contains refills for the MediDrobe, ChemDrobe, GeneDrobe, and ViroDrobe." + cost = 3000 + contains = list(/obj/item/vending_refill/wardrobe/medi_wardrobe, + /obj/item/vending_refill/wardrobe/chem_wardrobe, + /obj/item/vending_refill/wardrobe/gene_wardrobe, + /obj/item/vending_refill/wardrobe/viro_wardrobe) + crate_name = "medical department wardrobe supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/science + name = "Science Department Wardrobe Supply Crate" + desc = "This crate contains refills for the SciDrobe and RoboDrobe." + cost = 1500 + contains = list(/obj/item/vending_refill/wardrobe/robo_wardrobe, + /obj/item/vending_refill/wardrobe/science_wardrobe) + crate_name = "science department wardrobe supply crate" + +/datum/supply_pack/costumes_toys/wardrobes/security + name = "Security Department Supply Crate" + desc = "This crate contains refills for the SecDrobe and LawDrobe." + cost = 1500 + contains = list(/obj/item/vending_refill/wardrobe/sec_wardrobe, + /obj/item/vending_refill/wardrobe/law_wardrobe) + crate_name = "security department supply crate" + ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Miscellaneous /////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// @@ -2003,7 +2061,7 @@ /datum/supply_pack/misc/paper name = "Bureaucracy Crate" - desc = "High stacks of papers on your desk Are a big problem - make it Pea-sized with these bureacratic supplies! Contains six pens, some camera film, hand labeler supplies, a paper bin, three folders, two clipboards and two stamps."//that was too forced + desc = "High stacks of papers on your desk Are a big problem - make it Pea-sized with these bureaucratic supplies! Contains six pens, some camera film, hand labeler supplies, a paper bin, three folders, two clipboards and two stamps."//that was too forced cost = 1500 contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled, /obj/item/camera_film, @@ -2033,6 +2091,17 @@ contains = list(/obj/item/storage/box/fountainpens) crate_type = /obj/structure/closet/crate/wooden +/datum/supply_pack/misc/funeral + name = "Funeral Supply crate" + desc = "At the end of the day, someone's gonna want someone dead. Give them a proper send-off with these funeral supplies! Contains a coffin with burial garmets and flowers." + cost = 600 + contains = list(/obj/item/clothing/under/burial, + /obj/item/reagent_containers/food/snacks/grown/harebell, + /obj/item/reagent_containers/food/snacks/grown/poppy/geranium + ) + crate_name = "coffin" + crate_type = /obj/structure/closet/crate/coffin + /datum/supply_pack/misc/religious_supplies name = "Religious Supplies Crate" desc = "Keep your local chaplain happy and well-supplied, lest they call down judgement upon your cargo bay. Contains two bottles of holywater, bibles, chaplain robes, and burial garmets." @@ -2042,9 +2111,8 @@ /obj/item/storage/book/bible/booze, /obj/item/storage/book/bible/booze, /obj/item/clothing/suit/hooded/chaplain_hoodie, - /obj/item/clothing/suit/hooded/chaplain_hoodie, - /obj/item/clothing/under/burial, - /obj/item/clothing/under/burial) + /obj/item/clothing/suit/hooded/chaplain_hoodie + ) crate_name = "religious supplies crate" /datum/supply_pack/misc/toner diff --git a/code/modules/cargo/supplypod_beacon.dm b/code/modules/cargo/supplypod_beacon.dm new file mode 100644 index 0000000000..f72fe595de --- /dev/null +++ b/code/modules/cargo/supplypod_beacon.dm @@ -0,0 +1,93 @@ +/obj/item/supplypod_beacon + name = "Supply Pod Beacon" + desc = "A device that can be linked to an Express Supply Console for precision supply pod deliveries. Alt-click to remove link." + icon = 'icons/obj/device.dmi' + icon_state = "supplypod_beacon" + item_state = "radio" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + w_class = WEIGHT_CLASS_SMALL + var/obj/machinery/computer/cargo/express/express_console + var/linked = FALSE + var/ready = FALSE + var/launched = FALSE + +/obj/item/supplypod_beacon/proc/update_status(var/consoleStatus) + switch(consoleStatus) + if (SP_LINKED) + linked = TRUE + playsound(src,'sound/machines/twobeep.ogg',50,0) + if (SP_READY) + ready = TRUE + if (SP_LAUNCH) + launched = TRUE + playsound(src,'sound/machines/triple_beep.ogg',50,0) + playsound(src,'sound/machines/warning-buzzer.ogg',50,0) + addtimer(CALLBACK(src, .proc/endLaunch), 33)//wait 3.3 seconds (time it takes for supplypod to land), then update icon + if (SP_UNLINK) + linked = FALSE + playsound(src,'sound/machines/synth_no.ogg',50,0) + if (SP_UNREADY) + ready = FALSE + update_icon() + +/obj/item/supplypod_beacon/update_icon() + cut_overlays() + if (launched) + add_overlay("sp_green") + else if (ready) + add_overlay("sp_yellow") + else if (linked) + add_overlay("sp_orange") + +/obj/item/supplypod_beacon/proc/endLaunch() + launched = FALSE + update_status() + +/obj/item/supplypod_beacon/examine(user) + ..() + if(!express_console) + to_chat(user, "[src] is not currently linked to a Express Supply console.") + +/obj/item/supplypod_beacon/Destroy() + if(express_console) + express_console.beacon = null + return ..() + +/obj/item/supplypod_beacon/proc/unlink_console() + if(express_console) + express_console.beacon = null + express_console = null + update_status(SP_UNLINK) + update_status(SP_UNREADY) + +/obj/item/supplypod_beacon/proc/link_console(obj/machinery/computer/cargo/express/C, mob/living/user) + if (C.beacon)//if new console has a beacon, then... + C.beacon.unlink_console()//unlink the old beacon from new console + if (express_console)//if this beacon has an express console + express_console.beacon = null//remove the connection the expressconsole has from beacons + express_console = C//set the linked console var to the console + express_console.beacon = src//out with the old in with the news + update_status(SP_LINKED) + if (express_console.usingBeacon) + update_status(SP_READY) + to_chat(user, "[src] linked to [C].") + +/obj/item/supplypod_beacon/AltClick(mob/user) + if (!user.canUseTopic(src, !issilicon(user))) + return + if (express_console) + unlink_console() + else + to_chat(user, "There is no linked console!") + +/obj/item/supplypod_beacon/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/pen)) //give a tag that is visible from the linked express console + var/new_beacon_name = stripped_input(user, "What would you like the tag to be?") + if(!user.canUseTopic(src, BE_CLOSE)) + return + if(new_beacon_name) + name += " ([tag])" + return + else + return ..() diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index 28a3ec23b9..b57aebb2cd 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -225,7 +225,7 @@ GLOBAL_LIST_EMPTY(asset_datums) var/res_name = "spritesheet_[name].css" var/fname = "data/spritesheets/[res_name]" - call("rust_g", "file_write")(generate_css(), fname) + text2file(generate_css(), fname) register_asset(res_name, file(fname)) for(var/size_id in sizes) @@ -249,7 +249,7 @@ GLOBAL_LIST_EMPTY(asset_datums) // save flattened version var/fname = "data/spritesheets/[name]_[size_id].png" fcopy(size[SPRSZ_ICON], fname) - var/error = call("rust_g", "dmi_strip_metadata")(fname) + var/error = rustg_dmi_strip_metadata(fname) if(length(error)) stack_trace("Failed to strip [name]_[size_id].png: [error]") size[SPRSZ_STRIPPED] = icon(fname) @@ -587,7 +587,11 @@ GLOBAL_LIST_EMPTY(asset_datums) if (machine) item = machine var/icon_file = initial(item.icon) - var/icon/I = icon(icon_file, initial(item.icon_state), SOUTH) + var/icon_state = initial(item.icon_state) + if (!(icon_state in icon_states(icon_file))) + warning("design [D] with icon '[icon_file]' missing state '[icon_state]'") + continue + var/icon/I = icon(icon_file, icon_state, SOUTH) // computers (and snowflakes) get their screen and keyboard sprites if (ispath(item, /obj/machinery/computer) || ispath(item, /obj/machinery/power/solar_control)) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 2d12b7b0a4..2ae00f9348 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -6,6 +6,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( "1407" = "bug preventing client display overrides from working leads to clients being able to see things/mobs they shouldn't be able to see", "1408" = "bug preventing client display overrides from working leads to clients being able to see things/mobs they shouldn't be able to see", + "1428" = "bug causing right-click menus to show too many verbs that's been fixed in version 1429", )) @@ -62,7 +63,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( topiclimiter[ADMINSWARNED_AT] = minute msg += " Administrators have been informed." log_game("[key_name(src)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute") + message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute") to_chat(src, "[msg]") return @@ -216,7 +217,9 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) new /datum/admins(localhost_rank, ckey, 1, 1) //preferences datum - also holds some persistent data for the client (because we may as well keep these datums to a minimum) prefs = GLOB.preferences_datums[ckey] - if(!prefs) + if(prefs) + prefs.parent = src + else prefs = new /datum/preferences(src) GLOB.preferences_datums[ckey] = prefs prefs.last_ip = address //these are gonna be used for banning @@ -464,12 +467,14 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) related_accounts_ip = "" while(query_get_related_ip.NextRow()) related_accounts_ip += "[query_get_related_ip.item[1]], " + qdel(query_get_related_ip) var/datum/DBQuery/query_get_related_cid = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE computerid = '[computer_id]' AND ckey != '[sql_ckey]'") if(!query_get_related_cid.Execute()) return related_accounts_cid = "" while (query_get_related_cid.NextRow()) related_accounts_cid += "[query_get_related_cid.item[1]], " + qdel(query_get_related_cid) var/admin_rank = "Player" if (src.holder && src.holder.rank) admin_rank = src.holder.rank.name @@ -482,6 +487,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) var/new_player var/datum/DBQuery/query_client_in_db = SSdbcore.NewQuery("SELECT 1 FROM [format_table_name("player")] WHERE ckey = '[sql_ckey]'") if(!query_client_in_db.Execute()) + qdel(query_client_in_db) return if(!query_client_in_db.NextRow()) if (CONFIG_GET(flag/panic_bunker) && !holder && !GLOB.deadmins[ckey]) @@ -495,6 +501,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) to_chat(src, "Sending you to [panic_name ? panic_name : panic_addr].") winset(src, null, "command=.options") src << link("[panic_addr]?redirect=1") + qdel(query_client_in_db) qdel(src) return @@ -502,12 +509,17 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) account_join_date = sanitizeSQL(findJoinDate()) var/datum/DBQuery/query_add_player = SSdbcore.NewQuery("INSERT INTO [format_table_name("player")] (`ckey`, `firstseen`, `firstseen_round_id`, `lastseen`, `lastseen_round_id`, `ip`, `computerid`, `lastadminrank`, `accountjoindate`) VALUES ('[sql_ckey]', Now(), '[GLOB.round_id]', Now(), '[GLOB.round_id]', INET_ATON('[sql_ip]'), '[sql_computerid]', '[sql_admin_rank]', [account_join_date ? "'[account_join_date]'" : "NULL"])") if(!query_add_player.Execute()) + qdel(query_client_in_db) + qdel(query_add_player) return + qdel(query_add_player) if(!account_join_date) account_join_date = "Error" account_age = -1 + qdel(query_client_in_db) var/datum/DBQuery/query_get_client_age = SSdbcore.NewQuery("SELECT firstseen, DATEDIFF(Now(),firstseen), accountjoindate, DATEDIFF(Now(),accountjoindate) FROM [format_table_name("player")] WHERE ckey = '[sql_ckey]'") if(!query_get_client_age.Execute()) + qdel(query_get_client_age) return if(query_get_client_age.NextRow()) player_join_date = query_get_client_age.item[1] @@ -520,19 +532,25 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) if(!account_join_date) account_age = -1 else - var/datum/DBQuery/query_datediff = SSdbcore.NewQuery("SELECT DATEDIFF(Now(),[account_join_date])") + var/datum/DBQuery/query_datediff = SSdbcore.NewQuery("SELECT DATEDIFF(Now(),'[account_join_date]')") if(!query_datediff.Execute()) + qdel(query_datediff) return if(query_datediff.NextRow()) account_age = text2num(query_datediff.item[1]) + qdel(query_datediff) + qdel(query_get_client_age) if(!new_player) var/datum/DBQuery/query_log_player = SSdbcore.NewQuery("UPDATE [format_table_name("player")] SET lastseen = Now(), lastseen_round_id = '[GLOB.round_id]', ip = INET_ATON('[sql_ip]'), computerid = '[sql_computerid]', lastadminrank = '[sql_admin_rank]', accountjoindate = [account_join_date ? "'[account_join_date]'" : "NULL"] WHERE ckey = '[sql_ckey]'") if(!query_log_player.Execute()) + qdel(query_log_player) return + qdel(query_log_player) if(!account_join_date) account_join_date = "Error" var/datum/DBQuery/query_log_connection = SSdbcore.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`round_id`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')),'[world.port]','[GLOB.round_id]','[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]')") query_log_connection.Execute() + qdel(query_log_connection) if(new_player) player_age = -1 . = player_age @@ -568,6 +586,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) var/lastcid if (query_cidcheck.NextRow()) lastcid = query_cidcheck.item[1] + qdel(query_cidcheck) var/oldcid = cidcheck[ckey] if (oldcid) @@ -641,16 +660,22 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) //check to see if we noted them in the last day. var/datum/DBQuery/query_get_notes = SSdbcore.NewQuery("SELECT id FROM [format_table_name("messages")] WHERE type = 'note' AND targetckey = '[sql_ckey]' AND adminckey = '[sql_system_ckey]' AND timestamp + INTERVAL 1 DAY < NOW() AND deleted = 0") if(!query_get_notes.Execute()) + qdel(query_get_notes) return if(query_get_notes.NextRow()) + qdel(query_get_notes) return + qdel(query_get_notes) //regardless of above, make sure their last note is not from us, as no point in repeating the same note over and over. query_get_notes = SSdbcore.NewQuery("SELECT adminckey FROM [format_table_name("messages")] WHERE targetckey = '[sql_ckey]' AND deleted = 0 ORDER BY timestamp DESC LIMIT 1") if(!query_get_notes.Execute()) + qdel(query_get_notes) return if(query_get_notes.NextRow()) if (query_get_notes.item[1] == system_ckey) + qdel(query_get_notes) return + qdel(query_get_notes) create_message("note", ckey, system_ckey, message, null, null, 0, 0) @@ -684,11 +709,11 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) msg += " Administrators have been informed." if (ab) log_game("[key_name(src)] is using the middle click aimbot exploit") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit") + message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit") add_system_note("aimbot", "Is using the middle click aimbot exploit") log_game("[key_name(src)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") + message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") to_chat(src, "[msg]") return @@ -796,6 +821,8 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) if (isliving(mob)) var/mob/living/M = mob M.update_damage_hud() + if (prefs.auto_fit_viewport) + fit_viewport() /client/proc/generate_clickcatcher() if(!void) diff --git a/code/modules/client/player_details.dm b/code/modules/client/player_details.dm index a842607235..ecc113b89c 100644 --- a/code/modules/client/player_details.dm +++ b/code/modules/client/player_details.dm @@ -1,2 +1,3 @@ /datum/player_details - var/list/player_actions = list() \ No newline at end of file + var/list/player_actions = list() + var/list/logging = list(INDIVIDUAL_ATTACK_LOG, INDIVIDUAL_SAY_LOG, INDIVIDUAL_EMOTE_LOG, INDIVIDUAL_OOC_LOG) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7eb1c25455..088c75a1b5 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -36,7 +36,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) //autocorrected this round, not that you'd need to check that. - var/UI_style = "Midnight" + var/UI_style = null var/buttons_locked = FALSE var/hotkeys = FALSE var/tgui_fancy = TRUE @@ -121,6 +121,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/parallax var/ambientocclusion = TRUE + var/auto_fit_viewport = FALSE var/uplink_spawn_loc = UPLINK_PDA @@ -133,9 +134,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) parent = C custom_names["human"] = random_unique_name() custom_names["ai"] = pick(GLOB.ai_names) - custom_names["cyborg"] = pick(GLOB.ai_names) + custom_names["cyborg"] = DEFAULT_CYBORG_NAME custom_names["clown"] = pick(GLOB.clown_names) custom_names["mime"] = pick(GLOB.mime_names) + UI_style = GLOB.available_ui_styles[1] if(istype(C)) if(!IsGuestKey(C.key)) load_path(C.ckey) @@ -213,10 +215,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Special Names:
    " dat += "Backup Human Name: [custom_names["human"]] " + dat += "
    " dat += "Clown: [custom_names["clown"]] " - dat += "Mime:[custom_names["mime"]]
    " + dat += "Mime: [custom_names["mime"]]" + dat += "
    " dat += "AI: [custom_names["ai"]] " - dat += "Cyborg: [custom_names["cyborg"]]
    " + dat += "Cyborg: [custom_names["cyborg"]]" + dat += "
    " dat += "Chaplain religion: [custom_names["religion"]] " dat += "Chaplain deity: [custom_names["deity"]]
    " @@ -457,24 +462,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) button_name = GHOST_OTHERS_SIMPLE_NAME dat += "Ghosts of Others: [button_name]
    " - - if (CONFIG_GET(flag/maprotation)) - var/p_map = preferred_map - if (!p_map) - p_map = "Default" - if (config.defaultmap) - p_map += " ([config.defaultmap.map_name])" - else - if (p_map in config.maplist) - var/datum/map_config/VM = config.maplist[p_map] - if (!VM) - p_map += " (No longer exists)" - else - p_map = VM.map_name - else - p_map += " (No longer exists)" - if(CONFIG_GET(flag/allow_map_voting)) - dat += "Preferred Map: [p_map]
    " + dat += "
    " dat += "FPS: [clientfps]
    " @@ -493,6 +481,25 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
    " dat += "Ambient Occlusion: [ambientocclusion ? "Enabled" : "Disabled"]
    " + dat += "Fit Viewport: [auto_fit_viewport ? "Auto" : "Manual"]
    " + + if (CONFIG_GET(flag/maprotation)) + var/p_map = preferred_map + if (!p_map) + p_map = "Default" + if (config.defaultmap) + p_map += " ([config.defaultmap.map_name])" + else + if (p_map in config.maplist) + var/datum/map_config/VM = config.maplist[p_map] + if (!VM) + p_map += " (No longer exists)" + else + p_map = VM.map_name + else + p_map += " (No longer exists)" + if(CONFIG_GET(flag/allow_map_voting)) + dat += "Preferred Map: [p_map]
    " dat += "" @@ -1101,11 +1108,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_age) age = max(min( round(text2num(new_age)), AGE_MAX),AGE_MIN) - if("metadata") - var/new_metadata = input(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , metadata) as message|null - if(new_metadata) - metadata = sanitize(copytext(new_metadata,1,MAX_MESSAGE_LEN)) - /* if("hair") var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference","#"+hair_color) as color|null if(new_hair) @@ -1326,7 +1328,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) to_chat(user, "Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, 0-9, -, ' and .") if("cyborg_name") - var/new_cyborg_name = reject_bad_name( input(user, "Choose your character's cyborg name:", "Character Preference") as text|null, 1 ) + var/raw_name = input(user, "Choose your character's cyborg name (Leave empty to use default naming scheme):", "Character Preference") as text|null + var/new_cyborg_name + if(!raw_name) + new_cyborg_name = DEFAULT_CYBORG_NAME + else + new_cyborg_name = reject_bad_name(raw_name,1 ) if(new_cyborg_name) custom_names["cyborg"] = new_cyborg_name else @@ -1372,15 +1379,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) if (!isnull(desiredfps)) clientfps = desiredfps parent.fps = desiredfps - else - clientfps = 0 - parent.fps = 0 if("ui") - var/pickedui = input(user, "Choose your UI style.", "Character Preference") as null|anything in list("Midnight", "Plasmafire", "Retro", "Slimecore", "Operative", "Clockwork") + var/pickedui = input(user, "Choose your UI style.", "Character Preference", UI_style) as null|anything in GLOB.available_ui_styles if(pickedui) UI_style = pickedui + if (parent && parent.mob && parent.mob.hud_used) + parent.mob.hud_used.update_ui_style(ui_style2icon(UI_style)) if("pda_style") - var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference") as null|anything in list(MONO, SHARE, ORBITRON, VT) + var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference", pda_style) as null|anything in GLOB.pda_styles if(pickedPDAStyle) pda_style = pickedPDAStyle if("pda_color") @@ -1468,6 +1474,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) toggles ^= SOUND_ADMINHELP if("announce_login") toggles ^= ANNOUNCE_LOGIN + if("combohud_lighting") + toggles ^= COMBOHUD_LIGHTING if("be_special") var/be_special_type = href_list["be_special_type"] @@ -1487,7 +1495,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("lobby_music") toggles ^= SOUND_LOBBY - if((toggles & SOUND_LOBBY) && user.client) + if((toggles & SOUND_LOBBY) && user.client && isnewplayer(user)) user.client.playtitlemusic() else user.stop_sound_channel(CHANNEL_LOBBYMUSIC) @@ -1539,6 +1547,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/obj/screen/plane_master/game_world/PM = locate(/obj/screen/plane_master/game_world) in parent.screen PM.backdrop(parent.mob) + if("auto_fit_viewport") + auto_fit_viewport = !auto_fit_viewport + if(auto_fit_viewport && parent) + parent.fit_viewport() + if("save") save_preferences() save_character() @@ -1600,7 +1613,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(be_random_body) random_character(gender) - if(CONFIG_GET(flag/humans_need_surnames)) + if(CONFIG_GET(flag/humans_need_surnames) && (pref_species.id == "human")) var/firstspace = findtext(real_name, " ") var/name_length = length(real_name) if(!firstspace) //we need a surname diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index f17ddf8b7c..4c2cdbb074 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -131,6 +131,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["clientfps"] >> clientfps S["parallax"] >> parallax S["ambientocclusion"] >> ambientocclusion + S["auto_fit_viewport"] >> auto_fit_viewport S["menuoptions"] >> menuoptions S["enable_tips"] >> enable_tips S["tip_delay"] >> tip_delay @@ -151,7 +152,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Sanitize ooccolor = sanitize_ooccolor(sanitize_hexcolor(ooccolor, 6, 1, initial(ooccolor))) lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog)) - UI_style = sanitize_inlist(UI_style, list("Midnight", "Plasmafire", "Retro", "Slimecore", "Operative", "Clockwork"), initial(UI_style)) + UI_style = sanitize_inlist(UI_style, GLOB.available_ui_styles, GLOB.available_ui_styles[1]) hotkeys = sanitize_integer(hotkeys, 0, 1, initial(hotkeys)) tgui_fancy = sanitize_integer(tgui_fancy, 0, 1, initial(tgui_fancy)) tgui_lock = sanitize_integer(tgui_lock, 0, 1, initial(tgui_lock)) @@ -162,13 +163,14 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car clientfps = sanitize_integer(clientfps, 0, 1000, 0) parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null) ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion)) + auto_fit_viewport = sanitize_integer(auto_fit_viewport, 0, 1, initial(auto_fit_viewport)) ghost_form = sanitize_inlist(ghost_form, GLOB.ghost_forms, initial(ghost_form)) ghost_orbit = sanitize_inlist(ghost_orbit, GLOB.ghost_orbits, initial(ghost_orbit)) ghost_accs = sanitize_inlist(ghost_accs, GLOB.ghost_accs_options, GHOST_ACCS_DEFAULT_OPTION) ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION) menuoptions = SANITIZE_LIST(menuoptions) be_special = SANITIZE_LIST(be_special) - pda_style = sanitize_inlist(MONO, VT, SHARE, ORBITRON) + pda_style = sanitize_inlist(pda_style, GLOB.pda_styles, initial(pda_style)) pda_color = sanitize_hexcolor(pda_color, 6, 1, initial(pda_color)) screenshake = sanitize_integer(screenshake, 0, 800, initial(screenshake)) @@ -213,6 +215,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["clientfps"], clientfps) WRITE_FILE(S["parallax"], parallax) WRITE_FILE(S["ambientocclusion"], ambientocclusion) + WRITE_FILE(S["auto_fit_viewport"], auto_fit_viewport) WRITE_FILE(S["menuoptions"], menuoptions) WRITE_FILE(S["enable_tips"], enable_tips) WRITE_FILE(S["tip_delay"], tip_delay) @@ -260,7 +263,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["features["mcolor"]"] , "#FFF") //Character - S["OOC_Notes"] >> metadata S["real_name"] >> real_name S["name_is_always_random"] >> be_random_name S["body_is_always_random"] >> be_random_body @@ -374,7 +376,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car update_character(needs_update, S) //needs_update == savefile_version if we need an update (positive integer) //Sanitize - metadata = sanitize_text(metadata, initial(metadata)) real_name = reject_bad_name(real_name) if(!features["mcolor"] || features["mcolor"] == "#000") features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") @@ -444,7 +445,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["version"] , SAVEFILE_VERSION_MAX) //load_character will sanitize any bad data, so assume up-to-date.) //Character - WRITE_FILE(S["OOC_Notes"] , metadata) WRITE_FILE(S["real_name"] , real_name) WRITE_FILE(S["name_is_always_random"] , be_random_name) WRITE_FILE(S["body_is_always_random"] , be_random_body) diff --git a/code/modules/client/verbs/looc.dm b/code/modules/client/verbs/looc.dm index c6814caab2..4fce3bfcfb 100644 --- a/code/modules/client/verbs/looc.dm +++ b/code/modules/client/verbs/looc.dm @@ -39,6 +39,12 @@ to_chat(src, "Advertising other servers is not allowed.") log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]") return + if(mob.stat) + to_chat(src, "You cannot salt in LOOC while unconscious or dead.") + return + if(istype(mob, /mob/dead)) + to_chat(src, "You cannot use LOOC while ghosting.") + return log_ooc("(LOCAL) [mob.name]/[key] : [msg]") mob.log_message("(LOCAL): [msg]", INDIVIDUAL_OOC_LOG) diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index ccf99b5b7e..2f4922fddf 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -22,6 +22,8 @@ if(jobban_isbanned(src.mob, "OOC")) to_chat(src, "You have been banned from OOC.") return + if(QDELETED(src)) + return msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) var/raw_msg = msg @@ -56,21 +58,19 @@ if(prefs.unlock_content) if(prefs.toggles & MEMBER_PUBLIC) keyname = "[icon2html('icons/member_content.dmi', world, "blag")][keyname]" - + //The linkify span classes and linkify=TRUE below make ooc text get clickable chat href links if you pass in something resembling a url for(var/client/C in GLOB.clients) if(C.prefs.chat_toggles & CHAT_OOC) if(holder) if(!holder.fakekey || C.holder) if(check_rights_for(src, R_ADMIN)) - to_chat(C, "[CONFIG_GET(flag/allow_admin_ooccolor) && prefs.ooccolor ? "" :"" ]OOC: [keyname][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]") + to_chat(C, "[CONFIG_GET(flag/allow_admin_ooccolor) && prefs.ooccolor ? "" :"" ]OOC: [keyname][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]") else - to_chat(C, "OOC: [keyname][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]") + to_chat(C, "OOC: [keyname][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]") else - to_chat(C, "OOC: [holder.fakekey ? holder.fakekey : key]: [msg]") - else if(is_mentor()) // Citadel Mentors - to_chat(C, "OOC: [keyname]: [msg]") // hippie end + to_chat(C, "OOC: [holder.fakekey ? holder.fakekey : key]: [msg]") else if(!(key in C.prefs.ignoring)) - to_chat(C, "OOC: [keyname]: [msg]") + to_chat(C, "OOC: [keyname]: [msg]") /proc/toggle_ooc(toggle = null) if(toggle != null) //if we're specifically en/disabling ooc @@ -233,7 +233,7 @@ GLOBAL_VAR_INIT(normal_ooc_colour, OOC_COLOR) var/motd = global.config.motd if(motd) - to_chat(src, "
    [motd]
    ") + to_chat(src, "
    [motd]
    ", handle_whitespace=FALSE) else to_chat(src, "The Message of the Day has not been set.") @@ -301,3 +301,49 @@ GLOBAL_VAR_INIT(normal_ooc_colour, OOC_COLOR) set desc = "View the last round end report you've seen" SSticker.show_roundend_report(src, TRUE) + +/client/verb/fit_viewport() + set name = "Fit Viewport" + set category = "OOC" + set desc = "Fit the width of the map window to match the viewport" + + // Fetch aspect ratio + var/view_size = getviewsize(view) + var/aspect_ratio = view_size[1] / view_size[2] + + // Calculate desired pixel width using window size and aspect ratio + var/sizes = params2list(winget(src, "mainwindow.split;mapwindow", "size")) + var/map_size = splittext(sizes["mapwindow.size"], "x") + var/height = text2num(map_size[2]) + var/desired_width = round(height * aspect_ratio) + if (text2num(map_size[1]) == desired_width) + // Nothing to do + return + + var/split_size = splittext(sizes["mainwindow.split.size"], "x") + var/split_width = text2num(split_size[1]) + + // Calculate and apply a best estimate + // +4 pixels are for the width of the splitter's handle + var/pct = 100 * (desired_width + 4) / split_width + winset(src, "mainwindow.split", "splitter=[pct]") + + // Apply an ever-lowering offset until we finish or fail + var/delta + for(var/safety in 1 to 10) + var/after_size = winget(src, "mapwindow", "size") + map_size = splittext(after_size, "x") + var/got_width = text2num(map_size[1]) + + if (got_width == desired_width) + // success + return + else if (isnull(delta)) + // calculate a probable delta value based on the difference + delta = 100 * (desired_width - got_width) / split_width + else if ((delta > 0 && got_width > desired_width) || (delta < 0 && got_width < desired_width)) + // if we overshot, halve the delta and reverse direction + delta = -delta/2 + + pct += delta + winset(src, "mainwindow.split", "splitter=[pct]") diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index c968cc9c76..6b273cb818 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -19,7 +19,7 @@ if(damagetype & SHAME) adjustStaminaLoss(200) suiciding = FALSE - SendSignal(COMSIG_ADD_MOOD_EVENT, "shameful_suicide", /datum/mood_event/shameful_suicide) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "shameful_suicide", /datum/mood_event/shameful_suicide) return suicide_log() @@ -199,16 +199,10 @@ death(0) /mob/living/proc/suicide_log() - var/turf/T = get_turf(src) - - log_game("[key_name(src)] committed suicide at [get_area(src)][COORD(T)] as [src.type].") - message_admins("[key_name(src)] committed suicide at [get_area(src)] as [src.type].") + log_game("[key_name(src)] committed suicide at [AREACOORD(src)] as [src.type].") /mob/living/carbon/human/suicide_log() - var/turf/T = get_turf(src) - - log_game("[key_name(src)] (job: [src.job ? "[src.job]" : "None"]) committed suicide at [get_area(src)][COORD(T)].") - message_admins("[key_name(src)] (job: [job ? "[job]" : "None"]) committed suicide at [get_area(src)].") + log_game("[key_name(src)] (job: [src.job ? "[src.job]" : "None"]) committed suicide at [AREACOORD(src)].") /mob/living/proc/canSuicide() if(stat == CONSCIOUS) @@ -225,7 +219,4 @@ if(!canmove || restrained()) //just while I finish up the new 'fun' suiciding verb. This is to prevent metagaming via suicide to_chat(src, "You can't commit suicide whilst restrained! ((You can type Ghost instead however.))") return -// if(has_brain_worms()) -// to_chat(src, "You can't bring yourself to commit suicide!") -// return return TRUE diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm index 8b9ea8f2e8..5f0574d9c2 100644 --- a/code/modules/client/verbs/who.dm +++ b/code/modules/client/verbs/who.dm @@ -1,4 +1,4 @@ -/client/verb/who() +/*/client/verb/who() Commenting this file out to be overridden in modular_citadel set name = "Who" set category = "OOC" @@ -87,3 +87,4 @@ msg += "Adminhelps are also sent to Discord. If no admins are available in game adminhelp anyways and an admin on Discord will see it and respond." to_chat(src, msg) +*/ \ No newline at end of file diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 949aa7ee4d..e4cc477f11 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -68,6 +68,73 @@ return 1 +/datum/action/chameleon_outfit + name = "Select Chameleon Outfit" + button_icon_state = "chameleon_outfit" + var/list/outfit_options //By default, this list is shared between all instances. It is not static because if it were, subtypes would not be able to have their own. If you ever want to edit it, copy it first. + +/datum/action/chameleon_outfit/New() + ..() + initialize_outfits() + +/datum/action/chameleon_outfit/proc/initialize_outfits() + var/static/list/standard_outfit_options + if(!standard_outfit_options) + standard_outfit_options = list() + for(var/path in subtypesof(/datum/outfit/job)) + var/datum/outfit/O = path + if(initial(O.can_be_admin_equipped)) + standard_outfit_options[initial(O.name)] = path + sortTim(standard_outfit_options, /proc/cmp_text_asc) + outfit_options = standard_outfit_options + +/datum/action/chameleon_outfit/Trigger() + return select_outfit(owner) + +/datum/action/chameleon_outfit/proc/select_outfit(mob/user) + if(!user || !IsAvailable()) + return FALSE + var/selected = input("Select outfit to change into", "Chameleon Outfit") as null|anything in outfit_options + if(!IsAvailable() || QDELETED(src) || QDELETED(user)) + return FALSE + var/outfit_type = outfit_options[selected] + if(!outfit_type) + return FALSE + var/datum/outfit/O = new outfit_type() + var/list/outfit_types = O.get_chameleon_disguise_info() + + for(var/V in user.chameleon_item_actions) + var/datum/action/item_action/chameleon/change/A = V + var/done = FALSE + for(var/T in outfit_types) + for(var/name in A.chameleon_list) + if(A.chameleon_list[name] == T) + A.update_look(user, T) + outfit_types -= T + done = TRUE + break + if(done) + break + //hardsuit helmets/suit hoods + if(O.toggle_helmet && (ispath(O.suit, /obj/item/clothing/suit/space/hardsuit) || ispath(O.suit, /obj/item/clothing/suit/hooded)) && ishuman(user)) + var/mob/living/carbon/human/H = user + //make sure they are actually wearing the suit, not just holding it, and that they have a chameleon hat + if(istype(H.wear_suit, /obj/item/clothing/suit/chameleon) && istype(H.head, /obj/item/clothing/head/chameleon)) + var/helmet_type + if(ispath(O.suit, /obj/item/clothing/suit/space/hardsuit)) + var/obj/item/clothing/suit/space/hardsuit/hardsuit = O.suit + helmet_type = initial(hardsuit.helmettype) + else + var/obj/item/clothing/suit/hooded/hooded = O.suit + helmet_type = initial(hooded.hoodtype) + + if(helmet_type) + var/obj/item/clothing/head/chameleon/hat = H.head + hat.chameleon_action.update_look(user, helmet_type) + qdel(O) + return TRUE + + /datum/action/item_action/chameleon/change name = "Chameleon Change" var/list/chameleon_blacklist = list() //This is a typecache @@ -77,6 +144,24 @@ var/emp_timer +/datum/action/item_action/chameleon/change/Grant(mob/M) + if(M && (owner != M)) + if(!M.chameleon_item_actions) + M.chameleon_item_actions = list(src) + var/datum/action/chameleon_outfit/O = new /datum/action/chameleon_outfit() + O.Grant(M) + else + M.chameleon_item_actions |= src + ..() + +/datum/action/item_action/chameleon/change/Remove(mob/M) + if(M && (M == owner)) + LAZYREMOVE(M.chameleon_item_actions, src) + if(!LAZYLEN(M.chameleon_item_actions)) + var/datum/action/chameleon_outfit/O = locate(/datum/action/chameleon_outfit) in M.actions + qdel(O) + ..() + /datum/action/item_action/chameleon/change/proc/initialize_disguises() if(button) button.name = "Change [chameleon_name] Appearance" @@ -85,9 +170,7 @@ for(var/V in typesof(chameleon_type)) if(ispath(V) && ispath(V, /obj/item)) var/obj/item/I = V - if(chameleon_blacklist[V] || (initial(I.flags_1) & ABSTRACT_1)) - continue - if(!initial(I.icon_state) || !initial(I.item_state)) + if(chameleon_blacklist[V] || (initial(I.item_flags) & ABSTRACT) || !initial(I.icon_state)) continue var/chameleon_item_name = "[initial(I.name)] ([initial(I.icon_state)])" chameleon_list[chameleon_item_name] = I @@ -195,6 +278,9 @@ chameleon_action.initialize_disguises() /obj/item/clothing/under/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/clothing/under/chameleon/broken/Initialize() @@ -221,6 +307,9 @@ chameleon_action.initialize_disguises() /obj/item/clothing/suit/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/clothing/suit/chameleon/broken/Initialize() @@ -246,6 +335,9 @@ chameleon_action.initialize_disguises() /obj/item/clothing/glasses/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/clothing/glasses/chameleon/broken/Initialize() @@ -272,6 +364,9 @@ chameleon_action.initialize_disguises() /obj/item/clothing/gloves/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/clothing/gloves/chameleon/broken/Initialize() @@ -298,6 +393,9 @@ chameleon_action.initialize_disguises() /obj/item/clothing/head/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/clothing/head/chameleon/broken/Initialize() @@ -307,7 +405,7 @@ /obj/item/clothing/head/chameleon/drone // The camohat, I mean, holographic hat projection, is part of the // drone itself. - flags_1 = NODROP_1 + item_flags = NODROP armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) // which means it offers no protection, it's just air and light @@ -345,6 +443,9 @@ chameleon_action.initialize_disguises() /obj/item/clothing/mask/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/clothing/mask/chameleon/broken/Initialize() @@ -358,7 +459,7 @@ /obj/item/clothing/mask/chameleon/drone //Same as the drone chameleon hat, undroppable and no protection - flags_1 = NODROP_1 + item_flags = NODROP armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) // Can drones use the voice changer part? Let's not find out. vchange = 0 @@ -395,6 +496,9 @@ chameleon_action.initialize_disguises() /obj/item/clothing/shoes/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/clothing/shoes/chameleon/noslip @@ -420,6 +524,9 @@ chameleon_action.initialize_disguises() /obj/item/storage/backpack/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/storage/backpack/chameleon/broken/Initialize() @@ -445,6 +552,9 @@ STR.silent = TRUE /obj/item/storage/belt/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/storage/belt/chameleon/broken/Initialize() @@ -463,6 +573,9 @@ chameleon_action.initialize_disguises() /obj/item/radio/headset/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/radio/headset/chameleon/broken/Initialize() @@ -482,8 +595,25 @@ chameleon_action.initialize_disguises() /obj/item/pda/chameleon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/pda/chameleon/broken/Initialize() . = ..() chameleon_action.emp_randomise(INFINITY) + +/obj/item/stamp/chameleon + var/datum/action/item_action/chameleon/change/chameleon_action + +/obj/item/stamp/chameleon/Initialize() + . = ..() + chameleon_action = new(src) + chameleon_action.chameleon_type = /obj/item/stamp + chameleon_action.chameleon_name = "Stamp" + chameleon_action.initialize_disguises() + +/obj/item/stamp/chameleon/broken/Initialize() + . = ..() + chameleon_action.emp_randomise(INFINITY) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index e303e3c1c2..1dde03a8ed 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -90,7 +90,7 @@ for(var/variable in user_vars_to_edit) if(variable in user.vars) LAZYSET(user_vars_remembered, variable, user.vars[variable]) - user.vars[variable] = user_vars_to_edit[variable] + user.vv_edit_var(variable, user_vars_to_edit[variable]) /obj/item/clothing/examine(mob/user) ..() diff --git a/code/modules/clothing/ears/_ears.dm b/code/modules/clothing/ears/_ears.dm index bb2a489030..1dcaeb35fa 100644 --- a/code/modules/clothing/ears/_ears.dm +++ b/code/modules/clothing/ears/_ears.dm @@ -1,50 +1,50 @@ - -//Ears: currently only used for headsets and earmuffs -/obj/item/clothing/ears - name = "ears" - w_class = WEIGHT_CLASS_TINY - throwforce = 0 - slot_flags = ITEM_SLOT_EARS - resistance_flags = NONE - -/obj/item/clothing/ears/earmuffs - name = "earmuffs" - desc = "Protects your hearing from loud noises, and quiet ones as well." - icon_state = "earmuffs" - item_state = "earmuffs" - strip_delay = 15 - equip_delay_other = 25 - resistance_flags = FLAMMABLE - -/obj/item/clothing/ears/earmuffs/ComponentInitialize() - . = ..() - AddComponent(/datum/component/earhealing) - AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS)) - -/obj/item/clothing/ears/headphones - name = "headphones" - desc = "Unce unce unce unce. Boop!" - icon = 'icons/obj/clothing/accessories.dmi' - icon_state = "headphones" - item_state = "headphones" - slot_flags = ITEM_SLOT_EARS | ITEM_SLOT_HEAD | ITEM_SLOT_NECK //Fluff item, put it whereever you want! - actions_types = list(/datum/action/item_action/toggle_headphones) - var/headphones_on = FALSE - -/obj/item/clothing/ears/headphones/Initialize() - . = ..() - update_icon() - -/obj/item/clothing/ears/headphones/update_icon() - icon_state = "[initial(icon_state)]_[headphones_on? "on" : "off"]" - item_state = "[initial(item_state)]_[headphones_on? "on" : "off"]" - -/obj/item/clothing/ears/headphones/proc/toggle(owner) - headphones_on = !headphones_on - update_icon() - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.update_inv_ears() - H.update_inv_neck() - H.update_inv_head() - to_chat(owner, "You turn the music [headphones_on? "on. Untz Untz Untz!" : "off."]") + +//Ears: currently only used for headsets and earmuffs +/obj/item/clothing/ears + name = "ears" + w_class = WEIGHT_CLASS_TINY + throwforce = 0 + slot_flags = ITEM_SLOT_EARS + resistance_flags = NONE + +/obj/item/clothing/ears/earmuffs + name = "earmuffs" + desc = "Protects your hearing from loud noises, and quiet ones as well." + icon_state = "earmuffs" + item_state = "earmuffs" + strip_delay = 15 + equip_delay_other = 25 + resistance_flags = FLAMMABLE + +/obj/item/clothing/ears/earmuffs/ComponentInitialize() + . = ..() + AddComponent(/datum/component/earhealing) + AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS)) + +/obj/item/clothing/ears/headphones + name = "headphones" + desc = "Unce unce unce unce. Boop!" + icon = 'icons/obj/clothing/accessories.dmi' + icon_state = "headphones" + item_state = "headphones" + slot_flags = ITEM_SLOT_EARS | ITEM_SLOT_HEAD | ITEM_SLOT_NECK //Fluff item, put it whereever you want! + actions_types = list(/datum/action/item_action/toggle_headphones) + var/headphones_on = FALSE + +/obj/item/clothing/ears/headphones/Initialize() + . = ..() + update_icon() + +/obj/item/clothing/ears/headphones/update_icon() + icon_state = "[initial(icon_state)]_[headphones_on? "on" : "off"]" + item_state = "[initial(item_state)]_[headphones_on? "on" : "off"]" + +/obj/item/clothing/ears/headphones/proc/toggle(owner) + headphones_on = !headphones_on + update_icon() + var/mob/living/carbon/human/H = owner + if(istype(H)) + H.update_inv_ears() + H.update_inv_neck() + H.update_inv_head() + to_chat(owner, "You turn the music [headphones_on? "on. Untz Untz Untz!" : "off."]") diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 179054bee7..bbb8d687d9 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -286,8 +286,10 @@ glass_colour_type = /datum/client_colour/glass_colour/red /obj/item/clothing/glasses/thermal/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return thermal_overload() - ..() /obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete name = "chameleon thermals" @@ -305,7 +307,9 @@ chameleon_action.initialize_disguises() /obj/item/clothing/glasses/thermal/syndi/emp_act(severity) - ..() + . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() /obj/item/clothing/glasses/thermal/monocle @@ -363,7 +367,7 @@ vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS darkness_view = 8 scan_reagents = 1 - flags_1 = NODROP_1 + item_flags = NODROP lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE resistance_flags = LAVA_PROOF | FIRE_PROOF diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 6364826942..19bcf470bd 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -17,7 +17,8 @@ H.remove_hud_from(user) /obj/item/clothing/glasses/hud/emp_act(severity) - if(obj_flags & EMAGGED) + . = ..() + if(obj_flags & EMAGGED || . & EMP_PROTECT_SELF) return obj_flags |= EMAGGED desc = "[desc] The display is flickering slightly." @@ -96,6 +97,8 @@ /obj/item/clothing/glasses/hud/security/chameleon/emp_act(severity) . = ..() + if(. & EMP_PROTECT_SELF) + return chameleon_action.emp_randomise() @@ -192,5 +195,7 @@ user.update_inv_glasses() /obj/item/clothing/glasses/hud/toggle/thermal/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return thermal_overload() - ..() diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 5363e58008..25e0dbe886 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -150,7 +150,7 @@ dog_fashion = null /obj/item/clothing/head/helmet/roman - name = "roman helmet" + name = "\improper Roman helmet" desc = "An ancient helmet made of bronze and leather." flags_inv = HIDEEARS|HIDEHAIR flags_cover = HEADCOVERSEYES @@ -165,13 +165,13 @@ desc = "An ancient helmet made of plastic and leather." armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) -/obj/item/clothing/head/helmet/roman/legionaire - name = "roman legionaire helmet" +/obj/item/clothing/head/helmet/roman/legionnaire + name = "\improper Roman legionnaire helmet" desc = "An ancient helmet made of bronze and leather. Has a red crest on top of it." icon_state = "roman_c" item_state = "roman_c" -/obj/item/clothing/head/helmet/roman/legionaire/fake +/obj/item/clothing/head/helmet/roman/legionnaire/fake desc = "An ancient helmet made of plastic and leather. Has a red crest on top of it." armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) @@ -233,12 +233,6 @@ icon_state = "knight_red" item_state = "knight_red" -/obj/item/clothing/head/helmet/knight/templar - name = "crusader helmet" - desc = "Deus Vult." - icon_state = "knight_templar" - item_state = "knight_templar" - /obj/item/clothing/head/helmet/skull name = "skull helmet" desc = "An intimidating tribal helmet, it doesn't look very comfortable." diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 613b40d19b..faa3ebdb0f 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -55,24 +55,6 @@ flags_inv = HIDEHAIR flags_cover = HEADCOVERSEYES -/obj/item/clothing/head/cage - name = "cage" - desc = "A cage that restrains the will of the self, allowing one to see the profane world for what it is." - alternate_worn_icon = 'icons/mob/large-worn-icons/64x64/head.dmi' - icon_state = "cage" - item_state = "cage" - worn_x_dimension = 64 - worn_y_dimension = 64 - dynamic_hair_suffix = "" - - -/obj/item/clothing/head/witchunter_hat - name = "witchunter hat" - desc = "This hat saw much use back in the day." - icon_state = "witchhunterhat" - item_state = "witchhunterhat" - flags_cover = HEADCOVERSEYES - //Detective /obj/item/clothing/head/fedora/det_hat name = "detective's fedora" @@ -118,7 +100,7 @@ /obj/item/clothing/head/beret/highlander desc = "That was white fabric. Was." - flags_1 = NODROP_1 + item_flags = NODROP dog_fashion = null //THIS IS FOR SLAUGHTER, NOT PUPPIES //Security @@ -154,7 +136,7 @@ /obj/item/clothing/head/beret/sec name = "security beret" - desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficent protection." + desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection." icon_state = "beret_badge" armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50) strip_delay = 60 diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index d7a7e7f5e2..ba23338415 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -221,7 +221,7 @@ icon_state = "shamebrero" item_state = "shamebrero" desc = "Once it's on, it never comes off." - flags_1 = NODROP_1 + item_flags = NODROP dog_fashion = null /obj/item/clothing/head/cone @@ -305,8 +305,8 @@ icon_state = "drfreeze_hat" flags_inv = HIDEHAIR -/obj/item/clothing/head/pharoah - name = "pharoah hat" +/obj/item/clothing/head/pharaoh + name = "pharaoh hat" desc = "Walk like an Egyptian." icon_state = "pharoah_hat" icon_state = "pharoah_hat" @@ -318,7 +318,7 @@ dynamic_hair_suffix = "" /obj/item/clothing/head/nemes - name = "headress of Nemes" + name = "headdress of Nemes" desc = "Lavish space tomb not included." icon_state = "nemes_headdress" icon_state = "nemes_headdress" @@ -344,4 +344,4 @@ if(prob(3)) M += pick(" Honh honh honh!"," Honh!"," Zut Alors!") - return trim(M) \ No newline at end of file + return trim(M) diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 145d3cb3fe..a088a425be 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -14,7 +14,7 @@ visor_flags_cover = MASKCOVERSMOUTH resistance_flags = NONE -obj/item/clothing/mask/breath/suicide_act(mob/living/carbon/user) +/obj/item/clothing/mask/breath/suicide_act(mob/living/carbon/user) user.visible_message("[user] is wrapping \the [src]'s tube around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide!") return OXYLOSS diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 726670762e..56687674b4 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -174,7 +174,7 @@ dog_fashion = null -obj/item/clothing/mask/gas/tiki_mask/ui_action_click(mob/user) +/obj/item/clothing/mask/gas/tiki_mask/ui_action_click(mob/user) var/mob/M = usr var/list/options = list() diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm index 0d78e11874..3f21780f15 100644 --- a/code/modules/clothing/masks/hailer.dm +++ b/code/modules/clothing/masks/hailer.dm @@ -3,7 +3,7 @@ /obj/item/clothing/mask/gas/sechailer name = "security gas mask" - desc = "A standard issue Security gas mask with integrated 'Compli-o-nator 3000' device. Plays over a dozen pre-recorded compliance phrases designed to get scumbags to stand still whilst you taze them. Do not tamper with the device." + desc = "A standard issue Security gas mask with integrated 'Compli-o-nator 3000' device. Plays over a dozen pre-recorded compliance phrases designed to get scumbags to stand still whilst you tase them. Do not tamper with the device." actions_types = list(/datum/action/item_action/halt, /datum/action/item_action/adjust) icon_state = "sechailer" item_state = "sechailer" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index ad77f1d350..c0d41aeb68 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -101,7 +101,7 @@ return message ///frog mask - reeee!! -obj/item/clothing/mask/frog +/obj/item/clothing/mask/frog name = "frog mask" desc = "An ancient mask carved in the shape of a frog.
    Sanity is like gravity, all it needs is a push." icon_state = "frog" @@ -122,8 +122,8 @@ obj/item/clothing/mask/frog message = pick("Ree!!", "Reee!!","REEE!!","REEEEE!!") //but its usually just angry gibberish, return message -obj/item/clothing/mask/frog/cursed - flags_1 = NODROP_1 //reee!! +/obj/item/clothing/mask/frog/cursed + item_flags = NODROP //reee!! /obj/item/clothing/mask/frog/cursed/attack_self(mob/user) return //no voicebox to alter. diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index cb797c34d4..8245148096 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -100,6 +100,11 @@ icon_state = "scarf" color = "#4A4A4B" //Grey but it looks black +/obj/item/clothing/neck/scarf/pink + name = "pink scarf" + icon_state = "scarf" + color = "#F699CD" //Pink + /obj/item/clothing/neck/scarf/red name = "red scarf" icon_state = "scarf" @@ -118,7 +123,7 @@ /obj/item/clothing/neck/scarf/purple name = "purple scarf" icon_state = "scarf" - color = "#9557C5" //purple + color = "#9557C5" //Purple /obj/item/clothing/neck/scarf/yellow name = "yellow scarf" @@ -128,7 +133,7 @@ /obj/item/clothing/neck/scarf/orange name = "orange scarf" icon_state = "scarf" - color = "#C67A4B" //orange + color = "#C67A4B" //Orange /obj/item/clothing/neck/scarf/cyan name = "cyan scarf" diff --git a/code/modules/clothing/outfits/event.dm b/code/modules/clothing/outfits/event.dm index 37a06046b5..347fc5c2d7 100644 --- a/code/modules/clothing/outfits/event.dm +++ b/code/modules/clothing/outfits/event.dm @@ -26,5 +26,5 @@ var/obj/item/storage/backpack/bag = H.back var/obj/item/a_gift/gift = new(H) - while(bag.SendSignal(COMSIG_TRY_STORAGE_INSERT, gift, null, TRUE, FALSE)) + while(SEND_SIGNAL(bag, COMSIG_TRY_STORAGE_INSERT, gift, null, TRUE, FALSE)) gift = new(H) diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 6375f7986f..88b51963e5 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -151,7 +151,7 @@ r_hand = /obj/item/twohanded/fireaxe /datum/outfit/psycho/post_equip(mob/living/carbon/human/H) - for(var/obj/item/carried_item in H.get_equipped_items()) + for(var/obj/item/carried_item in H.get_equipped_items(TRUE)) carried_item.add_mob_blood(H)//Oh yes, there will be blood... for(var/obj/item/I in H.held_items) I.add_mob_blood(H) @@ -182,11 +182,11 @@ for(var/obj/item/briefcase_item in sec_briefcase) qdel(briefcase_item) for(var/i = 3 to 0 step -1) - sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/stack/spacecash/c1000, null, TRUE, TRUE) - sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/energy/kinetic_accelerator/crossbow, null, TRUE, TRUE) - sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/ballistic/revolver/mateba, null, TRUE, TRUE) - sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/ammo_box/a357, null, TRUE, TRUE) - sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/grenade/plastic/x4, null, TRUE, TRUE) + SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/stack/spacecash/c1000, null, TRUE, TRUE) + SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/energy/kinetic_accelerator/crossbow, null, TRUE, TRUE) + SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/ballistic/revolver/mateba, null, TRUE, TRUE) + SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/ammo_box/a357, null, TRUE, TRUE) + SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/grenade/plastic/x4, null, TRUE, TRUE) var/obj/item/pda/heads/pda = H.belt pda.owner = H.real_name diff --git a/code/modules/clothing/outfits/vr.dm b/code/modules/clothing/outfits/vr.dm new file mode 100644 index 0000000000..cd8930641f --- /dev/null +++ b/code/modules/clothing/outfits/vr.dm @@ -0,0 +1,41 @@ +/datum/outfit/vr + name = "Basic VR" + uniform = /obj/item/clothing/under/color/random + shoes = /obj/item/clothing/shoes/sneakers/black + ears = /obj/item/radio/headset + id = /obj/item/card/id + +/datum/outfit/vr/pre_equip(mob/living/carbon/human/H) + H.dna.species.before_equip_job(null, H) + +/datum/outfit/vr/post_equip(mob/living/carbon/human/H) + var/obj/item/card/id/id = H.wear_id + if (istype(id)) + id.access |= get_all_accesses() + +/datum/outfit/vr/syndicate + name = "Syndicate VR Operative - Basic" + uniform = /obj/item/clothing/under/syndicate + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + back = /obj/item/storage/backpack + id = /obj/item/card/id/syndicate + belt = /obj/item/gun/ballistic/automatic/pistol + l_pocket = /obj/item/paper/fluff/vr/fluke_ops + backpack_contents = list(/obj/item/storage/box/syndie=1,\ + /obj/item/kitchen/knife/combat/survival) + +/datum/outfit/vr/syndicate/post_equip(mob/living/carbon/human/H) + . = ..() + var/obj/item/uplink/U = new /obj/item/uplink/nuclear_restricted(H, H.key, 80) + H.equip_to_slot_or_del(U, SLOT_IN_BACKPACK) + var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(H) + W.implant(H) + var/obj/item/implant/explosive/E = new/obj/item/implant/explosive(H) + E.implant(H) + H.faction |= ROLE_SYNDICATE + H.update_icons() + +/obj/item/paper/fluff/vr/fluke_ops + name = "Where is my uplink?" + info = "Use the radio in your backpack." \ No newline at end of file diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 9f0d8358ac..c81505d8e8 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -1,5 +1,5 @@ /obj/item/clothing/shoes/proc/step_action() //this was made to rewrite clown shoes squeaking - SendSignal(COMSIG_SHOES_STEP_ACTION) + SEND_SIGNAL(src, COMSIG_SHOES_STEP_ACTION) /obj/item/clothing/shoes/sneakers/mime name = "mime shoes" @@ -64,7 +64,7 @@ /obj/item/clothing/shoes/galoshes/dry/step_action() var/turf/open/t_loc = get_turf(src) - t_loc.SendSignal(COMSIG_TURF_MAKE_DRY, TURF_WET_WATER, TRUE, INFINITY) + SEND_SIGNAL(t_loc, COMSIG_TURF_MAKE_DRY, TURF_WET_WATER, TRUE, INFINITY) /obj/item/clothing/shoes/clown_shoes desc = "The prankster's standard-issue clowning shoes. Damn, they're huge!" @@ -82,12 +82,12 @@ /obj/item/clothing/shoes/clown_shoes/equipped(mob/user, slot) . = ..() if(user.mind && user.mind.assigned_role == "Clown") - user.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "noshoes") + SEND_SIGNAL(user, COMSIG_CLEAR_MOOD_EVENT, "noshoes") /obj/item/clothing/shoes/clown_shoes/dropped(mob/user) . = ..() if(user.mind && user.mind.assigned_role == "Clown") - user.SendSignal(COMSIG_ADD_MOOD_EVENT, "noshoes", /datum/mood_event/noshoes) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "noshoes", /datum/mood_event/noshoes) /obj/item/clothing/shoes/clown_shoes/jester name = "jester shoes" @@ -157,7 +157,7 @@ icon_state = "cultalt" /obj/item/clothing/shoes/cult/alt/ghost - flags_1 = NODROP_1|DROPDEL_1 + item_flags = NODROP | DROPDEL /obj/item/clothing/shoes/cyborg name = "cyborg boots" diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 3040af756e..d0820304fe 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -67,6 +67,9 @@ return ..() /obj/item/clothing/suit/space/chronos/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return var/mob/living/carbon/human/user = src.loc switch(severity) if(1) @@ -95,7 +98,7 @@ teleporting = 0 for(var/obj/item/I in user.held_items) if(I in hands_nodrop) - I.flags_1 &= ~NODROP_1 + I.item_flags &= ~NODROP if(camera) camera.remove_target_ui() camera.forceMove(user) @@ -130,9 +133,9 @@ hands_nodrop = list() for(var/obj/item/I in user.held_items) - if(!(I.flags_1 & NODROP_1)) + if(!(I.item_flags & NODROP)) hands_nodrop += I - I.flags_1 |= NODROP_1 + I.item_flags |= NODROP user.animate_movement = NO_STEPS user.changeNext_move(8 + phase_in_ds) user.notransform = 1 @@ -191,9 +194,9 @@ if(user.head && istype(user.head, /obj/item/clothing/head/helmet/space/chronos)) to_chat(user, "\[ ok \] Mounting /dev/helm") helmet = user.head - helmet.flags_1 |= NODROP_1 + helmet.item_flags |= NODROP helmet.suit = src - src.flags_1 |= NODROP_1 + src.item_flags |= NODROP to_chat(user, "\[ ok \] Starting brainwave scanner") to_chat(user, "\[ ok \] Starting ui display driver") to_chat(user, "\[ ok \] Initializing chronowalk4-view") @@ -212,7 +215,7 @@ activating = 1 var/mob/living/carbon/human/user = src.loc var/hard_landing = teleporting && force - src.flags_1 &= ~NODROP_1 + item_flags &= ~NODROP cooldown = world.time + cooldowntime * 1.5 activated = 0 activating = 0 @@ -233,7 +236,7 @@ to_chat(user, "\[ ok \] Unmounting /dev/helmet") to_chat(user, "logout") if(helmet) - helmet.flags_1 &= ~NODROP_1 + helmet.item_flags &= ~NODROP helmet.suit = null helmet = null if(camera) diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm index d7d0da7582..176bc81665 100644 --- a/code/modules/clothing/spacesuits/flightsuit.dm +++ b/code/modules/clothing/spacesuits/flightsuit.dm @@ -189,11 +189,13 @@ . = ..() /obj/item/flightpack/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return var/damage = severity == 1 ? emp_strong_damage : emp_weak_damage if(emp_damage <= (emp_disable_threshold * 1.5)) emp_damage += damage usermessage("WARNING: Class [severity] EMP detected! Circuit damage at [(emp_damage/emp_disable_threshold)*100]%!", "boldwarning") - return ..() //Proc to change amount of momentum the wearer has, or dampen all momentum by a certain amount. /obj/item/flightpack/proc/adjust_momentum(amountx, amounty, reduce_amount_total = 0) @@ -300,7 +302,7 @@ if(suit && !suit.deployedshoes && (brake || stabilizer)) brake = FALSE stabilizer = FALSE - usermessage("Warning: Sensor data is not being recieved from flight shoes. Stabilizers and airbrake modules deactivated!", "boldwarning") + usermessage("Warning: Sensor data is not being received from flight shoes. Stabilizers and airbrake modules deactivated!", "boldwarning") /obj/item/flightpack/process() @@ -758,7 +760,7 @@ item_state = "flightsuit" strip_delay = 30 w_class = WEIGHT_CLASS_BULKY - resistance_flags = FIRE_PROOF + resistance_flags = FIRE_PROOF | ACID_PROOF helmettype = /obj/item/clothing/head/helmet/space/hardsuit/flightsuit jetpack = null actions_types = list(/datum/action/item_action/flightsuit/toggle_helmet, /datum/action/item_action/flightsuit/toggle_boots, /datum/action/item_action/flightsuit/toggle_flightpack, /datum/action/item_action/flightsuit/lock_suit) @@ -895,7 +897,7 @@ usermessage("You're already wearing something on your back!", "boldwarning") return FALSE user.equip_to_slot_if_possible(pack,SLOT_BACK,0,0,1) - pack.flags_1 |= NODROP_1 + pack.item_flags |= NODROP resync() user.visible_message("A [pack.name] extends from [user]'s [name] and clamps to [user.p_their()] back!") user.update_inv_wear_suit() @@ -909,7 +911,7 @@ return FALSE if(pack.flight && forced) pack.disable_flight(1) - pack.flags_1 &= ~NODROP_1 + pack.item_flags &= ~NODROP resync() if(user) user.transferItemToLoc(pack, src, TRUE) @@ -933,14 +935,14 @@ usermessage("You're already wearing something on your feet!", "boldwarning") return FALSE user.equip_to_slot_if_possible(shoes,SLOT_SHOES,0,0,1) - shoes.flags_1 |= NODROP_1 + shoes.item_flags |= NODROP user.visible_message("[user]'s [name] extends a pair of [shoes.name] over [user.p_their()] feet!") user.update_inv_wear_suit() playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1) deployedshoes = TRUE /obj/item/clothing/suit/space/hardsuit/flightsuit/proc/retract_flightshoes(forced = FALSE) - shoes.flags_1 &= ~NODROP_1 + shoes.item_flags &= ~NODROP playsound(src, 'sound/mecha/mechmove03.ogg', 50, 1) if(user) user.transferItemToLoc(shoes, src, TRUE) @@ -1079,12 +1081,12 @@ icon_state = "flighthelmet" item_state = "flighthelmet" item_color = "flight" - resistance_flags = FIRE_PROOF + resistance_flags = FIRE_PROOF | ACID_PROOF brightness_on = 7 light_color = "#30ffff" armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 30, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 100) max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT - var/list/datahuds = list(DATA_HUD_SECURITY_BASIC, DATA_HUD_MEDICAL_BASIC, DATA_HUD_DIAGNOSTIC_BASIC) //CITADEL NERF + var/list/datahuds = list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_BASIC) var/zoom_range = 12 var/zoom = FALSE actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/flightpack/zoom) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 4a8e368208..2e5896098f 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -86,7 +86,7 @@ soundloop.last_radiation = rad_record /obj/item/clothing/head/helmet/space/hardsuit/emp_act(severity) - ..() + . = ..() display_visor_message("[severity > 1 ? "Light" : "Strong"] electromagnetic pulse detected!") @@ -713,7 +713,7 @@ icon_state = "ert_medical" item_state = "ert_medical" item_color = "ert_medical" - flags_1 = NODROP_1 //Dont want people changing into the other teams gear + item_flags = NODROP //Dont want people changing into the other teams gear helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf armor = list("melee" = 0, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 95) slowdown = 0 diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index f3975d1f81..a4b82c8234 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -165,7 +165,7 @@ Contains: item_color = "ert_commander" armor = list("melee" = 65, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80) strip_delay = 130 - flags_1 = NODROP_1 + item_flags = NODROP brightness_on = 7 /obj/item/clothing/suit/space/hardsuit/ert @@ -265,7 +265,7 @@ Contains: armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy as a space carp brightness_on = 0 //luminosity when on actions_types = list() - flags_1 = NODROP_1 + item_flags = NODROP /obj/item/clothing/suit/space/hardsuit/carp diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 49b4fb7766..f73ca30fb0 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -53,7 +53,7 @@ /obj/item/clothing/suit/armor/hos/trenchcoat name = "armored trenchoat" - desc = "A trenchcoat enchanced with a special lightweight kevlar. The epitome of tactical plainclothes." + desc = "A trenchcoat enhanced with a special lightweight kevlar. The epitome of tactical plainclothes." icon_state = "hostrench" item_state = "hostrench" flags_inv = 0 @@ -234,9 +234,3 @@ /obj/item/clothing/suit/armor/riot/knight/red icon_state = "knight_red" item_state = "knight_red" - -/obj/item/clothing/suit/armor/riot/knight/templar - name = "crusader armour" - desc = "God wills it!" - icon_state = "knight_templar" - item_state = "knight_templar" diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index d38c625ee2..1c24ee17a7 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -2,7 +2,7 @@ /obj/item/clothing/head/bio_hood name = "bio hood" icon_state = "bio" - desc = "A hood that protects the head and face from biological comtaminants." + desc = "A hood that protects the head and face from biological contaminants." permeability_coefficient = 0.01 clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 80, "fire" = 30, "acid" = 100) diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 8b87cf6f6e..85767852e4 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -15,7 +15,7 @@ icon_state = "golhood" desc = "A hood for a cloak." body_parts_covered = HEAD - flags_1 = NODROP_1 + item_flags = NODROP flags_inv = HIDEHAIR|HIDEEARS /obj/item/clothing/neck/cloak/suicide_act(mob/user) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 6c10782334..deaedfec18 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -23,22 +23,6 @@ allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/assembly/flash/handheld, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) //Chaplain -/obj/item/clothing/suit/hooded/chaplain_hoodie - name = "chaplain hoodie" - desc = "This suit says to you 'hush'!" - icon_state = "chaplain_hoodie" - item_state = "chaplain_hoodie" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - hoodtype = /obj/item/clothing/head/hooded/chaplain_hood - -/obj/item/clothing/head/hooded/chaplain_hood - name = "chaplain hood" - desc = "For protecting your identity when immolating demons." - icon_state = "chaplain_hood" - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS - /obj/item/clothing/suit/nun name = "nun robe" desc = "Maximum piety in this star system." diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 634ec5f631..a598bd0959 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -5,7 +5,7 @@ item_state = "labcoat" blood_overlay_type = "coat" body_parts_covered = CHEST|ARMS - allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman,/obj/item/hypospray) //CITADEL ADD, Hyposprays to laboats + allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 50, "acid" = 50) togglename = "buttons" species_exception = list(/datum/species/golem) @@ -17,13 +17,13 @@ item_state = "labcoat_cmo" /obj/item/clothing/suit/toggle/labcoat/emt - name = "EMT's jacket" + name = "\improper EMT's jacket" desc = "A dark blue jacket with reflective strips for emergency medical technicians." icon_state = "labcoat_emt" item_state = "labcoat_cmo" /obj/item/clothing/suit/toggle/labcoat/mad - name = "\improper The Mad's labcoat" + name = "\proper The Mad's labcoat" desc = "It makes you look capable of konking someone on the noggin and shooting them into space." icon_state = "labgreen" item_state = "labgreen" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index f6cb6a44ad..858f65b64c 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -222,7 +222,7 @@ desc = "Forced to live on your shameful acting as a fake Mexican, you and your poncho have grown inseparable. Literally." icon_state = "ponchoshame" item_state = "ponchoshame" - flags_1 = NODROP_1 + item_flags = NODROP /obj/item/clothing/suit/whitedress name = "white dress" @@ -311,7 +311,7 @@ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR /obj/item/clothing/suit/security/officer/russian - name = "russian officer's jacket" + name = "\improper Russian officer's jacket" desc = "This jacket is for those special occasions when a russian officer isn't required to wear their armor." icon_state = "officertanjacket" item_state = "officertanjacket" @@ -594,3 +594,12 @@ icon = 'icons/obj/clothing/clockwork_garb.dmi' icon_state = "clockwork_cuirass_old" armor = list("melee" = 5, "bullet" = 0, "laser" = -5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 20) + +/obj/item/clothing/suit/ghost_sheet + name = "ghost sheet" + desc = "The hands float by themselves, so it's extra spooky." + icon_state = "ghost_sheet" + item_state = "ghost_sheet_item" + w_class = WEIGHT_CLASS_TINY + flags_inv = HIDEGLOVES|HIDEMASK|HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR + alternate_worn_layer = UNDER_HEAD_LAYER diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm index 13e49b3467..e71704132a 100644 --- a/code/modules/clothing/suits/reactive_armour.dm +++ b/code/modules/clothing/suits/reactive_armour.dm @@ -10,8 +10,8 @@ var/static/list/anomaly_armour_types = list( /obj/effect/anomaly/grav = /obj/item/clothing/suit/armor/reactive/repulse, /obj/effect/anomaly/flux = /obj/item/clothing/suit/armor/reactive/tesla, - /obj/effect/anomaly/bluespace = /obj/item/clothing/suit/armor/reactive/teleport, - /obj/effect/anomaly/pyro = /obj/item/clothing/suit/armor/reactive/fire) + /obj/effect/anomaly/bluespace = /obj/item/clothing/suit/armor/reactive/teleport + ) if(istype(I, /obj/item/assembly/signaler/anomaly)) var/obj/item/assembly/signaler/anomaly/A = I @@ -52,11 +52,13 @@ return /obj/item/clothing/suit/armor/reactive/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return active = 0 icon_state = "reactiveoff" item_state = "reactiveoff" reactivearmor_cooldown = world.time + 200 - ..() //When the wearer gets hit, this armor will teleport the user a short distance away (to safety or to more danger, no one knows. That's the fun of it!) /obj/item/clothing/suit/armor/reactive/teleport @@ -152,12 +154,21 @@ siemens_coefficient = -1 var/tesla_power = 25000 var/tesla_range = 20 - var/tesla_boom = FALSE - var/tesla_stun = FALSE + var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE + +/obj/item/clothing/suit/armor/reactive/tesla/dropped(mob/user) + ..() + if(istype(user)) + user.flags_1 &= ~TESLA_IGNORE_1 + +/obj/item/clothing/suit/armor/reactive/tesla/equipped(mob/user, slot) + ..() + if(slot_flags & slotdefine2slotbit(slot)) //Was equipped to a valid slot for this item? + user.flags_1 |= TESLA_IGNORE_1 /obj/item/clothing/suit/armor/reactive/tesla/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(!active) - return 0 + return FALSE if(prob(hit_reaction_chance)) if(world.time < reactivearmor_cooldown) var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread @@ -166,10 +177,9 @@ owner.visible_message("The tesla capacitors on [owner]'s reactive tesla armor are still recharging! The armor merely emits some sparks.") return owner.visible_message("[src] blocks [attack_text], sending out arcs of lightning!") - tesla_zap(owner,tesla_range,tesla_power,tesla_boom, tesla_stun) + tesla_zap(owner, tesla_range, tesla_power, tesla_flags) reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration - return 1 - + return TRUE //Repulse diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 0ac6dba14e..59f7a1c387 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -81,7 +81,7 @@ /obj/item/clothing/suit/wizrobe/yellow name = "yellow wizard robe" - desc = "A magnificant yellow gem-lined robe that seems to radiate power." + desc = "A magnificent yellow gem-lined robe that seems to radiate power." icon_state = "yellowwizard" item_state = "yellowwizrobe" diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 05ce843ff9..8d250ab766 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -14,7 +14,7 @@ /obj/item/clothing/accessory/proc/attach(obj/item/clothing/under/U, user) GET_COMPONENT(storage, /datum/component/storage) if(storage) - if(U.SendSignal(COMSIG_CONTAINS_STORAGE)) + if(SEND_SIGNAL(U, COMSIG_CONTAINS_STORAGE)) return FALSE U.TakeComponent(storage) detached_pockets = storage @@ -28,10 +28,10 @@ pixel_y -= 8 U.add_overlay(src) - if (islist(U.armor)) // This proc can run before /obj/Initialize has run for U and src, + if (islist(U.armor) || isnull(U.armor)) // This proc can run before /obj/Initialize has run for U and src, U.armor = getArmor(arglist(U.armor)) // we have to check that the armor list has been transformed into a datum before we try to call a proc on it // This is safe to do as /obj/Initialize only handles setting up the datum if actually needed. - if (islist(armor)) + if (islist(armor) || isnull(armor)) armor = getArmor(arglist(armor)) U.armor = U.armor.attachArmor(armor) diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index afb9bff1c1..324c16fec7 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -22,7 +22,7 @@ resistance_flags = NONE /obj/item/clothing/under/color/black/ghost - flags_1 = NODROP_1|DROPDEL_1 + item_flags = NODROP | DROPDEL /obj/item/clothing/under/color/grey name = "grey jumpsuit" diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 62106bce6a..57ead15de8 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -38,7 +38,7 @@ can_adjust = FALSE /obj/item/clothing/under/roman - name = "roman armor" + name = "\improper Roman armor" desc = "Ancient Roman armor. Made of metallic and leather straps." icon_state = "roman" item_color = "roman" @@ -388,7 +388,7 @@ /obj/item/clothing/under/kilt/highlander desc = "You're the only one worthy of this kilt." - flags_1 = NODROP_1 + item_flags = NODROP /obj/item/clothing/under/sexymime name = "sexy mime outfit" @@ -614,7 +614,6 @@ /obj/item/clothing/under/plasmaman name = "plasma envirosuit" desc = "A special containment suit that allows plasma-based lifeforms to exist safely in an oxygenated environment, and automatically extinguishes them in a crisis. Despite being airtight, it's not spaceworthy." - icon = 'icons/obj/device.dmi' icon_state = "plasmaman" item_state = "plasmaman" item_color = "plasmaman" @@ -668,7 +667,7 @@ icon = 'icons/obj/device.dmi' /obj/item/clothing/under/rank/security/navyblue/russian - name = "russian officer's uniform" + name = "\improper Russian officer's uniform" desc = "The latest in fashionable russian outfits." icon_state = "hostanclothes" item_state = "hostanclothes" diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index 7d309bd9c7..ea1db981e5 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -100,6 +100,7 @@ .["other"][I.type] += S.amount else if(I.tool_behaviour) .["tool_behaviour"] += I.tool_behaviour + .["other"][I.type] += 1 else if(istype(I, /obj/item/reagent_containers)) var/obj/item/reagent_containers/RC = I @@ -182,7 +183,7 @@ After its done loop over deletion list and delete all the shit that wasnt taken by parts loop - del_reqs return the list of parts resulting object will recieve as argument of CheckParts proc, on the atom level it will add them all to the contents, on all other levels it calls ..() and does whatever is needed afterwards but from contents list already + del_reqs return the list of parts resulting object will receive as argument of CheckParts proc, on the atom level it will add them all to the contents, on all other levels it calls ..() and does whatever is needed afterwards but from contents list already */ /datum/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, mob/user) diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 5122574e58..1ffda7413e 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -669,3 +669,11 @@ tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1) category = CAT_CLOTHING + +/datum/crafting_recipe/ghostsheet + name = "Ghost Sheet" + result = /obj/item/clothing/suit/ghost_sheet + time = 5 + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/bedsheet = 1) + category = CAT_CLOTHING diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm index d17090816c..a97758e294 100644 --- a/code/modules/detectivework/evidence.dm +++ b/code/modules/detectivework/evidence.dm @@ -40,8 +40,8 @@ return if(!isturf(I.loc)) //If it isn't on the floor. Do some checks to see if it's in our hands or a box. Otherwise give up. - if(I.loc.SendSignal(COMSIG_CONTAINS_STORAGE)) //in a container. - I.loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, I, src) + if(SEND_SIGNAL(I.loc, COMSIG_CONTAINS_STORAGE)) //in a container. + SEND_SIGNAL(I.loc, COMSIG_TRY_STORAGE_TAKE, I, src) if(!user.dropItemToGround(I)) return diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 5f4603e35e..50a845a689 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -12,7 +12,7 @@ w_class = WEIGHT_CLASS_TINY icon = 'icons/obj/toy.dmi' icon_state = "rag" - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON container_type = OPENCONTAINER amount_per_transfer_from_this = 5 possible_transfer_amounts = list() @@ -46,5 +46,5 @@ user.visible_message("[user] starts to wipe down [A] with [src]!", "You start to wipe down [A] with [src]...") if(do_after(user,30, target = A)) user.visible_message("[user] finishes wiping off [A]!", "You finish wiping off [A].") - A.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) + SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) return diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index c323f1edf2..e8847adb11 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -11,7 +11,8 @@ item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - flags_1 = CONDUCT_1 | NOBLUDGEON_1 + flags_1 = CONDUCT_1 + item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT var/scanning = 0 var/list/log = list() @@ -200,4 +201,4 @@ return to_chat(user, "Scanner Report") for(var/iterLog in log) - to_chat(user, iterLog) \ No newline at end of file + to_chat(user, iterLog) diff --git a/code/modules/events/abductor.dm b/code/modules/events/abductor.dm index 9835538206..aee49abcc0 100755 --- a/code/modules/events/abductor.dm +++ b/code/modules/events/abductor.dm @@ -23,9 +23,9 @@ var/datum/team/abductor_team/T = new if(T.team_number > ABDUCTOR_MAX_TEAMS) return MAP_ERROR - - log_game("[scientist.mind.key] (ckey) has been selected as [T.name] abductor scientist.") - log_game("[agent.mind.key] (ckey) has been selected as [T.name] abductor agent.") + + log_game("[key_name(scientist)] has been selected as [T.name] abductor scientist.") + log_game("[key_name(agent)] has been selected as [T.name] abductor agent.") scientist.mind.add_antag_datum(/datum/antagonist/abductor/scientist, T) agent.mind.add_antag_datum(/datum/antagonist/abductor/agent, T) diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index 87b12ad4cf..ddc75830d6 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -65,7 +65,7 @@ spawncount-- successSpawn = TRUE - message_admins("[key_name_admin(new_xeno)] has been made into an alien by an event.") + message_admins("[ADMIN_LOOKUPFLW(new_xeno)] has been made into an alien by an event.") log_game("[key_name(new_xeno)] was spawned as an alien by an event.") spawned_mobs += new_xeno diff --git a/code/modules/events/anomaly.dm b/code/modules/events/anomaly.dm index c866dcca0f..bb1df49ca5 100644 --- a/code/modules/events/anomaly.dm +++ b/code/modules/events/anomaly.dm @@ -12,17 +12,33 @@ announceWhen = 1 -/datum/round_event/anomaly/setup(loop=0) - var/safety_loop = loop + 1 - if(safety_loop > 50) - kill() - end() +/datum/round_event/anomaly/proc/findEventArea() + var/static/list/allowed_areas + if(!allowed_areas) + //Places that shouldn't explode + var/list/safe_area_types = typecacheof(list( + /area/ai_monitored/turret_protected/ai, + /area/ai_monitored/turret_protected/ai_upload, + /area/engine, + /area/solar, + /area/holodeck, + /area/shuttle) + ) + + //Subtypes from the above that actually should explode. + var/list/unsafe_area_subtypes = typecacheof(list(/area/engine/break_room)) + + allowed_areas = make_associative(GLOB.the_station_areas) - safe_area_types + unsafe_area_subtypes + + return safepick(typecache_filter_list(GLOB.sortedAreas,allowed_areas)) + +/datum/round_event/anomaly/setup() impact_area = findEventArea() if(!impact_area) - setup(safety_loop) + CRASH("No valid areas for anomaly found.") var/list/turf_test = get_area_turfs(impact_area) if(!turf_test.len) - setup(safety_loop) + CRASH("Anomaly : No valid turfs found for [impact_area] - [impact_area.type]") /datum/round_event/anomaly/announce(fake) priority_announce("Localized energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert") @@ -30,4 +46,4 @@ /datum/round_event/anomaly/start() var/turf/T = safepick(get_area_turfs(impact_area)) if(T) - newAnomaly = new /obj/effect/anomaly/flux(T) + newAnomaly = new /obj/effect/anomaly/flux(T) \ No newline at end of file diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm index 745e8a6ac3..89a84d3494 100644 --- a/code/modules/events/aurora_caelus.dm +++ b/code/modules/events/aurora_caelus.dm @@ -14,8 +14,8 @@ announceWhen = 1 startWhen = 9 endWhen = 50 - var/list/aurora_colors = list("#A2FF80", "#A2FF8B", "#A2FF96", "#A2FFA5", "#A2FFB6", "#A2FFC7", "#A2FFDE") - var/aurora_progress = 0 //this cycles from 1 to 7, slowly changing colors from gentle green to gentle blue + var/list/aurora_colors = list("#A2FF80", "#A2FF8B", "#A2FF96", "#A2FFA5", "#A2FFB6", "#A2FFC7", "#A2FFDE", "#A2FFEE") + var/aurora_progress = 0 //this cycles from 1 to 8, slowly changing colors from gentle green to gentle blue /datum/round_event/aurora_caelus/announce() priority_announce("[station_name()]: A harmless cloud of ions is approaching your station, and will exhaust their energy battering the hull. Nanotrasen has approved a short break for all employees to relax and observe this very rare event. During this time, starlight will be bright but gentle, shifting between quiet green and blue colors. Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space. We hope you enjoy the lights.", diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 45968df0cf..c17918d733 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -34,6 +34,6 @@ var/mob/dead/observer/new_blob = pick(candidates) var/mob/camera/blob/BC = new_blob.become_overmind() spawned_mobs += BC - message_admins("[key_name_admin(BC)] has been made into a blob overmind by an event.") + message_admins("[ADMIN_LOOKUPFLW(BC)] has been made into a blob overmind by an event.") log_game("[key_name(BC)] was spawned as a blob overmind by an event.") return SUCCESSFUL_SPAWN diff --git a/code/modules/events/devil.dm b/code/modules/events/devil.dm index 83c6dcb83d..3760cbe05d 100644 --- a/code/modules/events/devil.dm +++ b/code/modules/events/devil.dm @@ -34,7 +34,7 @@ add_devil(devil, ascendable = FALSE) spawned_mobs += devil - message_admins("[key_name_admin(devil)] has been made into a devil by an event.") + message_admins("[ADMIN_LOOKUPFLW(devil)] has been made into a devil by an event.") log_game("[key_name(devil)] was spawned as a devil by an event.") var/datum/job/jobdatum = SSjob.GetJob("Assistant") devil.job = jobdatum.title diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index b19c8358c2..f09c0481f6 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -61,7 +61,7 @@ else D = new virus_type() else - D = make_virus(max_severity, max_severity) + D = new /datum/disease/advance/random(max_severity, max_severity) D.carrier = TRUE H.ForceContractDisease(D, FALSE, TRUE) @@ -70,26 +70,6 @@ var/list/name_symptoms = list() //for feedback for(var/datum/symptom/S in A.symptoms) name_symptoms += S.name - message_admins("An event has triggered a random advanced virus outbreak on [key_name_admin(H)]! It has these symptoms: [english_list(name_symptoms)]") + message_admins("An event has triggered a random advanced virus outbreak on [ADMIN_LOOKUPFLW(H)]! It has these symptoms: [english_list(name_symptoms)]") log_game("An event has triggered a random advanced virus outbreak on [key_name(H)]! It has these symptoms: [english_list(name_symptoms)]") break - -/datum/round_event/disease_outbreak/proc/make_virus(max_symptoms, max_level) - if(max_symptoms > VIRUS_SYMPTOM_LIMIT) - max_symptoms = VIRUS_SYMPTOM_LIMIT - var/datum/disease/advance/A = new /datum/disease/advance() - var/list/datum/symptom/possible_symptoms = list() - for(var/symptom in subtypesof(/datum/symptom)) - var/datum/symptom/S = symptom - if(initial(S.level) > max_level) - continue - if(initial(S.level) <= 0) //unobtainable symptoms - continue - possible_symptoms += S - for(var/i in 1 to max_symptoms) - var/datum/symptom/chosen_symptom = pick_n_take(possible_symptoms) - if(chosen_symptom) - var/datum/symptom/S = new chosen_symptom - A.symptoms += S - A.Refresh() //just in case someone already made and named the same disease - return A diff --git a/code/modules/events/high_priority_bounty.dm b/code/modules/events/high_priority_bounty.dm new file mode 100644 index 0000000000..ffdcd8840b --- /dev/null +++ b/code/modules/events/high_priority_bounty.dm @@ -0,0 +1,20 @@ +/datum/round_event_control/high_priority_bounty + name = "High Priority Bounty" + typepath = /datum/round_event/high_priority_bounty + max_occurrences = 3 + weight = 20 + earliest_start = 10 + +/datum/round_event/high_priority_bounty/announce(fake) + priority_announce("Central Command has issued a high-priority cargo bounty. Details have been sent to all bounty consoles.", "Nanotrasen Bounty Program") + +/datum/round_event/high_priority_bounty/start() + var/datum/bounty/B + for(var/attempts = 0; attempts < 50; ++attempts) + B = random_bounty() + if(!B) + continue + B.mark_high_priority(3) + if(try_add_bounty(B)) + break + diff --git a/code/modules/events/nightmare.dm b/code/modules/events/nightmare.dm index b1cebb98c5..698f5130f1 100644 --- a/code/modules/events/nightmare.dm +++ b/code/modules/events/nightmare.dm @@ -37,7 +37,7 @@ player_mind.add_antag_datum(/datum/antagonist/nightmare) S.set_species(/datum/species/shadow/nightmare) playsound(S, 'sound/magic/ethereal_exit.ogg', 50, 1, -1) - message_admins("[key_name_admin(S)] has been made into a Nightmare by an event.") + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Nightmare by an event.") log_game("[key_name(S)] was spawned as a Nightmare by an event.") spawned_mobs += S return SUCCESSFUL_SPAWN diff --git a/code/modules/events/operative.dm b/code/modules/events/operative.dm index 424888f99b..7fca4188b7 100644 --- a/code/modules/events/operative.dm +++ b/code/modules/events/operative.dm @@ -33,7 +33,7 @@ Mind.transfer_to(operative) Mind.add_antag_datum(/datum/antagonist/nukeop/lone) - message_admins("[key_name_admin(operative)] has been made into lone operative by an event.") + message_admins("[ADMIN_LOOKUPFLW(operative)] has been made into lone operative by an event.") log_game("[key_name(operative)] was spawned as a lone operative by an event.") spawned_mobs += operative return SUCCESSFUL_SPAWN diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 47dafc11db..8b904ae9b8 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -92,7 +92,6 @@ icon = 'icons/obj/machines/dominator.dmi' icon_state = "dominator" density = TRUE - anchored = TRUE var/active = FALSE var/obj/item/gps/gps var/credits_stored = 0 @@ -210,7 +209,7 @@ /obj/docking_port/mobile/pirate/initiate_docking(obj/docking_port/stationary/new_dock, movement_direction, force=FALSE) . = ..() - if(. == DOCKING_SUCCESS && !is_transit_level(new_dock.z)) + if(. == DOCKING_SUCCESS && !is_reserved_level(new_dock.z)) engines_cooling = TRUE addtimer(CALLBACK(src,.proc/reset_cooldown),engine_cooldown,TIMER_UNIQUE) @@ -234,7 +233,6 @@ icon = 'icons/obj/machines/research.dmi' icon_state = "tdoppler" density = TRUE - anchored = TRUE var/cooldown = 0 var/result_count = 3 //Show X results. diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index 89c7997421..4d3beacbeb 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -62,6 +62,8 @@ temp.update_icon() else if(istype(O, /obj/machinery/door/airlock)) var/obj/machinery/door/airlock/temp = O + if(temp.critical_machine) //Skip doors in critical positions, such as the SM chamber. + continue temp.prison_open() else if(istype(O, /obj/machinery/door_timer)) var/obj/machinery/door_timer/temp = O diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 09de565975..84846c236a 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -24,7 +24,8 @@ /datum/round_event/vent_clog/setup() endWhen = rand(25, 100) for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/temp_vent in GLOB.machines) - if(is_station_level(temp_vent.loc.z) && !temp_vent.welded) + var/turf/T = get_turf(temp_vent) + if(T && is_station_level(T.z) && !temp_vent.welded) vents += temp_vent if(!vents.len) return kill() @@ -72,3 +73,26 @@ /datum/round_event/vent_clog/catastrophic randomProbability = 30 reagentsAmount = 250 + +/datum/round_event_control/vent_clog/beer + name = "Foamy beer stationwide" + typepath = /datum/round_event/vent_clog/beer + max_occurrences = 0 + +/datum/round_event/vent_clog/beer + reagentsAmount = 100 + +/datum/round_event/vent_clog/beer/announce() + priority_announce("The scrubbers network is experiencing an unexpected surge of pressurized beer. Some ejection of contents may occur.", "Atmospherics alert") + +/datum/round_event/vent_clog/beer/start() + for(var/obj/machinery/atmospherics/components/unary/vent in vents) + if(vent && vent.loc) + var/datum/reagents/R = new/datum/reagents(1000) + R.my_atom = vent + R.add_reagent("beer", reagentsAmount) + + var/datum/effect_system/foam_spread/foam = new + foam.set_up(200, get_turf(vent), R) + foam.start() + CHECK_TICK diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm index 180589b4f1..a6e08fbd8c 100644 --- a/code/modules/events/wizard/curseditems.dm +++ b/code/modules/events/wizard/curseditems.dm @@ -50,7 +50,7 @@ var/obj/item/I = new J //dumb but required because of byond throwing a fit anytime new gets too close to a list H.dropItemToGround(H.get_item_by_slot(i), TRUE) H.equip_to_slot_or_del(I, i) - I.flags_1 |= NODROP_1 | DROPDEL_1 + I.item_flags |= NODROP | DROPDEL I.name = "cursed " + I.name for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index cabcc57f0c..d94ee0e212 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -16,7 +16,7 @@ GET_COMPONENT_FROM(STR, /datum/component/storage, S) if(prob(upgrade_scroll_chance) && S.contents.len < STR.max_items && !S.invisibility) var/obj/item/upgradescroll/scroll = new - S.SendSignal(COMSIG_TRY_STORAGE_INSERT, scroll, null, TRUE, TRUE) + SEND_SIGNAL(S, COMSIG_TRY_STORAGE_INSERT, scroll, null, TRUE, TRUE) upgrade_scroll_chance = max(0,upgrade_scroll_chance-100) upgrade_scroll_chance += 25 @@ -39,7 +39,7 @@ var/datum/rpg_loot/rpg_loot_datum = target.rpg_loot if(!istype(rpg_loot_datum)) - rpg_loot_datum = new /datum/rpg_loot(target) + target.rpg_loot = rpg_loot_datum = new /datum/rpg_loot(target) var/quality = rpg_loot_datum.quality @@ -77,7 +77,7 @@ attached = null /datum/rpg_loot/proc/randomise() - var/static/list/prefixespositive = list("greater", "major", "blessed", "superior", "enpowered", "honed", "true", "glorious", "robust") + var/static/list/prefixespositive = list("greater", "major", "blessed", "superior", "empowered", "honed", "true", "glorious", "robust") var/static/list/prefixesnegative = list("lesser", "minor", "blighted", "inferior", "enfeebled", "rusted", "unsteady", "tragic", "gimped") var/static/list/suffixes = list("orc slaying", "elf slaying", "corgi slaying", "strength", "dexterity", "constitution", "intelligence", "wisdom", "charisma", "the forest", "the hills", "the plains", "the sea", "the sun", "the moon", "the void", "the world", "the fool", "many secrets", "many tales", "many colors", "rending", "sundering", "the night", "the day") diff --git a/code/modules/fields/gravity.dm b/code/modules/fields/gravity.dm new file mode 100644 index 0000000000..8b16bb6487 --- /dev/null +++ b/code/modules/fields/gravity.dm @@ -0,0 +1,17 @@ +/datum/proximity_monitor/advanced/gravity + name = "modified gravity zone" + setup_field_turfs = TRUE + var/gravity_value = 0 + var/list/grav_components = list() + field_shape = FIELD_SHAPE_RADIUS_SQUARE + +/datum/proximity_monitor/advanced/gravity/setup_field_turf(turf/T) + . = ..() + grav_components[T] = T.AddComponent(/datum/component/forced_gravity,gravity_value) + +/datum/proximity_monitor/advanced/gravity/cleanup_field_turf(turf/T) + . = ..() + var/datum/component/forced_gravity/G = grav_components[T] + grav_components -= T + if(G) + qdel(G) \ No newline at end of file diff --git a/code/modules/fields/turf_objects.dm b/code/modules/fields/turf_objects.dm index 7d7454f46a..d37036d83c 100644 --- a/code/modules/fields/turf_objects.dm +++ b/code/modules/fields/turf_objects.dm @@ -6,7 +6,7 @@ icon_state = null alpha = 0 invisibility = INVISIBILITY_ABSTRACT - flags_1 = ABSTRACT_1|ON_BORDER_1 + flags_1 = ON_BORDER_1 mouse_opacity = MOUSE_OPACITY_TRANSPARENT var/datum/proximity_monitor/advanced/parent = null diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index e3c69f567e..165d2b4a3a 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -5,12 +5,20 @@ /mob/living/carbon/proc/dream() set waitfor = FALSE var/list/dream_fragments = list() + var/list/custom_dream_nouns = list() var/fragment = "" + for(var/obj/item/bedsheet/sheet in loc) + custom_dream_nouns += sheet.dream_messages + dream_fragments += "you see" //Subject - fragment += pick(GLOB.dream_strings) + if(custom_dream_nouns.len && prob(90)) + fragment += pick(custom_dream_nouns) + else + fragment += pick(GLOB.dream_strings) + if(prob(50)) fragment = replacetext(fragment, "%ADJECTIVE%", pick(GLOB.adjectives)) else diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 1ade5070a7..a21747837b 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -915,7 +915,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( /datum/hallucination/fake_alert/New(mob/living/carbon/C, forced = TRUE, specific, duration = 150) set waitfor = FALSE ..() - var/alert_type = pick("not_enough_oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","too_much_tox","newlaw","nutrition","charge","weightless","fire","locked","hacked","temphot","tempcold","pressure") + var/alert_type = pick("not_enough_oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","too_much_tox","newlaw","nutrition","charge","gravity","fire","locked","hacked","temphot","tempcold","pressure") if(specific) alert_type = specific feedback_details += "Type: [alert_type]" @@ -937,7 +937,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.throw_alert(alert_type, /obj/screen/alert/fat, override = TRUE) else target.throw_alert(alert_type, /obj/screen/alert/starving, override = TRUE) - if("weightless") + if("gravity") target.throw_alert(alert_type, /obj/screen/alert/weightless, override = TRUE) if("fire") target.throw_alert(alert_type, /obj/screen/alert/fire, override = TRUE) diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 7a0a8f5f5a..d84deb8132 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -35,7 +35,7 @@ return 0 if(M == user) - to_chat(M, "You swallow a gulp of [src].") + user.visible_message("[user] swallows a gulp of [src].", "You swallow a gulp of [src].") if(M.has_trait(TRAIT_VORACIOUS)) M.changeNext_move(CLICK_CD_MELEE * 0.5) //chug! chug! chug! @@ -59,7 +59,7 @@ if(!proximity) return - if(target.is_refillable()) //Something like a glass. Player probably wants to transfer TO it. + if(target.is_refillable() && is_drainable()) //Something like a glass. Player probably wants to transfer TO it. if(!reagents.total_volume) to_chat(user, "[src] is empty.") return @@ -250,6 +250,11 @@ list_reagents = list("beer" = 30) foodtype = GRAIN | ALCOHOL +/obj/item/reagent_containers/food/drinks/beer/light + name = "Carp Lite" + desc = "Brewed with \"Pure Ice Asteroid Spring Water\"." + list_reagents = list("light_beer" = 30) + /obj/item/reagent_containers/food/drinks/ale name = "Magm-Ale" desc = "A true dorf's drink of choice." diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 9c1cb5c848..f35bd6f937 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -51,6 +51,9 @@ if(user.a_intent != INTENT_HARM || !isGlass) return ..() + if(user.has_trait(TRAIT_PACIFISM)) + to_chat(user, "You don't want to harm [target]!") + return force = 15 //Smashing bottles over someoen's head hurts. @@ -320,7 +323,7 @@ desc = "A bottle of pure Fernet Bronca, produced in Cordoba Space Station" icon_state = "fernetbottle" list_reagents = list("fernet" = 100) - + //////////////////////////JUICES AND STUFF /////////////////////// /obj/item/reagent_containers/food/drinks/bottle/orangejuice @@ -422,12 +425,10 @@ /obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params) if(I.is_hot() && !active) active = 1 - var/turf/bombturf = get_turf(src) - var/area/bombarea = get_area(bombturf) - var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)]." + var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_VERBOSEJMP(user)]." GLOB.bombers += message message_admins(message) - log_game("[key_name(user)] has primed a [name] for detonation at [bombarea] [COORD(bombturf)].") + log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(user)].") to_chat(user, "You light [src] on fire.") add_overlay(GLOB.fire_overlay) diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index a91d5a6a7b..faafcdf776 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -16,8 +16,9 @@ cut_overlays() if(reagents.reagent_list.len) var/datum/reagent/R = reagents.get_master_reagent() - name = R.glass_name - desc = R.glass_desc + if(!renamedByPlayer) + name = R.glass_name + desc = R.glass_desc if(R.glass_icon_state) icon_state = R.glass_icon_state else @@ -26,8 +27,7 @@ add_overlay(reagent_overlay) else icon_state = "glass_empty" - name = "drinking glass" - desc = "Your standard drinking glass." + renamedByPlayer = FALSE //so new drinks can rename the glass //Shot glasses!// // This lets us add shots in here instead of lumping them in with drinks because >logic // diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm index 375ce80f96..f9d9a3d85a 100644 --- a/code/modules/food_and_drinks/food.dm +++ b/code/modules/food_and_drinks/food.dm @@ -23,15 +23,15 @@ if(foodtype & H.dna.species.toxic_food) to_chat(H,"What the hell was that thing?!") H.adjust_disgust(25 + 30 * fraction) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "toxic_food", /datum/mood_event/disgusting_food) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "toxic_food", /datum/mood_event/disgusting_food) else if(foodtype & H.dna.species.disliked_food) to_chat(H,"That didn't taste very good...") H.adjust_disgust(11 + 15 * fraction) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "gross_food", /datum/mood_event/gross_food) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "gross_food", /datum/mood_event/gross_food) else if(foodtype & H.dna.species.liked_food) to_chat(H,"I love this taste!") H.adjust_disgust(-5 + -2.5 * fraction) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "fav_food", /datum/mood_event/favorite_food) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "fav_food", /datum/mood_event/favorite_food) else if(foodtype & H.dna.species.toxic_food) to_chat(H, "You don't feel so good...") diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index f5ce5bf782..53a0c2fb5b 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -41,7 +41,7 @@ return 0 if(M == user) - to_chat(M, "You swallow some of contents of \the [src].") + user.visible_message("[user] swallows some of contents of \the [src].", "You swallow some of contents of \the [src].") else user.visible_message("[user] attempts to feed [M] from [src].") if(!do_mob(user, M)) diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 3df4ca4bd0..e98aae37e3 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -118,8 +118,8 @@ if(INGREDIENTS_STACKPLUSTOP) filling.pixel_x = rand(-1,1) filling.pixel_y = 2 * ingredients.len - 1 - if(our_overlays) - our_overlays.Cut(ingredients.len) //???, add overlay calls later in this proc will queue the compile if necessary + if(overlays) + overlays -= overlays[ingredients.len] var/mutable_appearance/TOP = mutable_appearance(icon, "[icon_state]_top") TOP.pixel_y = 2 * ingredients.len + 3 add_overlay(filling) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 7ac53294bc..a74c7c6f69 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -72,15 +72,15 @@ to_chat(M, "You don't feel like eating any more junk food at the moment.") return 0 else if(fullness <= 50) - to_chat(M, "You hungrily [eatverb] some of \the [src] and gobble it down!") + user.visible_message("[user] hungrily takes a [eatverb] from \the [src], gobbling it down!", "You hungrily take a [eatverb] from \the [src], gobbling it down!") else if(fullness > 50 && fullness < 150) - to_chat(M, "You hungrily begin to [eatverb] \the [src].") + user.visible_message("[user] hungrily takes a [eatverb] from \the [src].", "You hungrily take a [eatverb] from \the [src].") else if(fullness > 150 && fullness < 500) - to_chat(M, "You [eatverb] \the [src].") + user.visible_message("[user] takes a [eatverb] from \the [src].", "You take a [eatverb] from \the [src].") else if(fullness > 500 && fullness < 600) - to_chat(M, "You unwillingly [eatverb] a bit of \the [src].") + user.visible_message("[user] unwillingly takes a [eatverb] of a bit of \the [src].", "You unwillingly take a [eatverb] of a bit of \the [src].") else if(fullness > (600 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat - to_chat(M, "You cannot force any more of \the [src] to go down your throat!") + user.visible_message("[user] cannot force any more of \the [src] to go down [user.p_their()] throat!", "You cannot force any more of \the [src] to go down your throat!") return 0 if(M.has_trait(TRAIT_VORACIOUS)) M.changeNext_move(CLICK_CD_MELEE * 0.5) //nom nom nom @@ -109,7 +109,7 @@ M.satiety -= junkiness playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1) if(reagents.total_volume) - SendSignal(COMSIG_FOOD_EATEN, M, user) + SEND_SIGNAL(src, COMSIG_FOOD_EATEN, M, user) var/fraction = min(bitesize / reagents.total_volume, 1) reagents.reaction(M, INGEST, fraction) reagents.trans_to(M, bitesize) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 8affd79e52..bd1dbc4f8e 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -189,7 +189,7 @@ var/mob/living/carbon/monkey/bananas = new(drop_location(), TRUE, spammer) if (!QDELETED(bananas)) visible_message("[src] expands!") - bananas.log_message("Spawned via [src] at [COORD(src)], Last attached mob: [key_name(spammer)].", INDIVIDUAL_ATTACK_LOG) + bananas.log_message("Spawned via [src] at [AREACOORD(src)], Last attached mob: [key_name(spammer)].", INDIVIDUAL_ATTACK_LOG) else if (!spammer) // Visible message in case there are no fingerprints visible_message("[src] fails to expand!") qdel(src) diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index 01105cf6d3..80aa588bae 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -406,8 +406,8 @@ name = "stack of pancakes" else name = initial(name) - if(contents.len < LAZYLEN(our_overlays)) - cut_overlay(our_overlays[our_overlays.len]) + if(contents.len < LAZYLEN(overlays)) + overlays-=overlays[overlays.len] /obj/item/reagent_containers/food/snacks/pancakes/examine(mob/user) var/ingredients_listed = "" diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 5efcb98faf..04177783e6 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -56,7 +56,7 @@ if(!H.creamed) // one layer at a time H.add_overlay(creamoverlay) H.creamed = TRUE - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "creampie", /datum/mood_event/creampie) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "creampie", /datum/mood_event/creampie) qdel(src) /obj/item/reagent_containers/food/snacks/pie/cream/nostun diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 36beaf711e..5e7a3db504 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -26,7 +26,6 @@ God bless America. icon = 'icons/obj/kitchen.dmi' icon_state = "fryer_off" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 container_type = OPENCONTAINER @@ -96,7 +95,7 @@ God bless America. else if(default_deconstruction_screwdriver(user, "fryer_off", "fryer_off" ,I)) //where's the open maint panel icon?! return else - if(is_type_in_typecache(I, deepfry_blacklisted_items) || (I.flags_1 & (ABSTRACT_1 | NODROP_1 | DROPDEL_1))) + if(is_type_in_typecache(I, deepfry_blacklisted_items) || (I.item_flags & (ABSTRACT | NODROP | DROPDEL))) return ..() else if(!frying && user.transferItemToLoc(I, src)) to_chat(user, "You put [I] into [src].") diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 42da7e226b..b1da39daf3 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -92,7 +92,7 @@ to_chat(user, "[src] is at full capacity.") break else - if(T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src)) + if(SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src)) if(stored_food[sanitize(S.name)]) stored_food[sanitize(S.name)]++ else diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 784cf22ccd..e6734b4b58 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "grinder" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 500 @@ -79,7 +78,7 @@ if(!ignore_clothing) for(var/obj/item/I in C.held_items + C.get_equipped_items()) - if(!(I.flags_1 & NODROP_1)) + if(!(I.item_flags & NODROP)) to_chat(user, "Subject may not have abiotic items on.") return diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 7363f262b4..8c4e0eaae0 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -5,7 +5,6 @@ icon_state = "mw" layer = BELOW_OBJ_LAYER density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 @@ -130,7 +129,7 @@ if (contents.len>=max_n_of_items) to_chat(user, "[src] is full, you can't put anything in!") return 1 - if(T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src)) + if(SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src)) loaded++ if(loaded) diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index 397f5c7a6d..c25cb2288f 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -5,7 +5,6 @@ icon_state = "grinder" layer = BELOW_OBJ_LAYER density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 50 diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 91a73eecec..3f917273b4 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -6,7 +6,6 @@ icon_state = "processor1" layer = BELOW_OBJ_LAYER density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 50 @@ -61,7 +60,7 @@ for(var/obj/item/reagent_containers/food/snacks/S in T.contents) var/datum/food_processor_process/P = select_recipe(S) if(P) - if(T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src)) + if(SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src)) loaded++ if(loaded) @@ -107,7 +106,7 @@ for(var/O in src.contents) var/datum/food_processor_process/P = select_recipe(O) if (!P) - log_admin("DEBUG: [O] in processor hasnt got a suitable recipe. How did it get in there? Please report it immediatly!!!") + log_admin("DEBUG: [O] in processor doesn't have a suitable recipe. How did it get in there? Please report it immediately!!!") continue total_time += P.time var/offset = prob(50) ? -2 : 2 @@ -116,7 +115,7 @@ for(var/atom/movable/O in src.contents) var/datum/food_processor_process/P = select_recipe(O) if (!P) - log_admin("DEBUG: [O] in processor havent suitable recipe. How do you put it in?") + log_admin("DEBUG: [O] in processor doesn't have a suitable recipe. How do you put it in?") continue process_food(P, O) pixel_x = initial(pixel_x) //return to its spot after shaking diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index a7b83abfae..79202e8190 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -8,7 +8,6 @@ icon_state = "smartfridge" layer = BELOW_OBJ_LAYER density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 @@ -126,8 +125,8 @@ else return TRUE else - if(O.loc.SendSignal(COMSIG_CONTAINS_STORAGE)) - return O.loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, O, src) + if(SEND_SIGNAL(O.loc, COMSIG_CONTAINS_STORAGE)) + return SEND_SIGNAL(O.loc, COMSIG_TRY_STORAGE_TAKE, O, src) else O.forceMove(src) return TRUE @@ -314,7 +313,9 @@ return FALSE /obj/machinery/smartfridge/drying_rack/emp_act(severity) - ..() + . = ..() + if(. & EMP_PROTECT_SELF) + return atmos_spawn_air("TEMP=1000") @@ -326,7 +327,7 @@ desc = "A refrigerated storage unit for tasty tasty alcohol." /obj/machinery/smartfridge/drinks/accept_check(obj/item/O) - if(!istype(O, /obj/item/reagent_containers) || (O.flags_1 & ABSTRACT_1) || !O.reagents || !O.reagents.reagent_list.len) + if(!istype(O, /obj/item/reagent_containers) || (O.item_flags & ABSTRACT) || !O.reagents || !O.reagents.reagent_list.len) return FALSE if(istype(O, /obj/item/reagent_containers/glass) || istype(O, /obj/item/reagent_containers/food/drinks) || istype(O, /obj/item/reagent_containers/food/condiment)) return TRUE @@ -374,7 +375,7 @@ return FALSE return TRUE return FALSE - if(!istype(O, /obj/item/reagent_containers) || (O.flags_1 & ABSTRACT_1)) + if(!istype(O, /obj/item/reagent_containers) || (O.item_flags & ABSTRACT)) return FALSE if(istype(O, /obj/item/reagent_containers/pill)) // empty pill prank ok return TRUE @@ -414,6 +415,7 @@ /obj/machinery/smartfridge/disks name = "disk compartmentalizer" desc = "A machine capable of storing a variety of disks. Denoted by most as the DSU (disk storage unit)." + icon_state = "disktoaster" /obj/machinery/smartfridge/disks/accept_check(obj/item/O) if(istype(O, /obj/item/disk/)) diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 3141a9340a..3592f5a437 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -633,6 +633,13 @@ required_catalysts = list("enzyme" = 5) mix_message = "The rice grains ferment into a clear, sweet-smelling liquid." +/datum/chemical_reaction/peppermint_patty + name = "Peppermint Patty" + id = "peppermint_patty" + results = list("peppermint_patty" = 10) + required_reagents = list("hot_coco" = 6, "creme_de_cacao" = 1, "creme_de_menthe" = 1, "vodka" = 1, "menthol" = 1) + mix_message = "The coco turns mint green just as the strong scent hits your nose." + /datum/chemical_reaction/alexander name = "Alexander" id = "alexander" diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm index be06f99d61..55d5a806bd 100644 --- a/code/modules/goonchat/browserOutput.dm +++ b/code/modules/goonchat/browserOutput.dm @@ -97,7 +97,8 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic for(var/message in messageQueue) - to_chat(owner, message) + // whitespace has already been handled by the original to_chat + to_chat(owner, message, handle_whitespace=FALSE) messageQueue = null sendClientData() @@ -175,7 +176,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic //Global chat procs -/proc/to_chat(target, message) +/proc/to_chat(target, message, handle_whitespace=TRUE) if(!target) return @@ -201,12 +202,24 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic //Some macros remain in the string even after parsing and fuck up the eventual output message = replacetext(message, "\improper", "") message = replacetext(message, "\proper", "") - message = replacetext(message, "\n", "
    ") - message = replacetext(message, "\t", "[GLOB.TAB][GLOB.TAB]") + if(handle_whitespace) + message = replacetext(message, "\n", "
    ") + message = replacetext(message, "\t", "[GLOB.TAB][GLOB.TAB]") for(var/I in targets) //Grab us a client if possible - var/client/C = grab_client(I) + var/client/C + if (ismob(I)) + var/mob/M = I + if(M.client) + C = M.client + else if(istype(I, /client)) + C = I + else if(istype(I, /datum/mind)) + var/datum/mind/M = I + if(M.current && M.current.client) + C = M.current.client + if (!C) continue @@ -224,15 +237,3 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic // url_encode it TWICE, this way any UTF-8 characters are able to be decoded by the Javascript. C << output(url_encode(url_encode(message)), "browseroutput:output") - -/proc/grab_client(target) - if(istype(target, /client)) - return target - else if(ismob(target)) - var/mob/M = target - if(M.client) - return M.client - else if(istype(target, /datum/mind)) - var/datum/mind/M = target - if(M.current && M.current.client) - return M.current.client diff --git a/code/modules/goonchat/browserassets/js/browserOutput.js b/code/modules/goonchat/browserassets/js/browserOutput.js index 478ddcccdd..15265b2a93 100644 --- a/code/modules/goonchat/browserassets/js/browserOutput.js +++ b/code/modules/goonchat/browserassets/js/browserOutput.js @@ -95,8 +95,53 @@ if (typeof String.prototype.trim !== 'function') { }; } +// Linkify the contents of a node, within its parent. +function linkify(parent, insertBefore, text) { + var start = 0; + var match; + var regex = /(?:(?:https?:\/\/)|(?:www\.))(?:[^ ]*?\.[^ ]*?)+[-A-Za-z0-9+&@#\/%?=~_|$!:,.;()]+/ig; + while ((match = regex.exec(text)) !== null) { + // add the unmatched text + parent.insertBefore(document.createTextNode(text.substring(start, match.index)), insertBefore); + + var href = match[0]; + if (!/^https?:\/\//i.test(match[0])) { + href = "http://" + match[0]; + } + + // add the link + var link = document.createElement("a"); + link.href = href; + link.textContent = match[0]; + parent.insertBefore(link, insertBefore); + + start = regex.lastIndex; + } + if (start !== 0) { + // add the remaining text and remove the original text node + parent.insertBefore(document.createTextNode(text.substring(start)), insertBefore); + parent.removeChild(insertBefore); + } +} + +// Recursively linkify the children of a given node. +function linkify_node(node) { + var children = node.childNodes; + // work backwards to avoid the risk of looping forever on our own output + for (var i = children.length - 1; i >= 0; --i) { + var child = children[i]; + if (child.nodeType == Node.TEXT_NODE) { + // text is to be linkified + linkify(node, child, child.textContent); + } else if (child.nodeName != "A" && child.nodeName != "a") { + // do not linkify existing links + linkify_node(child); + } + } +} + //Shit fucking piece of crap that doesn't work god fuckin damn it -function linkify(text) { +function linkify_fallback(text) { var rex = /((?:', {'class': 'r', 'text': 2}); } - else - { - lastmessages.append($('', { 'class': 'r', 'text': 2})); - } - var insertedBadge = $(lastmessages).find('.r'); - insertedBadge.animate({ + lastmessages.html(message); + lastmessages.append(badge); + badge.animate({ "font-size": "0.9em" }, 100, function() { - insertedBadge.animate({ + badge.animate({ "font-size": "0.7em" }, 100); }); @@ -325,10 +368,8 @@ function output(message, flag) { } } - if(!handled) - { + if (!handled) { //Actually append the message - var entry = document.createElement('div'); entry.className = 'entry'; if (filteredOut) { @@ -337,9 +378,22 @@ function output(message, flag) { } $last_message = trimmed_message; - entry.innerHTML = trimmed_message; $messages[0].appendChild(entry); $(entry).find("img.icon").error(iconError); + + var to_linkify = $(entry).find(".linkify"); + if (typeof Node === 'undefined') { + // Linkify fallback for old IE + for(var i = 0; i < to_linkify.length; ++i) { + to_linkify[i].innerHTML = linkify_fallback(to_linkify[i].innerHTML); + } + } else { + // Linkify for modern IE versions + for(var i = 0; i < to_linkify.length; ++i) { + linkify_node(to_linkify[i]); + } + } + //Actually do the snap //Stuff we can do after the message shows can go here, in the interests of responsiveness if (opts.highlightTerms && opts.highlightTerms.length > 0) { @@ -892,23 +946,26 @@ $(function() { }); $('#saveLog').click(function(e) { + // Requires IE 10+ to issue download commands. Just opening a popup + // window will cause Ctrl+S to save a blank page, ignoring innerHTML. + if (!window.Blob) { + output('This function is only supported on IE 10+. Upgrade if possible.', 'internal'); + return; + } + $.ajax({ type: 'GET', url: 'browserOutput.css', success: function(styleData) { - var win; + var blob = new Blob(['Chat Log', $messages.html(), '']); - try { - win = window.open('', 'Chat Log', 'toolbar=no, location=no, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=yes, width=780, height=600, top=' + (screen.height/2 - 635/2) + ', left=' + (screen.width/2 - 780/2)); - } catch (e) { - return; - } + var fname = 'SS13 Chat Log'; + var date = new Date(), month = date.getMonth(), day = date.getDay(), hours = date.getHours(), mins = date.getMinutes(), secs = date.getSeconds(); + fname += ' ' + date.getFullYear() + '-' + (month < 10 ? '0' : '') + month + '-' + (day < 10 ? '0' : '') + day; + fname += ' ' + (hours < 10 ? '0' : '') + hours + (mins < 10 ? '0' : '') + mins + (secs < 10 ? '0' : '') + secs; + fname += '.html'; - if (win) { - win.document.head.innerHTML = 'Chat Log'; - win.document.head.innerHTML += ''; - win.document.body.innerHTML = $messages.html(); - } + window.navigator.msSaveBlob(blob, fname); } }); }); diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 6cc3f56461..829cb55312 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -147,7 +147,7 @@ desc = "The Cross represents the Assistants that died for your sins." icon_state = "hotcrossbun" -/datum/crafting_recipe/food/food/hotcrossbun +/datum/crafting_recipe/food/hotcrossbun name = "Hot-Cross Bun" reqs = list( /obj/item/reagent_containers/food/snacks/store/bread/plain = 1, @@ -171,7 +171,7 @@ icon_state = "briochecake_slice" filling_color = "#FFD700" -/datum/crafting_recipe/food/food/briochecake +/datum/crafting_recipe/food/briochecake name = "Brioche cake" reqs = list( /obj/item/reagent_containers/food/snacks/store/cake/plain = 1, diff --git a/code/modules/holodeck/area_copy.dm b/code/modules/holodeck/area_copy.dm index 8edc7090e4..efe7418e44 100644 --- a/code/modules/holodeck/area_copy.dm +++ b/code/modules/holodeck/area_copy.dm @@ -1,5 +1,8 @@ //Vars that will not be copied when using /DuplicateObject -GLOBAL_LIST_INIT(duplicate_forbidden_vars,list("tag", "datum_components", "area","type","loc","locs","vars", "parent","parent_type", "verbs","ckey","key","power_supply","contents","reagents","stat","x","y","z","group","atmos_adjacent_turfs")) +GLOBAL_LIST_INIT(duplicate_forbidden_vars,list( + "tag", "datum_components", "area", "type", "loc", "locs", "vars", "parent", "parent_type", "verbs", "ckey", "key", + "power_supply", "contents", "reagents", "stat", "x", "y", "z", "group", "atmos_adjacent_turfs", "comp_lookup" + )) /proc/DuplicateObject(atom/original, perfectcopy = TRUE, sameloc = FALSE, atom/newloc = null, nerf = FALSE, holoitem=FALSE) if(!original) diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index a55a5e1657..4590d58174 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -136,7 +136,7 @@ if(prob(30)) do_sparks(2, 1, T) T.ex_act(EXPLODE_LIGHT) - T.hotspot_expose(1000,500,1) + T.hotspot_expose(700,25,1) if(!(obj_flags & EMAGGED)) for(var/item in spawned) @@ -162,8 +162,10 @@ nerf(!(obj_flags & EMAGGED)) /obj/machinery/computer/holodeck/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return emergency_shutdown() - return ..() /obj/machinery/computer/holodeck/ex_act(severity, target) emergency_shutdown() diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index c83e7d5520..4134b0516f 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -100,6 +100,11 @@ /obj/effect/holodeck_effect/mobspawner/penguin mobtype = /mob/living/simple_animal/pet/penguin/emperor + +/obj/effect/holodeck_effect/mobspawner/penguin/Initialize() + if(prob(1)) + mobtype = /mob/living/simple_animal/pet/penguin/emperor/shamebrero + return ..() /obj/effect/holodeck_effect/mobspawner/penguin_baby mobtype = /mob/living/simple_animal/pet/penguin/baby diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index d967eebd59..5c143f7a25 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -150,7 +150,6 @@ var/area/currentarea = null var/eventstarted = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 6 diff --git a/code/modules/holodeck/turfs.dm b/code/modules/holodeck/turfs.dm index 878026f843..c2c17417fd 100644 --- a/code/modules/holodeck/turfs.dm +++ b/code/modules/holodeck/turfs.dm @@ -30,16 +30,19 @@ bullet_bounce_sound = null /turf/open/floor/holofloor/beach + gender = PLURAL name = "sand" icon = 'icons/misc/beach.dmi' icon_state = "sand" bullet_bounce_sound = null /turf/open/floor/holofloor/beach/coast_t + gender = NEUTER name = "coastline" icon_state = "sandwater_t" /turf/open/floor/holofloor/beach/coast_b + gender = NEUTER name = "coastline" icon_state = "sandwater_b" @@ -57,6 +60,7 @@ . = ..() /turf/open/floor/holofloor/basalt + gender = PLURAL name = "basalt" icon_state = "basalt0" @@ -67,7 +71,7 @@ set_basalt_light(src) /turf/open/floor/holofloor/space - name = "Space" + name = "\proper space" icon = 'icons/turf/space.dmi' icon_state = "0" @@ -76,7 +80,7 @@ . = ..() /turf/open/floor/holofloor/hyperspace - name = "hyperspace" + name = "\proper hyperspace" icon = 'icons/turf/space.dmi' icon_state = "speedspace_ns_1" bullet_bounce_sound = null @@ -110,6 +114,7 @@ queue_smooth(src) /turf/open/floor/holofloor/snow + gender = PLURAL name = "snow" desc = "Looks cold." icon = 'icons/turf/snow.dmi' @@ -122,6 +127,7 @@ initial_gas_mix = "nob=7500;TEMP=2.7" /turf/open/floor/holofloor/asteroid + gender = PLURAL name = "asteroid sand" icon = 'icons/turf/floors.dmi' icon_state = "asteroid" diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index 5a35597a34..e26dab07b4 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -18,7 +18,7 @@ /mob/living/carbon/human/bee_friendly() if(dna && dna.species && dna.species.id == "pod") //bees pollinate plants, duh. return 1 - if (wear_suit && head && is_type_in_typecache(wear_suit, GLOB.typecache_clothing) && is_type_in_typecache(wear_suit, GLOB.typecache_clothing)) + if (wear_suit && head && istype(wear_suit, /obj/item/clothing) && istype(head, /obj/item/clothing)) var/obj/item/clothing/CS = wear_suit var/obj/item/clothing/CH = head if (CS.clothing_flags & CH.clothing_flags & THICKMATERIAL) @@ -263,3 +263,6 @@ if(HF.loc == src) HF.forceMove(drop_location()) qdel(src) + +/obj/structure/beebox/unwrenched + anchored = FALSE diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 6da117da88..e1eb976966 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/machines/biogenerator.dmi' icon_state = "biogen-empty" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 40 circuit = /obj/item/circuitboard/machine/biogenerator @@ -16,7 +15,7 @@ var/productivity = 0 var/max_items = 40 var/datum/techweb/stored_research - var/list/show_categories = list("Food", "Botany Chemicals", "Leather and Cloth") + var/list/show_categories = list("Food", "Botany Chemicals", "Organic Materials") var/list/timesFiveCategories = list("Food", "Botany Chemicals") /obj/machinery/biogenerator/Initialize() @@ -113,7 +112,7 @@ for(var/obj/item/reagent_containers/food/snacks/grown/G in PB.contents) if(i >= max_items) break - if(PB.SendSignal(COMSIG_TRY_STORAGE_TAKE, G, src)) + if(SEND_SIGNAL(PB, COMSIG_TRY_STORAGE_TAKE, G, src)) i++ if(iYou empty the plant bag into the biogenerator.") diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index f0c7bba885..7e541f2471 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "dnamod" density = TRUE - anchored = TRUE circuit = /obj/item/circuitboard/machine/plantgenes var/obj/item/seeds/seed @@ -428,7 +427,7 @@ /obj/item/disk/plantgene/proc/update_name() if(gene) - name = "[gene.get_name()] (Plant Data Disk)" + name = "[gene.get_name()] (plant data disk)" else name = "plant data disk" @@ -438,4 +437,6 @@ /obj/item/disk/plantgene/examine(mob/user) ..() + if(gene && (istype(gene, /datum/plant_gene/core/potency))) + to_chat(user,"Percent is relative to potency, not maximum volume of the plant.") to_chat(user, "The write-protect tab is set to [src.read_only ? "protected" : "unprotected"].") diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 38f8a40ec3..30b4865a9d 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -111,12 +111,11 @@ foodtype = FRUIT /obj/item/reagent_containers/food/snacks/grown/firelemon/attack_self(mob/living/user) - var/area/A = get_area(user) user.visible_message("[user] primes [src]!", "You prime [src]!") - var/message = "[ADMIN_LOOKUPFLW(user)] primed a combustible lemon for detonation at [A] [ADMIN_COORDJMP(user)]" + var/message = "[ADMIN_LOOKUPFLW(user)] primed a combustible lemon for detonation at [ADMIN_VERBOSEJMP(user)]" GLOB.bombers += message message_admins(message) - log_game("[key_name(user)] primed a combustible lemon for detonation at [A] [COORD(user)].") + log_game("[key_name(user)] primed a combustible lemon for detonation at [AREACOORD(user)].") if(iscarbon(user)) var/mob/living/carbon/C = user C.throw_mode_on() diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 8455df887e..62c3c0b064 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -195,8 +195,8 @@ to_chat(M, "You are lit on fire from the intense heat of the [name]!") M.adjust_fire_stacks(seed.potency / 20) if(M.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire") - log_game("[key_name(user)] set [key_name(M)] on fire") + message_admins("[ADMIN_LOOKUPFLW(user)] set [ADMIN_LOOKUPFLW(M)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]") /obj/item/grown/novaflower/afterattack(atom/A as mob|obj, mob/user,proximity) if(!proximity) diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm index 8e55f8a15d..af466f5186 100644 --- a/code/modules/hydroponics/grown/grass_carpet.dm +++ b/code/modules/hydroponics/grown/grass_carpet.dm @@ -16,7 +16,7 @@ icon_dead = "grass-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/grass/carpet) - reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05) + reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05, "oxygen" = 0.03) //CITADEL CHANGE - adds 0.03 oxygen to grass /obj/item/reagent_containers/food/snacks/grown/grass seed = /obj/item/seeds/grass diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index c35281088d..e9dec09799 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -36,8 +36,8 @@ to_chat(user, "There is too much kudzu here to plant [src].") return FALSE to_chat(user, "You plant [src].") - message_admins("Kudzu planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(user)]",0,1) - investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY) + message_admins("Kudzu planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(user)]") + investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY) new /datum/spacevine_controller(get_turf(user), mutations, potency, production) qdel(src) diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 5a7c8c93cf..82ff56e7c9 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -136,10 +136,9 @@ max_integrity = 40 /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/attack_self(mob/living/user) - var/area/A = get_area(user) user.visible_message("[user] plucks the stem from [src]!", "You pluck the stem from [src], which begins to hiss loudly!") - message_admins("[ADMIN_LOOKUPFLW(user)] primed a cherry bomb for detonation at [A] [ADMIN_COORDJMP(user)]") - log_game("[key_name(user)] primed a cherry bomb for detonation at [A] [COORD(user)].") + message_admins("[ADMIN_LOOKUPFLW(user)] primed a cherry bomb for detonation at [ADMIN_VERBOSEJMP(user)]") + log_game("[key_name(user)] primed a cherry bomb for detonation at [AREACOORD(user)].") prime() /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/deconstruct(disassembled = TRUE) diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 352d4eff7b..fddcb5b1fc 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -258,8 +258,7 @@ desc = "This mycelium -powers- into mushrooms!" icon_state = "mycelium-glowcap" species = "glowcap" - icon_grow = "glowshroom-grow" - icon_dead = "glowshroom-dead" + icon_harvest = "glowcap-harvest" plantname = "Glowcaps" product = /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap genes = list(/datum/plant_gene/trait/glow/red, /datum/plant_gene/trait/cell_charge, /datum/plant_gene/trait/plant_type/fungal_metabolism) @@ -303,7 +302,7 @@ /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom/attack_self(mob/user) . = ..() if(.) - investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY) + investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY) //// LAVALAND MUSHROOMS //// diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 89206342b1..6f5a1a0ee4 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -146,7 +146,7 @@ if(W.is_hot()) StartBurning() if(grill) - if(user.a_intent != INTENT_HARM && !(W.flags_1 & ABSTRACT_1)) + if(user.a_intent != INTENT_HARM && !(W.item_flags & ABSTRACT)) if(user.temporarilyRemoveItemFromInventory(W)) W.forceMove(get_turf(src)) var/list/click_params = params2list(params) @@ -203,7 +203,7 @@ /obj/structure/bonfire/proc/Burn() var/turf/current_location = get_turf(src) - current_location.hotspot_expose(1000,500,1) + current_location.hotspot_expose(1000,100,1) for(var/A in current_location) if(A == src) continue diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index fb6915aef9..f464fccf91 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -3,7 +3,6 @@ icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "hydrotray" density = TRUE - anchored = TRUE pixel_z = 8 obj_flags = CAN_BE_HIT | UNIQUE_RENAME circuit = /obj/item/circuitboard/machine/hydroponics @@ -46,8 +45,6 @@ rating = M.rating maxwater = tmp_capacity * 50 // Up to 300 maxnutri = tmp_capacity * 5 // Up to 30 - waterlevel = maxwater - nutrilevel = 3 /obj/machinery/hydroponics/Destroy() if(myseed) @@ -742,7 +739,7 @@ else if(istype(O, /obj/item/seeds) && !istype(O, /obj/item/seeds/sample)) if(!myseed) if(istype(O, /obj/item/seeds/kudzu)) - investigate_log("had Kudzu planted in it by [user.ckey]([user]) at ([x],[y],[z])","kudzu") + investigate_log("had Kudzu planted in it by [key_name(user)] at [AREACOORD(src)]","kudzu") if(!user.transferItemToLoc(O, src)) return to_chat(user, "You plant [O].") @@ -782,7 +779,7 @@ else if(istype(O, /obj/item/storage/bag/plants)) attack_hand(user) for(var/obj/item/reagent_containers/food/snacks/grown/G in locate(user.x,user.y,user.z)) - O.SendSignal(COMSIG_TRY_STORAGE_INSERT, G, user, TRUE) + SEND_SIGNAL(O, COMSIG_TRY_STORAGE_INSERT, G, user, TRUE) else if(default_unfasten_wrench(user, O)) return diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 3d0ffdfd53..ffa9e2e21d 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -45,7 +45,6 @@ icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "sextractor" density = TRUE - anchored = TRUE circuit = /obj/item/circuitboard/machine/seed_extractor var/piles = list() var/max_seeds = 1000 diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 4ba1aa0c33..2a28b7b097 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -9,7 +9,7 @@ resistance_flags = FLAMMABLE var/plantname = "Plants" // Name of plant when planted. var/product // A type path. The thing that is created when the plant is harvested. - var/species = "" // Used to update icons. Should match the name in the sprites unless all icon_* are overriden. + var/species = "" // Used to update icons. Should match the name in the sprites unless all icon_* are overridden. var/growing_icon = 'icons/obj/hydroponics/growing.dmi' //the file that stores the sprites of the growing plant from this seed. var/icon_grow // Used to override grow icon (default is "[species]-grow"). You can use one grow icon for multiple closely related plants with it. diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 72c34b90cc..d39163b547 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -8,12 +8,14 @@ w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/assemblies/electronic_setups.dmi' icon_state = "setup_small" - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON materials = list() // To be filled later + datum_flags = DF_USE_TAG var/list/assembly_components = list() + var/list/ckeys_allowed_to_scan = list() // Players who built the circuit can scan it as a ghost. var/max_components = IC_MAX_SIZE_BASE var/max_complexity = IC_COMPLEXITY_BASE - var/opened = FALSE + var/opened = TRUE var/obj/item/stock_parts/cell/battery // Internal cell which most circuits need to work. var/cell_type = /obj/item/stock_parts/cell var/can_charge = TRUE //Can it be charged in a recharger? @@ -29,6 +31,8 @@ var/combat_circuits = 0 //number of combat cicuits in the assembly, used for diagnostic hud var/long_range_circuits = 0 //number of long range cicuits in the assembly, used for diagnostic hud var/prefered_hud_icon = "hudstat" // Used by the AR circuit to change the hud icon. + var/creator // circuit creator if any + var/static/next_assembly_id = 0 hud_possible = list(DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_TRACK_HUD, DIAG_CIRCUIT_HUD) //diagnostic hud overlays max_integrity = 50 pass_flags = 0 @@ -55,12 +59,18 @@ COLOR_ASSEMBLY_PURPLE ) +/obj/item/electronic_assembly/GenerateTag() + tag = "assembly_[next_assembly_id++]" + /obj/item/electronic_assembly/examine(mob/user) . = ..() if(can_anchor) - to_chat(user, "The anchoring bolts [anchored ? "are" : "can be"] wrenched in place and the maintainence panel [opened ? "can be" : "is"] screwed in place.") + to_chat(user, "The anchoring bolts [anchored ? "are" : "can be"] wrenched in place and the maintenance panel [opened ? "can be" : "is"] screwed in place.") else - to_chat(user, "The maintainence panel [opened ? "can be" : "is"] screwed in place.") + to_chat(user, "The maintenance panel [opened ? "can be" : "is"] screwed in place.") + + if((isobserver(user) && ckeys_allowed_to_scan[user.ckey]) || IsAdminGhost(user)) + to_chat(user, "You can scan this circuit."); /obj/item/electronic_assembly/proc/check_interactivity(mob/user) return user.canUseTopic(src, BE_CLOSE) @@ -181,6 +191,18 @@ if(..()) return 1 + if(href_list["ghostscan"]) + if((isobserver(usr) && ckeys_allowed_to_scan[usr.ckey]) || IsAdminGhost(usr)) + if(assembly_components.len) + var/saved = "On circuit printers with cloning enabled, you may use the code below to clone the circuit:

    [SScircuit.save_electronic_assembly(src)]" + usr << browse(saved, "window=circuit_scan;size=500x600;border=1;can_resize=1;can_close=1;can_minimize=1") + else + to_chat(usr, "The circuit is empty!") + return + + if(!check_interactivity(usr)) + return + if(href_list["rename"]) rename(usr) @@ -201,6 +223,8 @@ if(!component.removable) return + add_allowed_scanner(usr.ckey) + var/current_pos = assembly_components.Find(component) // Find the position of a first removable component @@ -264,6 +288,9 @@ to_chat(M, "The machine now has a label reading '[input]'.") name = input +/obj/item/electronic_assembly/proc/add_allowed_scanner(ckey) + ckeys_allowed_to_scan[ckey] = TRUE + /obj/item/electronic_assembly/proc/can_move() return FALSE @@ -329,6 +356,8 @@ to_chat(user, "You slide [IC] inside [src].") playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) + add_allowed_scanner(user.ckey) + investigate_log("had [IC]([IC.type]) inserted by [key_name(user)].", INVESTIGATE_CIRCUIT) add_component(IC) return TRUE @@ -367,6 +396,8 @@ to_chat(user, "You pop \the [IC] out of the case, and slide it out.") playsound(src, 'sound/items/crowbar.ogg', 50, 1) user.put_in_hands(IC) + add_allowed_scanner(user.ckey) + investigate_log("had [IC]([IC.type]) removed by [key_name(user)].", INVESTIGATE_CIRCUIT) return TRUE @@ -450,7 +481,8 @@ else for(var/obj/item/integrated_circuit/input/S in assembly_components) S.attackby_react(I,user,user.a_intent) - return ..() + if(user.a_intent != INTENT_HELP) + return ..() /obj/item/electronic_assembly/attack_self(mob/user) @@ -489,9 +521,11 @@ choice.ask_for_input(user) /obj/item/electronic_assembly/emp_act(severity) - ..() - for(var/i in 1 to contents.len) - var/atom/movable/AM = contents[i] + . = ..() + if(. & EMP_PROTECT_CONTENTS) + return + for(var/I in src) + var/atom/movable/AM = I AM.emp_act(severity) // Returns true if power was successfully drawn. @@ -742,4 +776,4 @@ if(EAST) pixel_x = -31 if(WEST) - pixel_x = 31 \ No newline at end of file + pixel_x = 31 diff --git a/code/modules/integrated_electronics/core/debugger.dm b/code/modules/integrated_electronics/core/debugger.dm index 6abaf316da..d6f6a551ad 100644 --- a/code/modules/integrated_electronics/core/debugger.dm +++ b/code/modules/integrated_electronics/core/debugger.dm @@ -4,7 +4,8 @@ settings to specific circuits, or for debugging purposes. It can also pulse activation pins." icon = 'icons/obj/assemblies/electronic_tools.dmi' icon_state = "debugger" - flags_1 = CONDUCT_1 | NOBLUDGEON_1 + flags_1 = CONDUCT_1 + item_flags = NOBLUDGEON w_class = WEIGHT_CLASS_SMALL var/data_to_write = null var/accepting_refs = FALSE diff --git a/code/modules/integrated_electronics/core/detailer.dm b/code/modules/integrated_electronics/core/detailer.dm index 9a718df73e..33f7ef96ad 100644 --- a/code/modules/integrated_electronics/core/detailer.dm +++ b/code/modules/integrated_electronics/core/detailer.dm @@ -3,7 +3,8 @@ desc = "A combination autopainter and flash anodizer designed to give electronic assemblies a colorful, wear-resistant finish." icon = 'icons/obj/assemblies/electronic_tools.dmi' icon_state = "detailer" - flags_1 = CONDUCT_1 | NOBLUDGEON_1 + flags_1 = CONDUCT_1 + item_flags = NOBLUDGEON w_class = WEIGHT_CLASS_SMALL var/data_to_write = null var/accepting_refs = FALSE @@ -44,4 +45,4 @@ if(!in_range(src, user)) return detail_color = color_list[color_choice] - update_icon() \ No newline at end of file + update_icon() diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm index 60fe6fd9cd..57ad917246 100644 --- a/code/modules/integrated_electronics/core/integrated_circuit.dm +++ b/code/modules/integrated_electronics/core/integrated_circuit.dm @@ -24,7 +24,7 @@ var/category_text = "NO CATEGORY THIS IS A BUG" // To show up on circuit printer, and perhaps other places. var/removable = TRUE // Determines if a circuit is removable from the assembly. var/displayed_name = "" - + /* Integrated circuits are essentially modular machines. Each circuit has a specific function, and combining them inside Electronic Assemblies allows a creative player the means to solve many problems. Circuits are held inside an electronic assembly, and are wired using special tools. @@ -247,11 +247,14 @@ a creative player the means to solve many problems. Circuits are held inside an if(href_list["rename"]) rename_component(usr) + if(assembly) + assembly.add_allowed_scanner(usr.ckey) if(href_list["pin"]) var/datum/integrated_io/pin = locate(href_list["pin"]) in inputs + outputs + activators if(pin) var/datum/integrated_io/linked + var/success = TRUE if(href_list["link"]) linked = locate(href_list["link"]) in pin.linked @@ -259,6 +262,9 @@ a creative player the means to solve many problems. Circuits are held inside an pin.handle_wire(linked, held_item, href_list["act"], usr) else to_chat(usr, "You can't do a whole lot without the proper tools.") + success = FALSE + if(success && assembly) + assembly.add_allowed_scanner(usr.ckey) if(href_list["scan"]) if(istype(held_item, /obj/item/integrated_electronics/debugger)) diff --git a/code/modules/integrated_electronics/core/pins.dm b/code/modules/integrated_electronics/core/pins.dm index cc81c20081..c1bbb900fa 100644 --- a/code/modules/integrated_electronics/core/pins.dm +++ b/code/modules/integrated_electronics/core/pins.dm @@ -209,6 +209,7 @@ D [1]/ || write_data_to_pin(new_data) /datum/integrated_io/activate/ask_for_pin_data(mob/user) // This just pulses the pin. + holder.investigate_log(" was manually pulsed by [key_name(user)].", INVESTIGATE_CIRCUIT) holder.check_then_do_work(ord,ignore_power = TRUE) to_chat(user, "You pulse \the [holder]'s [src] pin.") diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index b43ec3b34e..f8d1424160 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -12,7 +12,6 @@ var/debug = FALSE // If it's upgraded and can clone, even without config settings. var/current_category = null var/cloning = FALSE // If the printer is currently creating a circuit - var/clone_countdown = 0 // Timestamp for when to print the circuit var/recycling = FALSE // If an assembly is being emptied into this printer var/list/program // Currently loaded save, in form of list @@ -29,26 +28,22 @@ debug = TRUE upgraded = TRUE can_clone = TRUE + fast_clone = TRUE w_class = WEIGHT_CLASS_TINY /obj/item/integrated_circuit_printer/Initialize() . = ..() AddComponent(/datum/component/material_container, list(MAT_METAL), MINERAL_MATERIAL_AMOUNT * 25, TRUE, list(/obj/item/stack, /obj/item/integrated_circuit, /obj/item/electronic_assembly)) -/obj/item/integrated_circuit_printer/Destroy() - STOP_PROCESSING(SSprocessing, src) - return ..() - -/obj/item/integrated_circuit_printer/process() +/obj/item/integrated_circuit_printer/proc/print_program(mob/user) if(!cloning) - STOP_PROCESSING(SSprocessing, src) - if(world.time >= clone_countdown || fast_clone) - var/turf/T = get_turf(src) - T.visible_message("[src] has finished printing its assembly!") - playsound(get_turf(T), 'sound/items/poster_being_created.ogg', 50, TRUE) - SScircuit.load_electronic_assembly(T, program) - cloning = FALSE - STOP_PROCESSING(SSprocessing, src) + return + visible_message("[src] has finished printing its assembly!") + playsound(src, 'sound/items/poster_being_created.ogg', 50, TRUE) + var/obj/item/electronic_assembly/assembly = SScircuit.load_electronic_assembly(get_turf(src), program) + assembly.creator = key_name(user) + assembly.investigate_log("was printed by [assembly.creator].", INVESTIGATE_CIRCUIT) + cloning = FALSE /obj/item/integrated_circuit_printer/attackby(obj/item/O, mob/user) if(istype(O, /obj/item/disk/integrated_circuit/upgrade/advanced)) @@ -87,7 +82,7 @@ return to_chat(user, "You begin recycling [EA]'s components...") playsound(src, 'sound/items/electronic_assembly_emptying.ogg', 50, TRUE) - if(!do_after(user, 30, target = src)) //short channel so you don't accidentally start emptying out a complex assembly + if(!do_after(user, 30, target = src) || recycling) //short channel so you don't accidentally start emptying out a complex assembly return recycling = TRUE var/datum/component/material_container/mats = GetComponent(/datum/component/material_container) @@ -141,7 +136,7 @@ if(!program) HTML += " {[fast_clone ? "Print" : "Begin Printing"] Assembly}" else if(cloning) - HTML += " {Cancel Print} - [DisplayTimeText(max(0, clone_countdown - world.time))] remaining until completion" + HTML += " {Cancel Print}" else HTML += " {[fast_clone ? "Print" : "Begin Printing"] Assembly}" @@ -206,6 +201,7 @@ if(istype(built, /obj/item/electronic_assembly)) var/obj/item/electronic_assembly/E = built + E.creator = key_name(usr) E.opened = TRUE E.update_icon() //reupdate diagnostic hud because it was put_in_hands() and not pickup()'ed @@ -213,6 +209,7 @@ E.diag_hud_set_circuitcell() E.diag_hud_set_circuitstat() E.diag_hud_set_circuittracking() + E.investigate_log("was printed by [E.creator].", INVESTIGATE_CIRCUIT) to_chat(usr, "[capitalize(built.name)] printed.") playsound(src, 'sound/items/jaws_pry.ogg', 50, TRUE) @@ -226,8 +223,10 @@ return switch(href_list["print"]) if("load") + if(cloning) + return var/input = input("Put your code there:", "loading", null, null) as message | null - if(!check_interactivity(usr)) + if(!check_interactivity(usr) || cloning) return if(!input) program = null @@ -254,19 +253,20 @@ to_chat(usr, "Metal cost: [program["metal_cost"]].") if("print") - if(!program) + if(!program || cloning) return if(program["requires_upgrades"] && !upgraded && !debug) to_chat(usr, "This program uses unknown component designs. Printer upgrade is required to proceed.") + return if(program["unsupported_circuit"] && !debug) to_chat(usr, "This program uses components not supported by the specified assembly. Please change the assembly type in the save file to a supported one.") - else if(fast_clone || debug) + return + else if(fast_clone) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(debug || materials.use_amount_type(program["metal_cost"], MAT_METAL)) - var/obj/item/assembly = SScircuit.load_electronic_assembly(get_turf(src), program) - to_chat(usr, "[assembly] has been printed from the provided template!") - playsound(src, 'sound/items/poster_being_created.ogg', 50, TRUE) + cloning = TRUE + print_program(usr) else to_chat(usr, "You need [program["metal_cost"]] metal to build that!") else @@ -277,11 +277,10 @@ var/cloning_time = round(program["metal_cost"] / 15) cloning_time = min(cloning_time, MAX_CIRCUIT_CLONE_TIME) cloning = TRUE - clone_countdown = world.time + cloning_time to_chat(usr, "You begin printing a custom assembly. This will take approximately [DisplayTimeText(cloning_time)]. You can still print \ off normal parts during this time.") playsound(src, 'sound/items/poster_being_created.ogg', 50, TRUE) - START_PROCESSING(SSprocessing, src) + addtimer(CALLBACK(src, .proc/print_program, usr), cloning_time) if("cancel") if(!cloning || !program) @@ -289,7 +288,6 @@ to_chat(usr, "Cloning has been canceled. Metal cost has been refunded.") cloning = FALSE - clone_countdown = FALSE var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.use_amount_type(-program["metal_cost"], MAT_METAL) //use negative amount to regain the cost diff --git a/code/modules/integrated_electronics/core/saved_circuits.dm b/code/modules/integrated_electronics/core/saved_circuits.dm index f58378cf6d..eef4fe38dd 100644 --- a/code/modules/integrated_electronics/core/saved_circuits.dm +++ b/code/modules/integrated_electronics/core/saved_circuits.dm @@ -129,10 +129,6 @@ if(initial(desc) != desc) assembly_params["desc"] = desc - // Save panel status - if(opened) - assembly_params["opened"] = TRUE - // Save modified color if(initial(detail_color) != detail_color) assembly_params["detail_color"] = detail_color @@ -162,10 +158,6 @@ if(assembly_params["desc"]) desc = assembly_params["desc"] - // Load panel status - if(assembly_params["opened"]) - opened = TRUE - if(assembly_params["detail_color"]) detail_color = assembly_params["detail_color"] diff --git a/code/modules/integrated_electronics/subtypes/access.dm b/code/modules/integrated_electronics/subtypes/access.dm index bf710be0e2..9012cd1089 100644 --- a/code/modules/integrated_electronics/subtypes/access.dm +++ b/code/modules/integrated_electronics/subtypes/access.dm @@ -1,5 +1,5 @@ /obj/item/integrated_circuit/input/card_reader - name = "card reader" + name = "ID card reader" //To differentiate it from the data card reader desc = "A circuit that can read the registred name, assignment, and PassKey string from an ID card." icon_state = "card_reader" @@ -14,6 +14,10 @@ "on read" = IC_PINTYPE_PULSE_OUT ) +/obj/item/integrated_circuit/input/card_reader/old + name = "card reader" + spawn_flags = 0 + /obj/item/integrated_circuit/input/card_reader/attackby_react(obj/item/I, mob/living/user, intent) var/obj/item/card/id/card = I.GetID() var/list/access = I.GetAccess() diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 70e3bed5a7..96ca6a3055 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -76,6 +76,25 @@ push_data() activate_pin(1) +/obj/item/integrated_circuit/input/colorpad + name = "color pad" + desc = "This small color pad allows someone to input a hexadecimal color into the system." + icon_state = "colorpad" + complexity = 2 + can_be_asked_input = 1 + inputs = list() + outputs = list("color entered" = IC_PINTYPE_STRING) + activators = list("on entered" = IC_PINTYPE_PULSE_IN) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + power_draw_per_use = 4 + +/obj/item/integrated_circuit/input/colorpad/ask_for_input(mob/user) + var/new_color = input(user, "Enter a color, please.", "Color", "#ffffff") as color|null + if(new_color && user.IsAdvancedToolUser()) + set_pin_data(IC_OUTPUT, 1, new_color) + push_data() + activate_pin(1) + /obj/item/integrated_circuit/input/med_scanner name = "integrated medical analyser" desc = "A very small version of the common medical analyser. This allows the machine to know how healthy someone is." @@ -744,7 +763,7 @@ data.standard_format_data(message, text, key) ntnet_send(data) -/obj/item/integrated_circuit/input/ntnet_recieve(datum/netdata/data) +/obj/item/integrated_circuit/input/ntnet_receive(datum/netdata/data) set_pin_data(IC_OUTPUT, 1, data.sender_id) set_pin_data(IC_OUTPUT, 2, data.data["data"]) set_pin_data(IC_OUTPUT, 3, data.data["data_secondary"]) @@ -755,7 +774,7 @@ activate_pin(2) /obj/item/integrated_circuit/input/ntnet_advanced - name = "Low level NTNet transreciever" + name = "Low level NTNet transreceiver" desc = "Enables the sending and receiving of messages over NTNet via packet data protocol. Allows advanced control of message contents and signalling. Must use associative lists. Outputs associative list. Has a slower transmission rate than normal NTNet circuits, due to increased data processing complexity." extended_desc = "Data can be sent or received using the second pin on each side, \ with additonal data reserved for the third pin. When a message is received, the second activation pin \ @@ -768,7 +787,7 @@ "target NTNet addresses"= IC_PINTYPE_STRING, "data" = IC_PINTYPE_LIST, ) - outputs = list("recieved data" = IC_PINTYPE_LIST, "is_broadcast" = IC_PINTYPE_BOOLEAN) + outputs = list("received data" = IC_PINTYPE_LIST, "is_broadcast" = IC_PINTYPE_BOOLEAN) activators = list("send data" = IC_PINTYPE_PULSE_IN, "on data received" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH action_flags = IC_ACTION_LONG_RANGE @@ -792,7 +811,7 @@ data.data = message ntnet_send(data) -/obj/item/integrated_circuit/input/ntnet_advanced/ntnet_recieve(datum/netdata/data) +/obj/item/integrated_circuit/input/ntnet_advanced/ntnet_receive(datum/netdata/data) set_pin_data(IC_OUTPUT, 1, data.data) set_pin_data(IC_OUTPUT, 2, data.broadcast) push_data() @@ -883,6 +902,7 @@ return FALSE set_pin_data(IC_OUTPUT, 1, WEAKREF(A)) push_data() + to_chat(user, "You scan [A] with [assembly].") activate_pin(1) return TRUE @@ -915,6 +935,7 @@ return FALSE set_pin_data(IC_OUTPUT, 1, WEAKREF(A)) push_data() + to_chat(user, "You scan [A] with [assembly].") activate_pin(1) return TRUE @@ -941,6 +962,7 @@ user.transferItemToLoc(A,drop_location()) set_pin_data(IC_OUTPUT, 1, WEAKREF(A)) push_data() + to_chat(user, "You let [assembly] scan [A].") activate_pin(1) return TRUE @@ -1101,3 +1123,104 @@ else activate_pin(3) +/obj/item/integrated_circuit/input/atmospheric_analyzer + name = "atmospheric analyzer" + desc = "A miniaturized analyzer which can scan anything that contains gases. Leave target as NULL to scan the air around the assembly." + extended_desc = "The nth element of gas amounts is the number of moles of the \ + nth gas in gas list. \ + Pressure is in kPa, temperature is in Kelvin. \ + Due to programming limitations, scanning an object that does \ + not contain a gas will return the air around it instead." + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + inputs = list( + "target" = IC_PINTYPE_REF + ) + outputs = list( + "gas list" = IC_PINTYPE_LIST, + "gas amounts" = IC_PINTYPE_LIST, + "total moles" = IC_PINTYPE_NUMBER, + "pressure" = IC_PINTYPE_NUMBER, + "temperature" = IC_PINTYPE_NUMBER, + "volume" = IC_PINTYPE_NUMBER + ) + activators = list( + "scan" = IC_PINTYPE_PULSE_IN, + "on success" = IC_PINTYPE_PULSE_OUT, + "on failure" = IC_PINTYPE_PULSE_OUT + ) + power_draw_per_use = 5 + +/obj/item/integrated_circuit/input/atmospheric_analyzer/do_work() + for(var/i=1 to 6) + set_pin_data(IC_OUTPUT, i, null) + var/atom/target = get_pin_data_as_type(IC_INPUT, 1, /atom) + var/atom/movable/acting_object = get_object() + if(!target) + target = acting_object.loc + if(!target.Adjacent(acting_object)) + activate_pin(3) + return + + var/datum/gas_mixture/air_contents = target.return_air() + if(!air_contents) + activate_pin(3) + return + + var/list/gases = air_contents.gases + var/list/gas_names = list() + var/list/gas_amounts = list() + for(var/id in gases) + var/name = gases[id][GAS_META][META_GAS_NAME] + var/amt = round(gases[id][MOLES], 0.001) + gas_names.Add(name) + gas_amounts.Add(amt) + + set_pin_data(IC_OUTPUT, 1, gas_names) + set_pin_data(IC_OUTPUT, 2, gas_amounts) + set_pin_data(IC_OUTPUT, 3, round(air_contents.total_moles(), 0.001)) + set_pin_data(IC_OUTPUT, 4, round(air_contents.return_pressure(), 0.001)) + set_pin_data(IC_OUTPUT, 5, round(air_contents.temperature, 0.001)) + set_pin_data(IC_OUTPUT, 6, round(air_contents.return_volume(), 0.001)) + push_data() + activate_pin(2) + +/obj/item/integrated_circuit/input/data_card_reader + name = "data card reader" + desc = "A circuit that can read from and write to data cards." + extended_desc = "Setting the \"write mode\" boolean to true will cause any data cards that are used on the assembly to replace\ + their existing function and data strings with the given strings, if it is set to false then using a data card on the assembly will cause\ + the function and data strings stored on the card to be written to the output pins." + icon_state = "card_reader" + complexity = 4 + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + inputs = list( + "function" = IC_PINTYPE_STRING, + "data to store" = IC_PINTYPE_STRING, + "write mode" = IC_PINTYPE_BOOLEAN + ) + outputs = list( + "function" = IC_PINTYPE_STRING, + "stored data" = IC_PINTYPE_STRING + ) + activators = list( + "on write" = IC_PINTYPE_PULSE_OUT, + "on read" = IC_PINTYPE_PULSE_OUT + ) + +/obj/item/integrated_circuit/input/data_card_reader/attackby_react(obj/item/I, mob/living/user, intent) + var/obj/item/card/data/card = I.GetCard() + var/write_mode = get_pin_data(IC_INPUT, 3) + if(card) + if(write_mode == TRUE) + card.function = get_pin_data(IC_INPUT, 1) + card.data = get_pin_data(IC_INPUT, 2) + push_data() + activate_pin(1) + else + set_pin_data(IC_OUTPUT, 1, card.function) + set_pin_data(IC_OUTPUT, 2, card.data) + push_data() + activate_pin(2) + else + return FALSE + return TRUE diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index f4cc363afb..6267f2b622 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -286,6 +286,7 @@ push_data() if(1) TR.weedlevel = 0 + TR.update_icon() if(2) if(TR.myseed) //Could be that they're just using it as a de-weeder TR.age = 0 @@ -305,7 +306,7 @@ else if(istype(O, /obj/item/seeds) && !istype(O, /obj/item/seeds/sample)) if(!TR.myseed) if(istype(O, /obj/item/seeds/kudzu)) - investigate_log("had Kudzu planted in it by [acting_object] at ([x],[y],[z])","kudzu") + investigate_log("had Kudzu planted in it by [acting_object] at [AREACOORD(src)]","kudzu") acting_object.visible_message("[acting_object] plants [O].") TR.dead = 0 TR.myseed = O @@ -366,12 +367,12 @@ var/atom/movable/acting_object = get_object() var/turf/T = get_turf(acting_object) var/obj/item/AM = get_pin_data_as_type(IC_INPUT, 1, /obj/item) - if(AM) + if(!QDELETED(AM) && !istype(AM, /obj/item/electronic_assembly) && !istype(AM, /obj/item/transfer_valve) && !istype(AM, /obj/item/twohanded) && !istype(assembly.loc, /obj/item/implant/storage)) var/mode = get_pin_data(IC_INPUT, 2) if(mode == 1) if(check_target(AM)) var/weightcheck = FALSE - if (AM.w_class < max_w_class) + if (AM.w_class <= max_w_class) weightcheck = TRUE else weightcheck = FALSE @@ -495,7 +496,10 @@ var/target_y_rel = round(get_pin_data(IC_INPUT, 2)) var/obj/item/A = get_pin_data_as_type(IC_INPUT, 3, /obj/item) - if(!A || A.anchored || A.throwing || A == assembly) + if(!A || A.anchored || A.throwing || A == assembly || istype(A, /obj/item/twohanded) || istype(A, /obj/item/transfer_valve)) + return + + if (istype(assembly.loc, /obj/item/implant/storage)) //Prevents the more abusive form of chestgun. return if(max_w_class && (A.w_class > max_w_class)) @@ -526,6 +530,7 @@ var/range = round(CLAMP(sqrt(target_x_rel*target_x_rel+target_y_rel*target_y_rel),0,8),1) assembly.visible_message("[assembly] has thrown [A]!") + log_attack("[assembly] [REF(assembly)] has thrown [A].") A.forceMove(drop_location()) A.throw_at(locate(x_abs, y_abs, T.z), range, 3) diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 2d820b016e..b887617ea8 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -46,6 +46,10 @@ for(var/mob/M in nearby_things) var/obj/O = assembly ? assembly : src to_chat(M, "[icon2html(O.icon, world, O.icon_state)] [stuff_to_display]") + if(assembly) + assembly.investigate_log("displayed \"[html_encode(stuff_to_display)]\" with [type].", INVESTIGATE_CIRCUIT) + else + investigate_log("displayed \"[html_encode(stuff_to_display)]\" as [type].", INVESTIGATE_CIRCUIT) /obj/item/integrated_circuit/output/screen/large name = "large screen" @@ -58,6 +62,10 @@ ..() var/obj/O = assembly ? get_turf(assembly) : loc O.visible_message("[icon2html(O.icon, world, O.icon_state)] [stuff_to_display]") + if(assembly) + assembly.investigate_log("displayed \"[html_encode(stuff_to_display)]\" with [type].", INVESTIGATE_CIRCUIT) + else + investigate_log("displayed \"[html_encode(stuff_to_display)]\" as [type].", INVESTIGATE_CIRCUIT) /obj/item/integrated_circuit/output/light name = "light" @@ -151,6 +159,10 @@ return vol = CLAMP(vol ,0 , 100) playsound(get_turf(src), selected_sound, vol, freq, -1) + if(assembly) + assembly.investigate_log("played a sound ([selected_sound]) with [type].", INVESTIGATE_CIRCUIT) + else + investigate_log("played a sound ([selected_sound]) as [type].", INVESTIGATE_CIRCUIT) /obj/item/integrated_circuit/output/sound/on_data_written() power_draw_per_use = get_pin_data(IC_INPUT, 2) * 15 @@ -234,8 +246,12 @@ text = get_pin_data(IC_INPUT, 1) if(!isnull(text)) var/atom/movable/A = get_object() - A.say(sanitize(text)) - + var/sanitized_text = sanitize(text) + A.say(sanitized_text) + if (assembly) + log_say("[assembly] [REF(assembly)] : [sanitized_text]") + else + log_say("[name] ([type]) : [sanitized_text]") /obj/item/integrated_circuit/output/video_camera name = "video camera circuit" diff --git a/code/modules/integrated_electronics/subtypes/power.dm b/code/modules/integrated_electronics/subtypes/power.dm index e760b21f72..4e5b6952a4 100644 --- a/code/modules/integrated_electronics/subtypes/power.dm +++ b/code/modules/integrated_electronics/subtypes/power.dm @@ -24,7 +24,7 @@ /obj/item/integrated_circuit/power/transmitter/large name = "large power transmission circuit" - desc = "This can wirelessly transmit a lot of electricity from an assembly's battery towards a nearby machine. Warning: Do not operate in flammable enviroments." + desc = "This can wirelessly transmit a lot of electricity from an assembly's battery towards a nearby machine. Warning: Do not operate in flammable environments." extended_desc = "This circuit transmits 20 kJ of electricity every time the activator pin is pulsed. The input pin must be \ a reference to a machine to send electricity to. This can be a battery, or anything containing a battery. The machine can exist \ inside the assembly, or adjacent to it. The power is sourced from the assembly's power cell. If the target is outside of the assembly, \ diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index 73d162ff3a..2a6b4a1a80 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -186,7 +186,7 @@ //Always log attemped injections for admins var/contained = reagents.log_list() - add_logs(src, L, "attemped to inject", addition="which had [contained]") + add_logs(src, L, "attempted to inject", addition="which had [contained]") L.visible_message("[acting_object] is trying to inject [L]!", \ "[acting_object] is trying to inject you!") busy = TRUE @@ -404,7 +404,7 @@ activate_pin(3) return FALSE -obj/item/integrated_circuit/reagent/storage/juicer +/obj/item/integrated_circuit/reagent/storage/juicer name = "reagent juicer" desc = "This is a reagent juicer. It accepts a ref to something and refines it into reagents. It can store up to 100u." icon_state = "blender" diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index 6ec7463ab5..ced08bbc6a 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -222,7 +222,7 @@ if(ACCESS_ENGINE) return "Engineering" if(ACCESS_ENGINE_EQUIP) - return "Power Equipment" + return "Power and Engineering Equipment" if(ACCESS_MAINT_TUNNELS) return "Maintenance" if(ACCESS_EXTERNAL_AIRLOCKS) diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm index b4679ae479..6a5a857ef0 100644 --- a/code/modules/jobs/job_exp.dm +++ b/code/modules/jobs/job_exp.dm @@ -143,8 +143,10 @@ GLOBAL_PROTECT(exp_to_update) L.update_exp_list(mins,ann) /datum/controller/subsystem/blackbox/proc/update_exp_db() - SSdbcore.MassInsert(format_table_name("role_time"), GLOB.exp_to_update, "ON DUPLICATE KEY UPDATE minutes = minutes + VALUES(minutes)") - LAZYCLEARLIST(GLOB.exp_to_update) + set waitfor = FALSE + var/list/old_minutes = GLOB.exp_to_update + GLOB.exp_to_update = null + SSdbcore.MassInsert(format_table_name("role_time"), old_minutes, "ON DUPLICATE KEY UPDATE minutes = minutes + VALUES(minutes)") //resets a client's exp to what was in the db. /client/proc/set_exp_from_db() @@ -154,10 +156,12 @@ GLOBAL_PROTECT(exp_to_update) return -1 var/datum/DBQuery/exp_read = SSdbcore.NewQuery("SELECT job, minutes FROM [format_table_name("role_time")] WHERE ckey = '[sanitizeSQL(ckey)]'") if(!exp_read.Execute()) + qdel(exp_read) return -1 var/list/play_records = list() while(exp_read.NextRow()) play_records[exp_read.item[1]] = text2num(exp_read.item[2]) + qdel(exp_read) for(var/rtype in SSjob.name_occupations) if(!play_records[rtype]) @@ -186,7 +190,9 @@ GLOBAL_PROTECT(exp_to_update) var/datum/DBQuery/flag_update = SSdbcore.NewQuery("UPDATE [format_table_name("player")] SET flags = '[prefs.db_flags]' WHERE ckey='[sanitizeSQL(ckey)]'") if(!flag_update.Execute()) + qdel(flag_update) return -1 + qdel(flag_update) /client/proc/update_exp_list(minutes, announce_changes = FALSE) @@ -264,10 +270,12 @@ GLOBAL_PROTECT(exp_to_update) var/datum/DBQuery/flags_read = SSdbcore.NewQuery("SELECT flags FROM [format_table_name("player")] WHERE ckey='[ckey]'") if(!flags_read.Execute()) + qdel(flags_read) return FALSE if(flags_read.NextRow()) prefs.db_flags = text2num(flags_read.item[1]) else if(isnull(prefs.db_flags)) prefs.db_flags = 0 //This PROBABLY won't happen, but better safe than sorry. + qdel(flags_read) return TRUE diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 21a100bb71..988eca631c 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -50,6 +50,8 @@ Captain implants = list(/obj/item/implant/mindshield) accessory = /obj/item/clothing/accessory/medal/gold/captain + chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/captain) + /* Head of Personnel */ @@ -98,3 +100,5 @@ Head of Personnel head = /obj/item/clothing/head/hopcap backpack_contents = list(/obj/item/storage/box/ids=1,\ /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) + + chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/hop) diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm index 3e712b9e40..98cdccf4ee 100644 --- a/code/modules/jobs/job_types/cargo_service.dm +++ b/code/modules/jobs/job_types/cargo_service.dm @@ -28,6 +28,8 @@ Quartermaster glasses = /obj/item/clothing/glasses/sunglasses l_hand = /obj/item/clipboard + chameleon_extras = /obj/item/stamp/qm + /* Cargo Technician */ @@ -97,6 +99,8 @@ Shaft Miner duffelbag = /obj/item/storage/backpack/duffelbag box = /obj/item/storage/box/survival_mining + chameleon_extras = /obj/item/gun/energy/kinetic_accelerator + /datum/outfit/job/miner/asteroid name = "Shaft Miner (Asteroid)" uniform = /obj/item/clothing/under/rank/miner diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm index 8e0e50f4d6..8ec25e5f5e 100644 --- a/code/modules/jobs/job_types/civilian.dm +++ b/code/modules/jobs/job_types/civilian.dm @@ -18,7 +18,7 @@ Clown minimal_access = list(ACCESS_THEATRE) /datum/job/clown/after_spawn(mob/living/carbon/human/H, mob/M) - H.rename_self("clown", M.client) + H.apply_pref_name("clown", M.client) /datum/outfit/job/clown name = "Clown" @@ -44,6 +44,8 @@ Clown box = /obj/item/storage/box/hug/survival + chameleon_extras = /obj/item/stamp/clown + /datum/outfit/job/clown/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) ..() @@ -79,7 +81,7 @@ Mime minimal_access = list(ACCESS_THEATRE) /datum/job/mime/after_spawn(mob/living/carbon/human/H, mob/M) - H.rename_self("mime", M.client) + H.apply_pref_name("mime", M.client) /datum/outfit/job/mime name = "Mime" @@ -137,7 +139,7 @@ Curator l_hand = /obj/item/storage/bag/books r_pocket = /obj/item/key/displaycase l_pocket = /obj/item/laser_pointer - //CITADEL EDIT removes runtimes from this pocket protector + accessory = /obj/item/clothing/accessory/pocketprotector/full backpack_contents = list( /obj/item/melee/curator_whip = 1, /obj/item/soapstone = 1, @@ -186,6 +188,8 @@ Lawyer l_pocket = /obj/item/laser_pointer r_pocket = /obj/item/clothing/accessory/lawyers_badge + chameleon_extras = /obj/item/stamp/law + /datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) ..() diff --git a/code/modules/jobs/job_types/engineering.dm b/code/modules/jobs/job_types/engineering.dm index 67f4d59c3a..171a437bb1 100644 --- a/code/modules/jobs/job_types/engineering.dm +++ b/code/modules/jobs/job_types/engineering.dm @@ -48,6 +48,7 @@ Chief Engineer duffelbag = /obj/item/storage/backpack/duffelbag/engineering box = /obj/item/storage/box/engineer pda_slot = SLOT_L_STORE + chameleon_extras = /obj/item/stamp/ce /datum/outfit/job/ce/rig name = "Chief Engineer (Hardsuit)" diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm index 7cf7a0f5b9..5d4802f93a 100644 --- a/code/modules/jobs/job_types/job.dm +++ b/code/modules/jobs/job_types/job.dm @@ -49,6 +49,7 @@ var/exp_type_department = "" //The amount of good boy points playing this role will earn you towards a higher chance to roll antagonist next round + //can be overridden by antag_rep.txt config var/antag_rep = 10 //Only override this proc @@ -67,6 +68,11 @@ /datum/job/proc/special_check_latejoin(client/C) return TRUE +/datum/job/proc/GetAntagRep() + . = CONFIG_GET(keyed_number_list/antag_rep)[lowertext(title)] + if(. == null) + return antag_rep + //Don't override this unless the job transforms into a non-human (Silicons do this for example) /datum/job/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE) if(!H) @@ -75,7 +81,7 @@ if(CONFIG_GET(flag/enforce_human_authority) && (title in GLOB.command_positions)) if(H.dna.species.id != "human") H.set_species(/datum/species/human) - H.rename_self("human", H.client) + H.apply_pref_name("human", H.client) purrbation_remove(H, silent=TRUE) //Equip the rest of the gear @@ -198,3 +204,11 @@ PDA.owner = H.real_name PDA.ownjob = J.title PDA.update_label() + +/datum/outfit/job/get_chameleon_disguise_info() + var/list/types = ..() + types -= /obj/item/storage/backpack //otherwise this will override the actual backpacks + types += backpack + types += satchel + types += duffelbag + return types diff --git a/code/modules/jobs/job_types/medical.dm b/code/modules/jobs/job_types/medical.dm index ff056c6bbb..2ab5da36aa 100644 --- a/code/modules/jobs/job_types/medical.dm +++ b/code/modules/jobs/job_types/medical.dm @@ -46,6 +46,8 @@ Chief Medical Officer satchel = /obj/item/storage/backpack/satchel/med duffelbag = /obj/item/storage/backpack/duffelbag/med + chameleon_extras = list(/obj/item/gun/syringe, /obj/item/stamp/cmo) + /* Medical Doctor */ @@ -81,6 +83,8 @@ Medical Doctor satchel = /obj/item/storage/backpack/satchel/med duffelbag = /obj/item/storage/backpack/duffelbag/med + chameleon_extras = /obj/item/gun/syringe + /* Chemist */ @@ -116,6 +120,8 @@ Chemist satchel = /obj/item/storage/backpack/satchel/chem duffelbag = /obj/item/storage/backpack/duffelbag/med + chameleon_extras = /obj/item/gun/syringe + /* Geneticist */ diff --git a/code/modules/jobs/job_types/science.dm b/code/modules/jobs/job_types/science.dm index a276c8834f..6a14f204a3 100644 --- a/code/modules/jobs/job_types/science.dm +++ b/code/modules/jobs/job_types/science.dm @@ -48,6 +48,8 @@ Research Director backpack = /obj/item/storage/backpack/science satchel = /obj/item/storage/backpack/satchel/tox + chameleon_extras = /obj/item/stamp/rd + /datum/outfit/job/rd/rig name = "Research Director (Hardsuit)" diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm index 7f377abf3a..252b51301c 100644 --- a/code/modules/jobs/job_types/security.dm +++ b/code/modules/jobs/job_types/security.dm @@ -60,6 +60,8 @@ Head of Security implants = list(/obj/item/implant/mindshield) + chameleon_extras = list(/obj/item/gun/energy/e_gun/hos, /obj/item/stamp/hos) + /* Warden */ @@ -111,6 +113,7 @@ Warden implants = list(/obj/item/implant/mindshield) + chameleon_extras = /obj/item/gun/ballistic/shotgun/automatic/combat/compact /* Detective @@ -154,6 +157,8 @@ Detective implants = list(/obj/item/implant/mindshield) + chameleon_extras = list(/obj/item/gun/ballistic/revolver/detective, /obj/item/clothing/glasses/sunglasses) + /datum/outfit/job/detective/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) ..() var/obj/item/clothing/mask/cigarette/cig = H.wear_mask @@ -293,6 +298,9 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S implants = list(/obj/item/implant/mindshield) + chameleon_extras = list(/obj/item/gun/energy/e_gun/advtaser, /obj/item/clothing/glasses/hud/security/sunglasses, /obj/item/clothing/head/helmet) + //The helmet is necessary because /obj/item/clothing/head/helmet/sec is overwritten in the chameleon list by the standard helmet, which has the same name and icon state + /obj/item/radio/headset/headset_sec/alt/department/Initialize() . = ..() diff --git a/code/modules/jobs/job_types/silicon.dm b/code/modules/jobs/job_types/silicon.dm index 28ee321f50..0738f20b24 100644 --- a/code/modules/jobs/job_types/silicon.dm +++ b/code/modules/jobs/job_types/silicon.dm @@ -34,7 +34,7 @@ AI H.forceMove(lateJoinCore.loc) qdel(lateJoinCore) var/mob/living/silicon/ai/AI = H - AI.rename_self("ai", M.client) //If this runtimes oh well jobcode is fucked. + AI.apply_pref_name("ai", M.client) //If this runtimes oh well jobcode is fucked. //we may have been created after our borg if(SSticker.current_state == GAME_STATE_SETTING_UP) @@ -60,9 +60,7 @@ AI /datum/job/ai/announce(mob/living/silicon/ai/AI) . = ..() - var/area/A = get_area(AI) - var/turf/T = get_turf(AI) - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [COORD(T)], [A.name].")) + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [AREACOORD(AI)].")) /datum/job/ai/config_check() return CONFIG_GET(flag/allow_ai) @@ -87,5 +85,4 @@ Cyborg return H.Robotize(FALSE, latejoin) /datum/job/cyborg/after_spawn(mob/living/silicon/robot/R, mob/M) - if(CONFIG_GET(flag/rename_cyborg)) //name can't be set in robot/New without the client - R.rename_self("cyborg", M.client) + R.updatename(M.client) diff --git a/code/modules/keybindings/bindings_human.dm b/code/modules/keybindings/bindings_human.dm index 14890cc7e2..5d02d9aedb 100644 --- a/code/modules/keybindings/bindings_human.dm +++ b/code/modules/keybindings/bindings_human.dm @@ -17,7 +17,7 @@ to_chat(user, "You can't fit anything in.") return if(thing) // put thing in belt - if(!equipped_belt.SendSignal(COMSIG_TRY_STORAGE_INSERT, thing, user.mob)) + if(!SEND_SIGNAL(equipped_belt, COMSIG_TRY_STORAGE_INSERT, thing, user.mob)) to_chat(user, "You can't fit anything in.") return if(!equipped_belt.contents.len) // nothing to take out @@ -45,7 +45,7 @@ to_chat(user, "You can't fit anything in.") return if(thing) // put thing in backpack - if(!equipped_backpack.SendSignal(COMSIG_TRY_STORAGE_INSERT, thing, user.mob)) + if(!SEND_SIGNAL(equipped_backpack, COMSIG_TRY_STORAGE_INSERT, thing, user.mob)) to_chat(user, "You can't fit anything in.") return if(!equipped_backpack.contents.len) // nothing to take out diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 4126cc4768..066ce22831 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -206,7 +206,7 @@ if(dat) user << browse("Penned by [author].
    " + "[dat]", "window=book[window_size != null ? ";size=[window_size]" : ""]") user.visible_message("[user] opens a book titled \"[title]\" and begins reading intently.") - user.SendSignal(COMSIG_ADD_MOOD_EVENT, "book_nerd", /datum/mood_event/book_nerd) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "book_nerd", /datum/mood_event/book_nerd) onclose(user, "book") else to_chat(user, "This book is completely blank!") diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 9a1fa4ae50..81e296e4c8 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -41,6 +41,8 @@ if(1) if (!SSdbcore.Connect()) dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance.
    " + else if(QDELETED(user)) + return else if(!SQLquery) dat += "ERROR: Malformed search request. Please contact your system administrator for assistance.
    " else @@ -50,12 +52,16 @@ var/datum/DBQuery/query_library_list_books = SSdbcore.NewQuery(SQLquery) if(!query_library_list_books.Execute()) dat += "ERROR: Unable to retrieve book listings. Please contact your system administrator for assistance.
    " - while(query_library_list_books.NextRow()) - var/author = query_library_list_books.item[1] - var/title = query_library_list_books.item[2] - var/category = query_library_list_books.item[3] - var/id = query_library_list_books.item[4] - dat += "[author][title][category][id]" + else + while(query_library_list_books.NextRow()) + var/author = query_library_list_books.item[1] + var/title = query_library_list_books.item[2] + var/category = query_library_list_books.item[3] + var/id = query_library_list_books.item[4] + dat += "[author][title][category][id]" + qdel(query_library_list_books) + if(QDELETED(user)) + return dat += "
    " dat += "\[Go Back\]
    " var/datum/browser/popup = new(user, "publiclibrary", name, 600, 400) @@ -135,6 +141,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums GLOB.cachedbooks = list() var/datum/DBQuery/query_library_cache = SSdbcore.NewQuery("SELECT id, author, title, category FROM [format_table_name("library")] WHERE isnull(deleted)") if(!query_library_cache.Execute()) + qdel(query_library_cache) return while(query_library_cache.NextRow()) var/datum/cachedbook/newbook = new() @@ -143,6 +150,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums newbook.title = query_library_cache.item[3] newbook.category = query_library_cache.item[4] GLOB.cachedbooks += newbook + qdel(query_library_cache) @@ -414,12 +422,15 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums var/sqlauthor = sanitizeSQL(scanner.cache.author) var/sqlcontent = sanitizeSQL(scanner.cache.dat) var/sqlcategory = sanitizeSQL(upload_category) + var/msg = "[key_name(usr)] has uploaded the book titled [scanner.cache.name], [length(scanner.cache.dat)] signs" var/datum/DBQuery/query_library_upload = SSdbcore.NewQuery("INSERT INTO [format_table_name("library")] (author, title, content, category, ckey, datetime, round_id_created) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]', '[usr.ckey]', Now(), '[GLOB.round_id]')") if(!query_library_upload.Execute()) + qdel(query_library_upload) alert("Database error encountered uploading to Archive") return else - log_game("[usr.name]/[usr.key] has uploaded the book titled [scanner.cache.name], [length(scanner.cache.dat)] signs") + log_game(msg) + qdel(query_library_upload) alert("Upload Complete. Uploaded title will be unavailable for printing for a short period") if(href_list["newspost"]) if(!GLOB.news_network) @@ -452,20 +463,23 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums cooldown = world.time + PRINTER_COOLDOWN var/datum/DBQuery/query_library_print = SSdbcore.NewQuery("SELECT * FROM [format_table_name("library")] WHERE id=[sqlid] AND isnull(deleted)") if(!query_library_print.Execute()) + qdel(query_library_print) say("PRINTER ERROR! Failed to print document (0x0000000F)") return while(query_library_print.NextRow()) var/author = query_library_print.item[2] var/title = query_library_print.item[3] var/content = query_library_print.item[4] - var/obj/item/book/B = new(get_turf(src)) - B.name = "Book: [title]" - B.title = title - B.author = author - B.dat = content - B.icon_state = "book[rand(1,8)]" - visible_message("[src]'s printer hums as it produces a completely bound book. How did it do that?") + if(!QDELETED(src)) + var/obj/item/book/B = new(get_turf(src)) + B.name = "Book: [title]" + B.title = title + B.author = author + B.dat = content + B.icon_state = "book[rand(1,8)]" + visible_message("[src]'s printer hums as it produces a completely bound book. How did it do that?") break + qdel(query_library_print) if(href_list["printbible"]) if(cooldown < world.time) var/obj/item/storage/book/bible/B = new /obj/item/storage/book/bible(src.loc) @@ -494,7 +508,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums icon = 'icons/obj/library.dmi' icon_state = "bigscanner" desc = "It servers the purpose of scanning stuff." - anchored = TRUE density = TRUE var/obj/item/book/cache // Last scanned book @@ -553,7 +566,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums icon = 'icons/obj/library.dmi' icon_state = "binder" desc = "Only intended for binding paper products." - anchored = TRUE density = TRUE var/busy = FALSE diff --git a/code/modules/library/random_books.dm b/code/modules/library/random_books.dm index e101a7143a..8fd12f6157 100644 --- a/code/modules/library/random_books.dm +++ b/code/modules/library/random_books.dm @@ -60,8 +60,7 @@ B.dat = query_get_random_books.item[4] B.name = "Book: [B.title]" B.icon_state= "book[rand(1,8)]" - else - return + qdel(query_get_random_books) /obj/structure/bookcase/random/fiction name = "bookcase (Fiction)" diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm index 17df503765..e51103937f 100644 --- a/code/modules/library/soapstone.dm +++ b/code/modules/library/soapstone.dm @@ -56,7 +56,7 @@ playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) user.visible_message("[user] starts engraving a message into [T]...", "You start engraving a message into [T]...", "You hear a chipping sound.") if(can_use() && do_after(user, tool_speed, target = T) && can_use()) //This looks messy but it's actually really clever! - if(!locate(/obj/structure/chisel_message in T)) + if(!locate(/obj/structure/chisel_message) in T) user.visible_message("[user] leaves a message for future spacemen!", "You engrave a message into [T]!", "You hear a chipping sound.") playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) var/obj/structure/chisel_message/M = new(T) diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index 537326fc45..89ec6a3a7e 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -23,7 +23,7 @@ if (l_color != NONSENSICAL_VALUE) light_color = l_color - SendSignal(COMSIG_ATOM_SET_LIGHT, l_range, l_power, l_color) + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT, l_range, l_power, l_color) update_light() diff --git a/code/modules/lighting/lighting_object.dm b/code/modules/lighting/lighting_object.dm index fe25dc9439..c0c5a411e7 100644 --- a/code/modules/lighting/lighting_object.dm +++ b/code/modules/lighting/lighting_object.dm @@ -11,8 +11,6 @@ layer = LIGHTING_LAYER invisibility = INVISIBILITY_LIGHTING - blend_mode = BLEND_ADD - var/needs_update = FALSE var/turf/myturf diff --git a/code/modules/lighting/lighting_source.dm b/code/modules/lighting/lighting_source.dm index a6c28b4146..59ce11baeb 100644 --- a/code/modules/lighting/lighting_source.dm +++ b/code/modules/lighting/lighting_source.dm @@ -56,10 +56,10 @@ if (top_atom) LAZYREMOVE(top_atom.light_sources, src) - + if (needs_update) GLOB.lighting_update_lights -= src - + . = ..() // Yes this doesn't align correctly on anything other than 4 width tabs. @@ -116,7 +116,6 @@ . = LUM_FALLOFF(C, pixel_turf); \ . *= light_power; \ var/OLD = effect_str[C]; \ - \ effect_str[C] = .; \ \ C.update_lumcount \ @@ -126,7 +125,6 @@ (. * lum_b) - (OLD * applied_lum_b) \ ); - #define REMOVE_CORNER(C) \ . = -effect_str[C]; \ C.update_lumcount \ @@ -167,8 +165,9 @@ /datum/light_source/proc/update_corners() var/update = FALSE + var/atom/source_atom = src.source_atom - if (!source_atom || QDELETED(source_atom)) + if (QDELETED(source_atom)) qdel(src) return diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index b5b2091eb9..2cc5a74b6b 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -57,12 +57,11 @@ if(!bounds) return FALSE - smooth_zlevel(world.maxz) repopulate_sorted_areas() - SSlighting.initialize_lighting_objects(block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]),locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ]))) //initialize things that are normally initialized after map load initTemplateBounds(bounds) + smooth_zlevel(world.maxz) log_game("Z-level [name] loaded at at [x],[y],[world.maxz]") return level diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 9fed915c98..8a7f5cb91e 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -9,7 +9,7 @@ var/list/baseturf_to_replace var/baseturf - + layer = POINT_LAYER /obj/effect/baseturf_helper/Initialize() @@ -30,7 +30,7 @@ var/area/our_area = get_area(src) for(var/i in get_area_turfs(our_area, z)) replace_baseturf(i) - + qdel(src) /obj/effect/baseturf_helper/proc/replace_baseturf(turf/thing) @@ -108,11 +108,11 @@ var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc if(airlock) if(airlock.cyclelinkeddir) - log_world("### MAP WARNING, [src] at [COORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!") else airlock.cyclelinkeddir = dir else - log_world("### MAP WARNING, [src] failed to find an airlock at [COORD(src)]") + log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]") /obj/effect/mapping_helpers/airlock/locked @@ -127,11 +127,11 @@ var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc if(airlock) if(airlock.locked) - log_world("### MAP WARNING, [src] at [COORD(src)] tried to bolt [airlock] but it's already locked!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] tried to bolt [airlock] but it's already locked!") else airlock.locked = TRUE else - log_world("### MAP WARNING, [src] failed to find an airlock at [COORD(src)]") + log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]") //needs to do its thing before spawn_rivers() is called diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index 381ce4bffe..dfc75c32ee 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -73,7 +73,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) if(!key_len) key_len = length(key) else - throw EXCEPTION("Inconsistant key length in DMM") + throw EXCEPTION("Inconsistent key length in DMM") if(!measureOnly) grid_models[key] = dmmRegex.group[2] diff --git a/code/modules/mapping/space_management/space_reservation.dm b/code/modules/mapping/space_management/space_reservation.dm new file mode 100644 index 0000000000..83147d5df7 --- /dev/null +++ b/code/modules/mapping/space_management/space_reservation.dm @@ -0,0 +1,70 @@ + +//Yes, they can only be rectangular. +//Yes, I'm sorry. +/datum/turf_reservation + var/list/reserved_turfs = list() + var/bottom_left_coords[3] + var/top_right_coords[3] + var/wipe_reservation_on_release = TRUE + var/turf_type = /turf/open/space + +/datum/turf_reservation/transit + turf_type = /turf/open/space/transit + +/datum/turf_reservation/proc/Release() + var/v = reserved_turfs.Copy() + for(var/i in reserved_turfs) + reserved_turfs -= i + SSmapping.used_turfs -= i + SSmapping.reserve_turfs(v) + +/datum/turf_reservation/proc/Reserve(width, height, zlevel) + if(width > world.maxx || height > world.maxy || width < 1 || height < 1) + return FALSE + var/list/avail = SSmapping.unused_turfs["[zlevel]"] + var/turf/BL + var/turf/TR + var/list/turf/final = list() + var/passing = FALSE + for(var/i in avail) + CHECK_TICK + BL = i + if(!(BL.flags_1 & UNUSED_RESERVATION_TURF_1)) + continue + if(BL.x + width > world.maxx || BL.y + height > world.maxy) + continue + TR = locate(BL.x + width - 1, BL.y + height - 1, BL.z) + if(!(TR.flags_1 & UNUSED_RESERVATION_TURF_1)) + continue + final = block(BL, TR) + if(!final) + continue + passing = TRUE + for(var/I in final) + var/turf/checking = I + if(!(checking.flags_1 & UNUSED_RESERVATION_TURF_1)) + passing = FALSE + break + if(!passing) + continue + break + if(!passing || !istype(BL) || !istype(TR)) + return FALSE + bottom_left_coords = list(BL.x, BL.y, BL.z) + top_right_coords = list(TR.x, TR.y, TR.z) + for(var/i in final) + var/turf/T = i + reserved_turfs |= T + T.flags_1 &= ~UNUSED_RESERVATION_TURF_1 + SSmapping.unused_turfs["[T.z]"] -= T + SSmapping.used_turfs[T] = src + T.ChangeTurf(turf_type, turf_type) + return TRUE + +/datum/turf_reservation/New() + LAZYADD(SSmapping.turf_reservations, src) + +/datum/turf_reservation/Destroy() + Release() + LAZYREMOVE(SSmapping.turf_reservations, src) + return ..() diff --git a/code/modules/mapping/space_management/zlevel_manager.dm b/code/modules/mapping/space_management/zlevel_manager.dm index a0d84c55dd..6129c5fd2b 100644 --- a/code/modules/mapping/space_management/zlevel_manager.dm +++ b/code/modules/mapping/space_management/zlevel_manager.dm @@ -17,6 +17,7 @@ z_list += S /datum/controller/subsystem/mapping/proc/add_new_zlevel(name, traits = list(), z_type = /datum/space_level) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NEW_Z, args) var/new_z = z_list.len + 1 if (world.maxz < new_z) world.incrementMaxZ() diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index e80941c405..2c001571a1 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -224,7 +224,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also if(BAD_ZLEVEL) to_chat(user, "This uplink can only be used in a designed mining zone.") if(BAD_AREA) - to_chat(user, "Unable to acquire a targeting lock. Find an area clear of stuctures or entirely within one.") + to_chat(user, "Unable to acquire a targeting lock. Find an area clear of structures or entirely within one.") if(BAD_COORDS) to_chat(user, "Location is too close to the edge of the station's scanning range. Move several paces away and try again.") if(BAD_TURF) @@ -253,13 +253,14 @@ interface with the mining shuttle at the landing site if a mobile beacon is also place.ScrapeAway() return ..() -obj/docking_port/stationary/public_mining_dock +/obj/docking_port/stationary/public_mining_dock name = "public mining base dock" id = "disabled" //The Aux Base has to leave before this can be used as a dock. //Should be checked on the map to ensure it matchs the mining shuttle dimensions. dwidth = 3 width = 7 height = 5 + area_type = /area/construction/mining/aux_base /obj/structure/mining_shuttle_beacon name = "mining shuttle beacon" @@ -322,7 +323,7 @@ obj/docking_port/stationary/public_mining_dock break if(!Mport) - to_chat(user, "This station is not equipped with an approprite mining shuttle. Please contact Nanotrasen Support.") + to_chat(user, "This station is not equipped with an appropriate mining shuttle. Please contact Nanotrasen Support.") return var/obj/docking_port/mobile/mining_shuttle diff --git a/code/modules/mining/equipment/goliath_hide.dm b/code/modules/mining/equipment/goliath_hide.dm index 85feaecf73..48f0ca0be5 100644 --- a/code/modules/mining/equipment/goliath_hide.dm +++ b/code/modules/mining/equipment/goliath_hide.dm @@ -7,6 +7,6 @@ singular_name = "hide plate" max_amount = 6 novariants = FALSE - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON w_class = WEIGHT_CLASS_NORMAL - layer = MOB_LAYER \ No newline at end of file + layer = MOB_LAYER diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 558147af23..7cf16f6064 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -381,7 +381,7 @@ /obj/item/crusher_trophy/blaster_tubes/on_mark_detonation(mob/living/target, mob/living/user) deadly_shot = TRUE - addtimer(CALLBACK(src, .proc/reset_deadly_shot), 300, TIMER_OVERRIDE) + addtimer(CALLBACK(src, .proc/reset_deadly_shot), 300, TIMER_UNIQUE|TIMER_OVERRIDE) /obj/item/crusher_trophy/blaster_tubes/proc/reset_deadly_shot() deadly_shot = FALSE diff --git a/code/modules/mining/equipment/lazarus_injector.dm b/code/modules/mining/equipment/lazarus_injector.dm index 1af66e37d6..6947b5b23f 100644 --- a/code/modules/mining/equipment/lazarus_injector.dm +++ b/code/modules/mining/equipment/lazarus_injector.dm @@ -34,7 +34,7 @@ H.robust_searching = 1 H.friends += user H.attack_same = 1 - log_game("[user] has revived hostile mob [target] with a malfunctioning lazarus injector") + log_game("[key_name(user)] has revived hostile mob [key_name(target)] with a malfunctioning lazarus injector") else H.attack_same = 0 loaded = 0 @@ -51,6 +51,9 @@ return /obj/item/lazarus_injector/emp_act() + . = ..() + if(. & EMP_PROTECT_SELF) + return if(!malfunctioning) malfunctioning = 1 diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index d7cdba8f7b..9ccb7c0efc 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -2,6 +2,7 @@ /obj/item/mining_scanner desc = "A scanner that checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." name = "manual mining scanner" + icon = 'icons/obj/device.dmi' icon_state = "mining1" item_state = "analyzer" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm index cd6afa20f7..ca313182b6 100644 --- a/code/modules/mining/equipment/mining_tools.dm +++ b/code/modules/mining/equipment/mining_tools.dm @@ -63,7 +63,8 @@ /obj/item/pickaxe/drill/cyborg name = "cyborg mining drill" desc = "An integrated electric mining drill." - flags_1 = NODROP_1 + item_flags = NODROP + flags_1 = NONE /obj/item/pickaxe/drill/diamonddrill name = "diamond-tipped mining drill" diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index 7fa6721c0f..43be61dd77 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -21,7 +21,7 @@ name = "regenerative core" desc = "All that remains of a hivelord. It can be used to heal completely, but it will rapidly decay into uselessness." icon_state = "roro core 2" - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON slot = "hivecore" force = 0 actions_types = list(/datum/action/item_action/organ_action/use) diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 8ad4053f6a..3005a29dcd 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -4,7 +4,7 @@ icon_state = "away" dynamic_lighting = DYNAMIC_LIGHTING_FORCED requires_power = FALSE - has_gravity = TRUE + has_gravity = STANDARD_GRAVITY valid_territory = FALSE //Survival Capsule @@ -57,12 +57,12 @@ used = FALSE return - playsound(get_turf(src), 'sound/effects/phasein.ogg', 100, 1) + playsound(src, 'sound/effects/phasein.ogg', 100, 1) var/turf/T = deploy_location if(!is_mining_level(T.z)) //only report capsules away from the mining/lavaland level - message_admins("[ADMIN_LOOKUPFLW(usr)] activated a bluespace capsule away from the mining level! [ADMIN_JMP(T)]") - log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [get_area(T)][COORD(T)]") + message_admins("[ADMIN_LOOKUPFLW(usr)] activated a bluespace capsule away from the mining level! [ADMIN_VERBOSEJMP(T)]") + log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [AREACOORD(T)]") template.load(deploy_location, centered = TRUE) new /obj/effect/particle_effect/smoke(get_turf(src)) qdel(src) diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm index b8ae25a87a..5e2e8bdd5a 100644 --- a/code/modules/mining/equipment/wormhole_jaunter.dm +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -20,7 +20,7 @@ /obj/item/wormhole_jaunter/proc/turf_check(mob/user) var/turf/device_turf = get_turf(user) - if(!device_turf || is_centcom_level(device_turf.z) || is_transit_level(device_turf.z)) + if(!device_turf || is_centcom_level(device_turf.z) || is_reserved_level(device_turf.z)) to_chat(user, "You're having difficulties getting the [src.name] to work.") return FALSE return TRUE @@ -51,18 +51,23 @@ qdel(src) /obj/item/wormhole_jaunter/emp_act(power) - var/triggered = FALSE + . = ..() + if(. & EMP_PROTECT_SELF) + return - if(usr.get_item_by_slot(SLOT_BELT) == src) - if(power == 1) - triggered = TRUE - else if(power == 2 && prob(50)) - triggered = TRUE + var/mob/M = loc + if(istype(M)) + var/triggered = FALSE + if(M.get_item_by_slot(SLOT_BELT) == src) + if(power == 1) + triggered = TRUE + else if(power == 2 && prob(50)) + triggered = TRUE - if(triggered) - usr.visible_message("[src] overloads and activates!") - SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation - activate(usr) + if(triggered) + M.visible_message("[src] overloads and activates!") + SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation + activate(M) /obj/item/wormhole_jaunter/proc/chasm_react(mob/user) if(user.get_item_by_slot(SLOT_BELT) == src) diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index a6cbbfcedd..d6ea55855d 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -63,7 +63,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) to_chat(user, "You attach the pack to [A] and activate it.") if(loc == user && istype(user.back, /obj/item/storage/backpack)) var/obj/item/storage/backpack/B = user.back - B.SendSignal(COMSIG_TRY_STORAGE_INSERT, src, user, FALSE, FALSE) + SEND_SIGNAL(B, COMSIG_TRY_STORAGE_INSERT, src, user, FALSE, FALSE) uses_left-- if(uses_left <= 0) user.transferItemToLoc(src, A, TRUE) diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 43faa48337..765f9d92e0 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -1,3 +1,5 @@ +GLOBAL_LIST(labor_sheet_values) + /**********************Prisoners' Console**************************/ /obj/machinery/mineral/labor_claim_console @@ -6,7 +8,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "console" density = FALSE - anchored = TRUE var/obj/machinery/mineral/stacking_machine/laborstacker/stacking_machine = null var/machinedir = SOUTH var/obj/item/card/id/prisoner/inserted_id @@ -21,6 +22,18 @@ Radio.listening = FALSE locate_stacking_machine() + if(!GLOB.labor_sheet_values) + var/sheet_list = list() + for(var/sheet_type in subtypesof(/obj/item/stack/sheet)) + var/obj/item/stack/sheet/sheet = sheet_type + if(!initial(sheet.point_value) || (initial(sheet.merge_type) && initial(sheet.merge_type) != sheet_type)) //ignore no-value sheets and x/fifty subtypes + continue + sheet_list += list(list("ore" = initial(sheet.name), "value" = initial(sheet.point_value))) + GLOB.labor_sheet_values = sortList(sheet_list, /proc/cmp_sheet_list) + +/proc/cmp_sheet_list(list/a, list/b) + return a["value"] - b["value"] + /obj/machinery/mineral/labor_claim_console/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/card/id/prisoner)) if(!inserted_id) @@ -53,16 +66,10 @@ if(check_auth()) can_go_home = TRUE - var/list/ores = list() if(stacking_machine) data["unclaimed_points"] = stacking_machine.points - for(var/ore in stacking_machine.ore_values) - var/list/O = list() - O["ore"] = ore - O["value"] = stacking_machine.ore_values[ore] - ores += list(O) - data["ores"] = ores + data["ores"] = GLOB.labor_sheet_values data["can_go_home"] = can_go_home return data @@ -93,11 +100,11 @@ if(!alone_in_area(get_area(src), usr)) to_chat(usr, "Prisoners are only allowed to be released while alone.") else - switch(SSshuttle.moveShuttle("laborcamp","laborcamp_home")) + switch(SSshuttle.moveShuttle("laborcamp", "laborcamp_home", TRUE)) if(1) - to_chat(usr, "Shuttle not found") + to_chat(usr, "Shuttle not found.") if(2) - to_chat(usr, "Shuttle already at station") + to_chat(usr, "Shuttle already at station.") if(3) to_chat(usr, "No permission to dock could be granted.") else @@ -128,15 +135,10 @@ /obj/machinery/mineral/stacking_machine/laborstacker - var/points = 0 //The unclaimed value of ore stacked. Value for each ore loosely relative to its rarity. - var/list/ore_values = list("glass" = 1, "metal" = 2, "reinforced glass" = 4, "gold" = 20, "silver" = 20, "uranium" = 20, "titanium" = 20, "solid plasma" = 20, "plasteel" = 23, "plasma glass" = 23, "diamond" = 25, "bluespace polycrystal" = 30, "plastitanium" = 45, "bananium" = 50) + var/points = 0 //The unclaimed value of ore stacked. /obj/machinery/mineral/stacking_machine/laborstacker/process_sheet(obj/item/stack/sheet/inp) - if(istype(inp)) - var/n = inp.name - var/a = inp.amount - if(n in ore_values) - points += ore_values[n] * a + points += inp.point_value * inp.amount ..() @@ -147,7 +149,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "console" density = FALSE - anchored = TRUE /obj/machinery/mineral/labor_points_checker/attack_hand(mob/user) . = ..() diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index dbd08fe860..79adcdf9d8 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -11,7 +11,7 @@ desc = "It's watching you suspiciously." /obj/structure/closet/crate/necropolis/tendril/PopulateContents() - var/loot = rand(1,27) + var/loot = rand(1,28) switch(loot) if(1) new /obj/item/shared_storage/red(src) @@ -75,6 +75,8 @@ if(27) new /obj/item/borg/upgrade/modkit/lifesteal(src) new /obj/item/bedsheet/cult(src) + if(28) + new /obj/item/clothing/neck/necklace/memento_mori(src) //KA modkit design discs /obj/item/disk/design_disk/modkit_disc @@ -187,11 +189,69 @@ activated() /obj/item/rod_of_asclepius/proc/activated() - flags_1 = NODROP_1 | DROPDEL_1 + item_flags = NODROP | DROPDEL desc = "A short wooden rod with a mystical snake inseparably gripping itself and the rod to your forearm. It flows with a healing energy that disperses amongst yourself and those around you. " icon_state = "asclepius_active" activated = TRUE +//Memento Mori +/obj/item/clothing/neck/necklace/memento_mori + name = "Memento Mori" + desc = "A mysterious pendant. An inscription on it says: \"Certain death tomorrow means certain life today.\"" + icon = 'icons/obj/lavaland/artefacts.dmi' + icon_state = "memento_mori" + actions_types = list(/datum/action/item_action/hands_free/memento_mori) + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + var/mob/living/carbon/human/active_owner + +/obj/item/clothing/neck/necklace/memento_mori/item_action_slot_check(slot) + return slot == SLOT_NECK + +/obj/item/clothing/neck/necklace/memento_mori/dropped(mob/user) + ..() + if(active_owner) + mori() + +//Just in case +/obj/item/clothing/neck/necklace/memento_mori/Destroy() + if(active_owner) + mori() + return ..() + +/obj/item/clothing/neck/necklace/memento_mori/proc/memento(mob/living/carbon/human/user) + to_chat(user, "You feel your life being drained by the pendant...") + if(do_after(user, 40, target = user)) + to_chat(user, "Your lifeforce is now linked to the pendant! You feel like removing it would kill you, and yet you instinctively know that until then, you won't die.") + user.add_trait(TRAIT_NODEATH, "memento_mori") + user.add_trait(TRAIT_NOHARDCRIT, "memento_mori") + user.add_trait(TRAIT_NOCRITDAMAGE, "memento_mori") + icon_state = "memento_mori_active" + active_owner = user + +/obj/item/clothing/neck/necklace/memento_mori/proc/mori() + icon_state = "memento_mori" + if(!active_owner) + return + var/mob/living/carbon/human/H = active_owner //to avoid infinite looping when dust unequips the pendant + active_owner = null + to_chat(H, "You feel your life rapidly slipping away from you!") + H.dust(TRUE, TRUE) + +/datum/action/item_action/hands_free/memento_mori + check_flags = NONE + name = "Memento Mori" + desc = "Bind your life to the pendant." + +/datum/action/item_action/hands_free/memento_mori/Trigger() + var/obj/item/clothing/neck/necklace/memento_mori/MM = target + if(!MM.active_owner) + if(ishuman(owner)) + MM.memento(owner) + else + to_chat(owner, "You try to free your lifeforce from the pendant...") + if(do_after(owner, 40, target = owner)) + MM.mori() + //Wisp Lantern /obj/item/wisp_lantern name = "spooky lantern" @@ -206,26 +266,29 @@ /obj/item/wisp_lantern/attack_self(mob/user) if(!wisp) to_chat(user, "The wisp has gone missing!") + icon_state = "lantern" return + if(wisp.loc == src) to_chat(user, "You release the wisp. It begins to bob around your head.") - user.sight |= SEE_MOBS icon_state = "lantern" wisp.orbit(user, 20) + user.update_sight() SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Freed") else to_chat(user, "You return the wisp to the lantern.") + var/mob/target if(wisp.orbiting) - var/atom/A = wisp.orbiting.orbiting - if(isliving(A)) - var/mob/living/M = A - M.sight &= ~SEE_MOBS - to_chat(M, "Your vision returns to normal.") - + target = wisp.orbiting.orbiting wisp.stop_orbit() wisp.forceMove(src) + + if (istype(target)) + target.update_sight() + to_chat(target, "Your vision returns to normal.") + icon_state = "lantern-blue" SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned") @@ -248,6 +311,8 @@ icon_state = "orb" light_range = 7 layer = ABOVE_ALL_MOB_LAYER + var/sight_flags = SEE_MOBS + var/lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE //Red/Blue Cubes /obj/item/warp_cube @@ -307,6 +372,7 @@ /obj/effect/warp_cube mouse_opacity = MOUSE_OPACITY_TRANSPARENT + anchored = TRUE /obj/effect/warp_cube/ex_act(severity, target) return @@ -322,7 +388,7 @@ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' fire_sound = 'sound/weapons/batonextend.ogg' max_charges = 1 - flags_1 = NOBLUDGEON_1 + item_flags = NEEDS_PERMIT | NOBLUDGEON force = 18 /obj/item/ammo_casing/magic/hook @@ -529,7 +595,7 @@ to_chat(user, "You unfold the ladder. It extends much farther than you were expecting.") var/last_ladder = null for(var/i in 1 to world.maxz) - if(is_centcom_level(i) || is_transit_level(i) || is_reebe(i) || is_away_level(i)) + if(is_centcom_level(i) || is_reserved_level(i) || is_reebe(i) || is_away_level(i)) continue var/turf/T2 = locate(ladder_x, ladder_y, i) last_ladder = new /obj/structure/ladder/unbreakable/jacob(T2, null, last_ladder) @@ -855,8 +921,8 @@ var/old_name = T.name if(T.TerraformTurf(turf_type)) user.visible_message("[user] turns \the [old_name] into [transform_string]!") - message_admins("[key_name_admin(user)] fired the lava staff at [get_area(target)]. [ADMIN_COORDJMP(T)]") - log_game("[key_name(user)] fired the lava staff at [get_area(target)] [COORD(T)].") + message_admins("[ADMIN_LOOKUPFLW(user)] fired the lava staff at [ADMIN_VERBOSEJMP(T)]") + log_game("[key_name(user)] fired the lava staff at [AREACOORD(T)].") timer = world.time + create_cooldown playsound(T,'sound/magic/fireball.ogg', 200, 1) else @@ -908,7 +974,7 @@ INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H) to_chat(user, "You shatter the bottle!") playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1) - message_admins("[key_name_admin(user)][ADMIN_FLW(user)] has activated a bottle of mayhem!") + message_admins("[ADMIN_LOOKUPFLW(user)] has activated a bottle of mayhem!") add_logs(user, null, "activated a bottle of mayhem", src) qdel(src) @@ -948,7 +1014,7 @@ var/mob/living/L = choice - message_admins("[key_name_admin(L)][ADMIN_FLW(L)] has been marked for death by [key_name_admin(user)]!") + message_admins("[ADMIN_LOOKUPFLW(L)] has been marked for death by [ADMIN_LOOKUPFLW(user)]!") var/datum/objective/survive/survive = new survive.owner = L.mind @@ -1166,7 +1232,7 @@ INVOKE_ASYNC(src, .proc/prepare_icon_update) beacon.icon_state = "hierophant_tele_off" return - add_logs(user, beacon, "teleported self from ([source.x],[source.y],[source.z]) to") + add_logs(user, beacon, "teleported self from [AREACOORD(source)] to") new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, user) new /obj/effect/temp_visual/hierophant/telegraph/teleport(source, user) for(var/t in RANGE_TURFS(1, T)) @@ -1213,7 +1279,7 @@ return M.visible_message("[M] fades in!") if(user != M) - add_logs(user, M, "teleported", null, "from ([source.x],[source.y],[source.z])") + add_logs(user, M, "teleported", null, "from [AREACOORD(source)]") /obj/item/hierophant_club/proc/cardinal_blasts(turf/T, mob/living/user) //fire cardinal cross blasts with a delay if(!T) diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index c7ba9ad6f4..026170da09 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -17,7 +17,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "console" density = TRUE - anchored = TRUE var/obj/machinery/mineral/processing_unit/machine = null var/machinedir = EAST speed_process = TRUE @@ -74,7 +73,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "furnace" density = TRUE - anchored = TRUE var/obj/machinery/mineral/CONSOLE = null var/on = FALSE var/selected_material = MAT_METAL @@ -84,7 +82,7 @@ /obj/machinery/mineral/processing_unit/Initialize() . = ..() proximity_monitor = new(src, 1) - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, FALSE, list(/obj/item/stack)) + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, TRUE, list(/obj/item/stack)) stored_research = new /datum/techweb/specialized/autounlocking/smelter /obj/machinery/mineral/processing_unit/Destroy() diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index d4735d1c75..3529214609 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -7,7 +7,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "ore_redemption" density = TRUE - anchored = TRUE input_dir = NORTH output_dir = SOUTH req_access = list(ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index 0f84d11082..dcc9034e2d 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -6,7 +6,6 @@ icon_state = "console" desc = "Controls a stacking machine... in theory." density = FALSE - anchored = TRUE circuit = /obj/item/circuitboard/machine/stacking_unit_console var/obj/machinery/mineral/stacking_machine/machine var/machinedir = SOUTHEAST @@ -71,7 +70,6 @@ icon_state = "stacker" desc = "A machine that automatically stacks acquired materials. Controlled by a nearby console." density = TRUE - anchored = TRUE circuit = /obj/item/circuitboard/machine/stacking_machine var/obj/machinery/mineral/stacking_unit_console/CONSOLE var/stk_types = list() @@ -107,8 +105,8 @@ stack_list[inp.type] = s var/obj/item/stack/sheet/storage = stack_list[inp.type] storage.amount += inp.amount //Stack the sheets - qdel(inp) //Let the old sheet garbage collect while(storage.amount > stack_amt) //Get rid of excessive stackage var/obj/item/stack/sheet/out = new inp.type(null, stack_amt) unload_mineral(out) storage.amount -= stack_amt + qdel(inp) //Let the old sheet garbage collect diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machine_unloading.dm index 380509f415..e84c2d6d0d 100644 --- a/code/modules/mining/machine_unloading.dm +++ b/code/modules/mining/machine_unloading.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "unloader" density = TRUE - anchored = TRUE input_dir = WEST output_dir = EAST speed_process = TRUE diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 3a188b7ab2..a9230195ac 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -6,11 +6,10 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "mining" density = TRUE - anchored = TRUE circuit = /obj/item/circuitboard/machine/mining_equipment_vendor var/icon_deny = "mining-deny" var/obj/item/card/id/inserted_id - var/list/prize_list = list( //if you add something to this, please, for the love of god, use tabs and not spaces. + var/list/prize_list = list( //if you add something to this, please, for the love of god, sort it by price/type. use tabs and not spaces. new /datum/data/mining_equipment("1 Marker Beacon", /obj/item/stack/marker_beacon, 10), new /datum/data/mining_equipment("10 Marker Beacons", /obj/item/stack/marker_beacon/ten, 100), new /datum/data/mining_equipment("30 Marker Beacons", /obj/item/stack/marker_beacon/thirty, 300), @@ -18,9 +17,8 @@ new /datum/data/mining_equipment("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 100), new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150), new /datum/data/mining_equipment("Soap", /obj/item/soap/nanotrasen, 200), - new /datum/data/mining_equipment("Laser Pointer", /obj/item/laser_pointer, 300), + new /datum/data/mining_equipment("Laser Pointer", /obj/item/laser_pointer, 300), new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300), - new /datum/data/mining_equipment("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800), new /datum/data/mining_equipment("Stabilizing Serum", /obj/item/hivelordstabilizer, 400), new /datum/data/mining_equipment("Fulton Beacon", /obj/item/fulton_core, 400), new /datum/data/mining_equipment("Shelter Capsule", /obj/item/survivalcapsule, 400), @@ -30,9 +28,10 @@ new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 500), new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600), new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600), - new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750), + new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750), new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/required/kinetic_crusher, 750), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), + new /datum/data/mining_equipment("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800), new /datum/data/mining_equipment("Resonator", /obj/item/resonator, 800), new /datum/data/mining_equipment("Fulton Pack", /obj/item/extraction_pack, 1000), new /datum/data/mining_equipment("Lazarus Injector", /obj/item/lazarus_injector, 1000), @@ -46,8 +45,8 @@ new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000), new /datum/data/mining_equipment("Nanotrasen Minebot", /mob/living/simple_animal/hostile/mining_drone, 800), - new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400), - new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400), + new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400), + new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400), new /datum/data/mining_equipment("Minebot Cooldown Upgrade", /obj/item/borg/upgrade/modkit/cooldown/minebot, 600), new /datum/data/mining_equipment("Minebot AI Upgrade", /obj/item/slimepotion/slime/sentience/mining, 1000), new /datum/data/mining_equipment("KA Minebot Passthrough", /obj/item/borg/upgrade/modkit/minebot_passthrough, 100), @@ -128,7 +127,7 @@ flick(icon_deny, src) return if(prize.cost > inserted_id.mining_points) - to_chat(usr, "Error: Insufficent points for [prize.equipment_name]!") + to_chat(usr, "Error: Insufficient points for [prize.equipment_name]!") flick(icon_deny, src) else inserted_id.mining_points -= prize.cost @@ -172,8 +171,6 @@ if("Survival Capsule and Explorer's Webbing") new /obj/item/storage/belt/mining/vendor(drop_location) if("Resonator Kit") - new /obj/item/storage/belt/mining/alt(drop_location) - new /obj/item/t_scanner/adv_mining_scanner(drop_location) new /obj/item/extinguisher/mini(drop_location) new /obj/item/resonator(drop_location) if("Minebot Kit") @@ -186,8 +183,6 @@ new /obj/item/fulton_core(drop_location) new /obj/item/stack/marker_beacon/thirty(drop_location) if("Crusher Kit") - new /obj/item/storage/belt/mining/alt(drop_location) - new /obj/item/t_scanner/adv_mining_scanner(drop_location) new /obj/item/extinguisher/mini(drop_location) new /obj/item/twohanded/required/kinetic_crusher(drop_location) if("Mining Conscription Kit") diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index 23d8d816d4..3809514f02 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -299,7 +299,7 @@ /obj/item/slimepotion/slime/sentience/mining name = "minebot AI upgrade" - desc = "Can be used to grant sentience to minebots. Is incompatable with minebot armor and melee upgrades, and will override them." + desc = "Can be used to grant sentience to minebots. It's incompatible with minebot armor and melee upgrades, and will override them." icon_state = "door_electronics" icon = 'icons/obj/module.dmi' sentience_type = SENTIENCE_MINEBOT diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index b7cc0db43f..66b6b94d6c 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/economy.dmi' icon_state = "coinpress0" density = TRUE - anchored = TRUE var/newCoins = 0 //how many coins the machine made in it's last load var/processing = FALSE var/chosen = MAT_METAL //which material will be used to make coins diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 62ef7bde65..9e4e1bbb53 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -263,25 +263,24 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1) icon_state = "Gibtonite active" var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) var/notify_admins = 0 if(z != 5)//Only annoy the admins ingame if we're triggered off the mining zlevel notify_admins = 1 if(notify_admins) if(triggered_by == 1) - message_admins("An explosion has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)].") + message_admins("An explosion has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)].") else if(triggered_by == 2) - message_admins("A signal has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)]. Igniter attacher: [ADMIN_LOOKUPFLW(attacher)]") + message_admins("A signal has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)]. Igniter attacher: [ADMIN_LOOKUPFLW(attacher)]") else - message_admins("[ADMIN_LOOKUPFLW(attacher)] has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)].") + message_admins("[ADMIN_LOOKUPFLW(attacher)] has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)].") if(triggered_by == 1) - log_game("An explosion has primed a [name] for detonation at [A][COORD(bombturf)]") + log_game("An explosion has primed a [name] for detonation at [AREACOORD(bombturf)]") else if(triggered_by == 2) - log_game("A signal has primed a [name] for detonation at [A][COORD(bombturf)]. Igniter attacher: [key_name(attacher)].") + log_game("A signal has primed a [name] for detonation at [AREACOORD(bombturf)]. Igniter attacher: [key_name(attacher)].") else user.visible_message("[user] strikes \the [src], causing a chain reaction!", "You strike \the [src], causing a chain reaction.") - log_game("[key_name(user)] has primed a [name] for detonation at [A][COORD(bombturf)]") + log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(bombturf)]") det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE) /obj/item/twohanded/required/gibtonite/proc/detonate(notify_admins) @@ -338,7 +337,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ var/index = sideslist.Find(coinflip) message_admins("coinflip landed on [coinflip] which is [index] in sideslist") if (index==2)//tails - user.visible_message("\the [src] lands on [coinflip]! [user] promply falls over, dead!") + user.visible_message("\the [src] lands on [coinflip]! [user] promptly falls over, dead!") user.adjustOxyLoss(200) user.death(0) else diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index 78f4676d4e..b158815dac 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -12,8 +12,8 @@ /obj/structure/ore_box/attackby(obj/item/W, mob/user, params) if (istype(W, /obj/item/stack/ore)) user.transferItemToLoc(W, src) - else if(W.SendSignal(COMSIG_CONTAINS_STORAGE)) - W.SendSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/stack/ore, src) + else if(SEND_SIGNAL(W, COMSIG_CONTAINS_STORAGE)) + SEND_SIGNAL(W, COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/stack/ore, src) to_chat(user, "You empty the ore in [W] into \the [src].") else return ..() diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index 3daf9c8fe4..30173c0a32 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -6,9 +6,9 @@ INITIALIZE_IMMEDIATE(/mob/dead) sight = SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF /mob/dead/Initialize() - if(initialized) + if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") - initialized = TRUE + flags_1 |= INITIALIZED_1 tag = "mob_[next_mob_id++]" GLOB.mob_list += src diff --git a/code/modules/mob/dead/new_player/login.dm b/code/modules/mob/dead/new_player/login.dm index 8a97180588..c93d9e05aa 100644 --- a/code/modules/mob/dead/new_player/login.dm +++ b/code/modules/mob/dead/new_player/login.dm @@ -11,7 +11,7 @@ var/motd = global.config.motd if(motd) - to_chat(src, "
    [motd]
    ") + to_chat(src, "
    [motd]
    ", handle_whitespace=FALSE) if(GLOB.admin_notice) to_chat(src, "Admin Notice:\n \t [GLOB.admin_notice]") diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 9de78d307d..14bd0ffaab 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -10,7 +10,7 @@ density = FALSE stat = DEAD - canmove = 0 + canmove = FALSE anchored = TRUE // don't get pushed around var/mob/living/new_character //for instant transfer once the round is set up @@ -54,15 +54,19 @@ if(src.client && src.client.holder) isadmin = 1 var/datum/DBQuery/query_get_new_polls = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE [(isadmin ? "" : "adminonly = false AND")] Now() BETWEEN starttime AND endtime AND id NOT IN (SELECT pollid FROM [format_table_name("poll_vote")] WHERE ckey = \"[ckey]\") AND id NOT IN (SELECT pollid FROM [format_table_name("poll_textreply")] WHERE ckey = \"[ckey]\")") + var/rs = REF(src) if(query_get_new_polls.Execute()) var/newpoll = 0 if(query_get_new_polls.NextRow()) newpoll = 1 if(newpoll) - output += "

    Show Player Polls (NEW!)

    " + output += "

    Show Player Polls (NEW!)

    " else - output += "

    Show Player Polls

    " + output += "

    Show Player Polls

    " + qdel(query_get_new_polls) + if(QDELETED(src)) + return output += "
    " @@ -71,8 +75,6 @@ popup.set_window_options("can_close=0") popup.set_content(output) popup.open(0) - return - /mob/dead/new_player/Topic(href, href_list[]) if(src != usr) @@ -310,6 +312,8 @@ return JOB_UNAVAILABLE_SLOTFULL if(jobban_isbanned(src,rank)) return JOB_UNAVAILABLE_BANNED + if(QDELETED(src)) + return JOB_UNAVAILABLE_GENERIC if(!job.player_old_enough(client)) return JOB_UNAVAILABLE_ACCOUNTAGE if(job.required_playtime_remaining(client)) @@ -377,11 +381,6 @@ if(GLOB.highlander) to_chat(humanc, "THERE CAN BE ONLY ONE!!!") humanc.make_scottish() -/* if(prob(5) && !issilicon(humanc) && !jobban_isbanned(humanc.mind, "Syndicate") && GLOB.miscreants_allowed && ROLE_MISCREANT in humanc.client.prefs.be_special) - SSticker.generate_miscreant_objectives(humanc.mind) - else - if(CONFIG_GET(flag/allow_crew_objectives)) - SSticker.generate_individual_objectives(humanc.mind) */ if(GLOB.summon_guns_triggered) give_guns(humanc) @@ -480,7 +479,12 @@ var/mob/living/carbon/human/H = new(loc) - if(CONFIG_GET(flag/force_random_names) || jobban_isbanned(src, "appearance")) + var/frn = CONFIG_GET(flag/force_random_names) + if(!frn) + frn = jobban_isbanned(src, "appearance") + if(QDELETED(src)) + return + if(frn) client.prefs.random_character() client.prefs.real_name = client.prefs.pref_species.random_name(gender,1) client.prefs.copy_to(H) diff --git a/code/modules/mob/dead/new_player/poll.dm b/code/modules/mob/dead/new_player/poll.dm index ce710e5186..388f63961b 100644 --- a/code/modules/mob/dead/new_player/poll.dm +++ b/code/modules/mob/dead/new_player/poll.dm @@ -8,16 +8,20 @@ return var/datum/DBQuery/query_poll_get = SSdbcore.NewQuery("SELECT id, question FROM [format_table_name("poll_question")] WHERE Now() BETWEEN starttime AND endtime [(client.holder ? "" : "AND adminonly = false")]") if(!query_poll_get.warn_execute()) + qdel(query_poll_get) return var/output = "
    Player polls
    " var/i = 0 + var/rs = REF(src) while(query_poll_get.NextRow()) var/pollid = query_poll_get.item[1] var/pollquestion = query_poll_get.item[2] - output += "" + output += "" i++ + qdel(query_poll_get) output += "
    [pollquestion]
    [pollquestion]
    " - src << browse(output,"window=playerpolllist;size=500x300") + if(!QDELETED(src)) + src << browse(output,"window=playerpolllist;size=500x300") /mob/dead/new_player/proc/poll_player(pollid) if(!pollid) @@ -27,6 +31,7 @@ return var/datum/DBQuery/query_poll_get_details = SSdbcore.NewQuery("SELECT starttime, endtime, question, polltype, multiplechoiceoptions FROM [format_table_name("poll_question")] WHERE id = [pollid]") if(!query_poll_get_details.warn_execute()) + qdel(query_poll_get_details) return var/pollstarttime = "" var/pollendtime = "" @@ -39,23 +44,28 @@ pollquestion = query_poll_get_details.item[3] polltype = query_poll_get_details.item[4] multiplechoiceoptions = text2num(query_poll_get_details.item[5]) + qdel(query_poll_get_details) switch(polltype) if(POLLTYPE_OPTION) var/datum/DBQuery/query_option_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_option_get_votes.warn_execute()) + qdel(query_option_get_votes) return var/votedoptionid = 0 if(query_option_get_votes.NextRow()) votedoptionid = text2num(query_option_get_votes.item[1]) + qdel(query_option_get_votes) var/list/datum/polloption/options = list() var/datum/DBQuery/query_option_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") if(!query_option_options.warn_execute()) + qdel(query_option_options) return while(query_option_options.NextRow()) var/datum/polloption/PO = new() PO.optionid = text2num(query_option_options.item[1]) PO.optiontext = query_option_options.item[2] options += PO + qdel(query_option_options) var/output = "
    Player poll
    " output += "Question: [pollquestion]
    " output += "Poll runs from [pollstarttime] until [pollendtime]

    " @@ -84,10 +94,12 @@ if(POLLTYPE_TEXT) var/datum/DBQuery/query_text_get_votes = SSdbcore.NewQuery("SELECT replytext FROM [format_table_name("poll_textreply")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_text_get_votes.warn_execute()) + qdel(query_text_get_votes) return var/vote_text = "" if(query_text_get_votes.NextRow()) vote_text = query_text_get_votes.item[1] + qdel(query_text_get_votes) var/output = "

    Player poll
    " output += "Question: [pollquestion]
    " output += "Feedback gathering runs from [pollstarttime] until [pollendtime]

    " @@ -113,6 +125,7 @@ if(POLLTYPE_RATING) var/datum/DBQuery/query_rating_get_votes = SSdbcore.NewQuery("SELECT o.text, v.rating FROM [format_table_name("poll_option")] o, [format_table_name("poll_vote")] v WHERE o.pollid = [pollid] AND v.ckey = '[ckey]' AND o.id = v.optionid") if(!query_rating_get_votes.warn_execute()) + qdel(query_rating_get_votes) return var/output = "

    Player poll
    " output += "Question: [pollquestion]
    " @@ -122,6 +135,7 @@ var/optiontext = query_rating_get_votes.item[1] rating = query_rating_get_votes.item[2] output += "
    [optiontext] - [rating]" + qdel(query_rating_get_votes) if(!rating) output += "
    " output += "" @@ -131,6 +145,7 @@ var/maxid = 0 var/datum/DBQuery/query_rating_options = SSdbcore.NewQuery("SELECT id, text, minval, maxval, descmin, descmid, descmax FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") if(!query_rating_options.warn_execute()) + qdel(query_rating_options) return while(query_rating_options.NextRow()) var/optionid = text2num(query_rating_options.item[1]) @@ -157,23 +172,28 @@ else output += "" output += "" + qdel(query_rating_options) output += "" output += "" output += "

    " - src << browse(null ,"window=playerpolllist") - src << browse(output,"window=playerpoll;size=500x500") + if(!QDELETED(src)) + src << browse(null ,"window=playerpolllist") + src << browse(output,"window=playerpoll;size=500x500") if(POLLTYPE_MULTI) var/datum/DBQuery/query_multi_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_multi_get_votes.warn_execute()) + qdel(query_multi_get_votes) return var/list/votedfor = list() while(query_multi_get_votes.NextRow()) votedfor.Add(text2num(query_multi_get_votes.item[1])) + qdel(query_multi_get_votes) var/list/datum/polloption/options = list() var/maxoptionid = 0 var/minoptionid = 0 var/datum/DBQuery/query_multi_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") if(!query_multi_options.warn_execute()) + qdel(query_multi_options) return while(query_multi_options.NextRow()) var/datum/polloption/PO = new() @@ -184,6 +204,7 @@ if(PO.optionid < minoptionid || !minoptionid) minoptionid = PO.optionid options += PO + qdel(query_multi_options) var/output = "
    Player poll
    " output += "Question: [pollquestion]
    You can select up to [multiplechoiceoptions] options. If you select more, the first [multiplechoiceoptions] will be saved.
    " output += "Poll runs from [pollstarttime] until [pollendtime]

    " @@ -216,22 +237,26 @@ var/datum/DBQuery/query_irv_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_irv_get_votes.warn_execute()) + qdel(query_irv_get_votes) return var/list/votedfor = list() while(query_irv_get_votes.NextRow()) votedfor.Add(text2num(query_irv_get_votes.item[1])) + qdel(query_irv_get_votes) var/list/datum/polloption/options = list() var/datum/DBQuery/query_irv_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") if(!query_irv_options.warn_execute()) + qdel(query_irv_options) return while(query_irv_options.NextRow()) var/datum/polloption/PO = new() PO.optionid = text2num(query_irv_options.item[1]) PO.optiontext = query_irv_options.item[2] options["[PO.optionid]"] += PO + qdel(query_irv_options) //if they already voted, use their sort if (votedfor.len) @@ -332,10 +357,13 @@ return var/datum/DBQuery/query_hasvoted = SSdbcore.NewQuery("SELECT id FROM `[format_table_name(table)]` WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_hasvoted.warn_execute()) + qdel(query_hasvoted) return if(query_hasvoted.NextRow()) + qdel(query_hasvoted) to_chat(usr, "You've already replied to this poll.") return + qdel(query_hasvoted) . = "Player" if(client.holder) . = client.holder.rank.name @@ -364,9 +392,12 @@ //validate the poll is actually the right type of poll and its still active var/datum/DBQuery/query_validate_poll = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE id = [pollid] AND Now() BETWEEN starttime AND endtime AND polltype = '[type]' [(holder ? "" : "AND adminonly = false")]") if(!query_validate_poll.warn_execute()) + qdel(query_validate_poll) return 0 if (!query_validate_poll.NextRow()) + qdel(query_validate_poll) return 0 + qdel(query_validate_poll) return 1 /mob/dead/new_player/proc/vote_on_irv_poll(pollid, list/votelist) @@ -397,10 +428,12 @@ //lets collect the options var/datum/DBQuery/query_irv_id = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_option")] WHERE pollid = [pollid]") if(!query_irv_id.warn_execute()) + qdel(query_irv_id) return 0 var/list/optionlist = list() while (query_irv_id.NextRow()) optionlist += text2num(query_irv_id.item[1]) + qdel(query_irv_id) //validate their votes are actually in the list of options and actually numbers var/list/numberedvotelist = list() @@ -428,13 +461,18 @@ //now lets delete their old votes (if any) var/datum/DBQuery/query_irv_del_old = SSdbcore.NewQuery("DELETE FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_irv_del_old.warn_execute()) + qdel(query_irv_del_old) return 0 + qdel(query_irv_del_old) //now to add the new ones. var/datum/DBQuery/query_irv_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES [sqlrowlist]") if(!query_irv_vote.warn_execute()) + qdel(query_irv_vote) return 0 - src << browse(null,"window=playerpoll") + qdel(query_irv_vote) + if(!QDELETED(src)) + src << browse(null,"window=playerpoll") return 1 @@ -454,8 +492,11 @@ return var/datum/DBQuery/query_option_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]')") if(!query_option_vote.warn_execute()) + qdel(query_option_vote) return - usr << browse(null,"window=playerpoll") + qdel(query_option_vote) + if(!QDELETED(usr)) + usr << browse(null,"window=playerpoll") return 1 /mob/dead/new_player/proc/log_text_poll_reply(pollid, replytext) @@ -481,8 +522,11 @@ return var/datum/DBQuery/query_text_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_textreply")] (datetime ,pollid ,ckey ,ip ,replytext ,adminrank) VALUES (Now(), [pollid], '[ckey]', INET_ATON('[client.address]'), '[replytext]', '[adminrank]')") if(!query_text_vote.warn_execute()) + qdel(query_text_vote) return - usr << browse(null,"window=playerpoll") + qdel(query_text_vote) + if(!QDELETED(usr)) + usr << browse(null,"window=playerpoll") return 1 /mob/dead/new_player/proc/vote_on_numval_poll(pollid, optionid, rating) @@ -498,18 +542,24 @@ return 0 var/datum/DBQuery/query_numval_hasvoted = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE optionid = [optionid] AND ckey = '[ckey]'") if(!query_numval_hasvoted.warn_execute()) + qdel(query_numval_hasvoted) return if(query_numval_hasvoted.NextRow()) + qdel(query_numval_hasvoted) to_chat(usr, "You've already replied to this poll.") return + qdel(query_numval_hasvoted) var/adminrank = "Player" if(client.holder) adminrank = client.holder.rank.name adminrank = sanitizeSQL(adminrank) var/datum/DBQuery/query_numval_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime ,pollid ,optionid ,ckey ,ip ,adminrank, rating) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]', [(isnull(rating)) ? "null" : rating])") if(!query_numval_vote.warn_execute()) + qdel(query_numval_vote) return - usr << browse(null,"window=playerpoll") + qdel(query_numval_vote) + if(!QDELETED(usr)) + usr << browse(null,"window=playerpoll") return 1 /mob/dead/new_player/proc/vote_on_multi_poll(pollid, optionid) @@ -525,26 +575,33 @@ return 0 var/datum/DBQuery/query_multi_choicelen = SSdbcore.NewQuery("SELECT multiplechoiceoptions FROM [format_table_name("poll_question")] WHERE id = [pollid]") if(!query_multi_choicelen.warn_execute()) + qdel(query_multi_choicelen) return 1 var/i if(query_multi_choicelen.NextRow()) - i = text2num(query_multi_choicelen.item[1]) + i = text2num(query_multi_choicelen.item[1]) + qdel(query_multi_choicelen) var/datum/DBQuery/query_multi_hasvoted = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_multi_hasvoted.warn_execute()) + qdel(query_multi_hasvoted) return 1 while(i) if(query_multi_hasvoted.NextRow()) i-- else break + qdel(query_multi_hasvoted) if(!i) return 2 var/adminrank = "Player" - if(client.holder) + if(!QDELETED(client) && client.holder) adminrank = client.holder.rank.name adminrank = sanitizeSQL(adminrank) var/datum/DBQuery/query_multi_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]')") if(!query_multi_vote.warn_execute()) + qdel(query_multi_vote) return 1 - usr << browse(null,"window=playerpoll") + qdel(query_multi_vote) + if(!QDELETED(usr)) + usr << browse(null,"window=playerpoll") return 0 diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm index 8699e02b29..13ede8ef04 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -68,7 +68,7 @@ icon = 'icons/mob/human_face.dmi' // default icon for all hairs /datum/sprite_accessory/hair/short - name = "Short Hair" // try to capatilize the names please~ // try to spell + name = "Short Hair" // try to capitalize the names please~ // try to spell icon_state = "hair_a" // you do not need to define _s or _l sub-states, game automatically does this for you /datum/sprite_accessory/hair/shorthair2 @@ -777,6 +777,32 @@ icon_state = "female_commie" gender = FEMALE +/datum/sprite_accessory/underwear/swimsuit + name = "Ladies Black Swimsuit" + icon_state = "swim_black" + gender = FEMALE + +/datum/sprite_accessory/underwear/swimsuit_blue + name = "Ladies Blue Swimsuit" + icon_state = "swim_blue" + gender = FEMALE + +/datum/sprite_accessory/underwear/swimsuit_green + name = "Ladies Green Swimsuit" + icon_state = "swim_green" + gender = FEMALE + +/datum/sprite_accessory/underwear/swimsuit_purple + name = "Ladies Purple Swimsuit" + icon_state = "swim_purple" + gender = FEMALE + +/datum/sprite_accessory/underwear/swimsuit_red + name = "Ladies Red Swimsuit" + icon_state = "swim_red" + gender = FEMALE + + //////////////////////////// // Undershirt Definitions // //////////////////////////// diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index e11a4fc886..7655e8e1d7 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -79,7 +79,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) var/mob/body = loc if(ismob(body)) T = get_turf(body) //Where is the body located? - logging = body.logging //preserve our logs by copying them to our ghost gender = body.gender if(body.mind && body.mind.name) @@ -623,7 +622,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp //this is a mob verb instead of atom for performance reasons //see /mob/verb/examinate() in mob.dm for more info -//overriden here and in /mob/living for different point span classes and sanity checks +//overridden here and in /mob/living for different point span classes and sanity checks /mob/dead/observer/pointed(atom/A as mob|obj|turf in view()) if(!..()) return 0 diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm index c8cf1a5f1b..7e8a493f7a 100644 --- a/code/modules/mob/dead/observer/say.dm +++ b/code/modules/mob/dead/observer/say.dm @@ -1,9 +1,20 @@ /mob/dead/observer/say(message) message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - if (!message) return + var/message_mode = get_message_mode(message) + if(client && (message_mode == "admin" || message_mode == "deadmin")) + message = copytext(message, 3) + if(findtext(message, " ", 1, 2)) + message = copytext(message, 2) + + if(message_mode == "admin") + client.cmd_admin_say(message) + else if(message_mode == "deadmin") + client.dsay(message) + return + log_talk(src,"Ghost/[src.key] : [message]", LOGSAY) if(check_emote(message)) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 4e945b437f..494536ebfa 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -136,7 +136,7 @@ //To appropriately fluff things like "they are holding [I] in their [get_held_index_name(get_held_index_of_item(I))]" -//Can be overriden to pass off the fluff to something else (eg: science allowing people to add extra robotic limbs, and having this proc react to that +//Can be overridden to pass off the fluff to something else (eg: science allowing people to add extra robotic limbs, and having this proc react to that // with say "they are holding [I] in their Nanotrasen Brand Utility Arm - Right Edition" or w/e /mob/proc/get_held_index_name(i) var/list/hand = list() @@ -200,7 +200,7 @@ /mob/proc/put_in_hand_check(obj/item/I) - if(incapacitated() && !(I.flags_1&ABSTRACT_1)) //Cit change - Changes lying to incapacitated so that it's plausible to pick things up while on the ground + if(incapacitated() && !(I.item_flags&ABSTRACT)) //Cit change - Changes lying to incapacitated so that it's plausible to pick things up while on the ground return FALSE if(!istype(I)) return FALSE @@ -272,7 +272,7 @@ /mob/proc/canUnEquip(obj/item/I, force) if(!I) return TRUE - if((I.flags_1 & NODROP_1) && !force) + if((I.item_flags & NODROP) && !force) return FALSE return TRUE @@ -312,7 +312,7 @@ if(!I) //If there's nothing to drop, the drop is automatically succesfull. If(unEquip) should generally be used to check for NODROP_1. return TRUE - if((I.flags_1 & NODROP_1) && !force) + if((I.item_flags & NODROP) && !force) return FALSE var/hand_index = get_held_index_of_item(I) @@ -325,7 +325,7 @@ I.layer = initial(I.layer) I.plane = initial(I.plane) I.appearance_flags &= ~NO_CLIENT_COLOR - if(!no_move && !(I.flags_1 & DROPDEL_1)) //item may be moved/qdel'd immedietely, don't bother moving it + if(!no_move && !(I.item_flags & DROPDEL)) //item may be moved/qdel'd immedietely, don't bother moving it if (isnull(newloc)) I.moveToNullspace() else @@ -379,7 +379,7 @@ /mob/living/proc/unequip_everything() var/list/items = list() - items |= get_equipped_items() + items |= get_equipped_items(TRUE) for(var/I in items) dropItemToGround(I) drop_all_held_items() @@ -396,7 +396,7 @@ if(equip_delay_self) return - if(M.active_storage && M.active_storage.parent && M.active_storage.parent.SendSignal(COMSIG_TRY_STORAGE_INSERT, src,M)) + if(M.active_storage && M.active_storage.parent && SEND_SIGNAL(M.active_storage.parent, COMSIG_TRY_STORAGE_INSERT, src,M)) return TRUE var/list/obj/item/possible = list(M.get_inactive_held_item(), M.get_item_by_slot(SLOT_BELT), M.get_item_by_slot(SLOT_GENERC_DEXTROUS_STORAGE), M.get_item_by_slot(SLOT_BACK)) @@ -404,7 +404,7 @@ if(!i) continue var/obj/item/I = i - if(I.SendSignal(COMSIG_TRY_STORAGE_INSERT, src, M)) + if(SEND_SIGNAL(I, COMSIG_TRY_STORAGE_INSERT, src, M)) return TRUE to_chat(M, "You are unable to equip that!") @@ -441,10 +441,7 @@ held_items.len = amt if(hud_used) - var/style - if(client && client.prefs) - style = ui_style2icon(client.prefs.UI_style) - hud_used.build_hand_slots(style) + hud_used.build_hand_slots() /mob/living/carbon/human/change_number_of_hands(amt) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 05a14ef3b1..393b939448 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -68,8 +68,9 @@ if(prob(15)) Unconscious(rand(20,60)) to_chat(src, "You feel extremely [word].") - if(0 to BLOOD_VOLUME_SURVIVE) - death() + if(-INFINITY to BLOOD_VOLUME_SURVIVE) + if(!has_trait(TRAIT_NODEATH)) + death() var/temp_bleed = 0 //Bleeding out diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 0052cf923d..d70007452c 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -138,7 +138,7 @@ name = "blood crawl" desc = "You are unable to hold anything while in this form." icon = 'icons/effects/blood.dmi' - flags_1 = NODROP_1|ABSTRACT_1 + item_flags = NODROP | ABSTRACT /mob/living/proc/exit_blood_effect(obj/effect/decal/cleanable/B) playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index 802b869d02..bacdc4524b 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -148,6 +148,9 @@ to_chat(brainmob, "Radio is [radio.listening==1 ? "now" : "no longer"] receiving broadcast.") /obj/item/mmi/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return if(!brainmob || iscyborg(loc)) return else @@ -159,7 +162,6 @@ if(3) brainmob.emp_damage = min(brainmob.emp_damage + rand(0,10), 30) brainmob.emote("alarm") - ..() /obj/item/mmi/Destroy() if(iscyborg(loc)) diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index 9c927560d9..864d5d769c 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -34,9 +34,9 @@ GLOBAL_VAR(posibrain_notify_cooldown) if(istype(ghost)) activate(ghost) -/obj/item/mmi/posibrain/proc/ping_ghosts(msg, newlymade) // CITADEL EDIT sound change to 'sound/misc/server-ready.ogg' +/obj/item/mmi/posibrain/proc/ping_ghosts(msg, newlymade) if(newlymade || GLOB.posibrain_notify_cooldown <= world.time) - notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/misc/server-ready.ogg':null, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) + notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) if(!newlymade) GLOB.posibrain_notify_cooldown = world.time + askDelay @@ -68,6 +68,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) else visible_message(fail_message) +//ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/item/mmi/posibrain/attack_ghost(mob/user) activate(user) @@ -84,7 +85,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) /obj/item/mmi/posibrain/proc/activate(mob/user) if(QDELETED(brainmob)) return - if(is_occupied() || jobban_isbanned(user,"posibrain")) + if(is_occupied() || jobban_isbanned(user,"posibrain") || QDELETED(brainmob) || QDELETED(src) || QDELETED(user)) return var/posi_ask = alert("Become a [name]? (Warning, You can no longer be cloned, and all past lives will be forgotten!)","Are you positive?","Yes","No") diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 3b400bcbb8..cdc1b08d21 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -97,7 +97,7 @@ Doesn't work on other aliens/AI.*/ return 0 var/msg = sanitize(input("Message:", "Alien Whisper") as text|null) if(msg) - log_talk(user,"AlienWhisper: [key_name(user)]->[M.key] : [msg]",LOGSAY) + log_talk(user,"AlienWhisper: [key_name(user)]->[key_name(M)] : [msg]",LOGSAY) to_chat(M, "You hear a strange, alien voice in your head...[msg]") to_chat(user, "You said: \"[msg]\" to [M]") for(var/ded in GLOB.dead_mob_list) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm index f8cf430d74..fe61c2a8ff 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm @@ -29,7 +29,7 @@ /obj/effect/proc_holder/alien/royal/praetorian/evolve name = "Evolve" - desc = "Produce an interal egg sac capable of spawning children. Only one queen can exist at a time." + desc = "Produce an internal egg sac capable of spawning children. Only one queen can exist at a time." plasma_cost = 500 action_icon_state = "alien_evolve_praetorian" diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 2216d955c0..eb5e9664d9 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -45,7 +45,7 @@


    "} for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) - dat += "
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]" + dat += "
    [get_held_index_name(i)]:[(I && !(I.item_flags & ABSTRACT)) ? I : "Empty"]" dat += "
    Empty Pouches" if(handcuffed) diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index fb04d174e2..9c61e8aa2d 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -107,7 +107,7 @@ name = "\improper royal parasite" desc = "Inject this into one of your grown children to promote her to a Praetorian!" icon_state = "alien_medal" - flags_1 = ABSTRACT_1|NODROP_1|DROPDEL_1 + item_flags = ABSTRACT | NODROP | DROPDEL icon = 'icons/mob/alien.dmi' /obj/item/queenpromote/attack(mob/living/M, mob/living/carbon/alien/humanoid/user) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index a2813168c0..c3c74b8631 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -169,11 +169,9 @@ var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) if(start_T && end_T) - var/start_T_descriptor = "tile in [get_area_name(start_T, TRUE)] ([start_T.x],[start_T.y],[start_T.z])" - var/end_T_descriptor = "tile at [get_area_name(end_T, TRUE)] ([end_T.x],[end_T.y],[end_T.z])" - add_logs(src, throwable_mob, "thrown", addition="grab from [start_T_descriptor] towards [end_T_descriptor]") + add_logs(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]") - else if(!(I.flags_1 & (NODROP_1|ABSTRACT_1))) + else if(!(I.item_flags & (NODROP | ABSTRACT))) thrown_thing = I dropItemToGround(I) @@ -202,13 +200,13 @@
    [name]
    -
    Head: [(head && !(head.flags_1&ABSTRACT_1)) ? head : "Nothing"] -
    Mask: [(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Nothing"] -
    Neck: [(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Nothing"]"} +
    Head: [(head && !(head.item_flags & ABSTRACT)) ? head : "Nothing"] +
    Mask: [(wear_mask && !(wear_mask.item_flags & ABSTRACT)) ? wear_mask : "Nothing"] +
    Neck: [(wear_neck && !(wear_neck.item_flags & ABSTRACT)) ? wear_neck : "Nothing"]"} for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) - dat += "
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Nothing"]" + dat += "
    [get_held_index_name(i)]:[(I && !(I.item_flags & ABSTRACT)) ? I : "Nothing"]" dat += "
    Back: [back ? back : "Nothing"]" @@ -405,7 +403,7 @@ return initial(pixel_y) /mob/living/carbon/proc/accident(obj/item/I) - if(!I || (I.flags_1 & (NODROP_1|ABSTRACT_1))) + if(!I || (I.item_flags & (NODROP | ABSTRACT))) return //dropItemToGround(I) CIT CHANGE - makes it so the item doesn't drop if the modifier rolls above 100 @@ -499,15 +497,16 @@ break return 1 -/mob/living/carbon/proc/spew_organ(power = 5) - if(!internal_organs.len) - return //Guess we're out of organs - var/obj/item/organ/guts = pick(internal_organs) - var/turf/T = get_turf(src) - guts.Remove(src) - guts.forceMove(T) - var/atom/throw_target = get_edge_target_turf(guts, dir) - guts.throw_at(throw_target, power, 4, src) +/mob/living/carbon/proc/spew_organ(power = 5, amt = 1) + for(var/i in 1 to amt) + if(!internal_organs.len) + break //Guess we're out of organs! + var/obj/item/organ/guts = pick(internal_organs) + var/turf/T = get_turf(src) + guts.Remove(src) + guts.forceMove(T) + var/atom/throw_target = get_edge_target_turf(guts, dir) + guts.throw_at(throw_target, power, 4, src) /mob/living/carbon/fully_replace_character_name(oldname,newname) @@ -739,14 +738,14 @@ if(status_flags & GODMODE) return if(stat != DEAD) - if(health <= HEALTH_THRESHOLD_DEAD) + if(health <= HEALTH_THRESHOLD_DEAD && !has_trait(TRAIT_NODEATH)) death() return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_FAKEDEATH)) || health <= HEALTH_THRESHOLD_FULLCRIT) + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_FAKEDEATH)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !has_trait(TRAIT_NOHARDCRIT))) stat = UNCONSCIOUS blind_eyes(1) else - if(health <= HEALTH_THRESHOLD_CRIT) + if(health <= HEALTH_THRESHOLD_CRIT && !has_trait(TRAIT_NOSOFTCRIT)) stat = SOFT_CRIT else stat = CONSCIOUS @@ -762,10 +761,10 @@ drop_all_held_items() stop_pulling() throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = src.handcuffed) - SendSignal(COMSIG_ADD_MOOD_EVENT, "handcuffed", /datum/mood_event/handcuffed) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "handcuffed", /datum/mood_event/handcuffed) else clear_alert("handcuffed") - SendSignal(COMSIG_CLEAR_MOOD_EVENT, "handcuffed") + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "handcuffed") update_action_buttons_icon() //some of our action buttons might be unusable when we're handcuffed. update_inv_handcuffed() update_hud_handcuffed() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index bcc1c4a4ce..7929a00357 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -71,7 +71,7 @@ affecting = get_bodypart(ran_zone(user.zone_selected)) if(!affecting) //missing limb? we select the first bodypart (you can never have zero, because of chest) affecting = bodyparts[1] - I.SendSignal(COMSIG_ITEM_ATTACK_ZONE, src, user, affecting) + SEND_SIGNAL(I, COMSIG_ITEM_ATTACK_ZONE, src, user, affecting) send_item_attack_message(I, user, affecting.name) if(I.force) //CIT CHANGES START HERE - combatmode and resting checks @@ -214,10 +214,12 @@ adjustBruteLoss(10) /mob/living/carbon/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_CONTENTS) + return for(var/X in internal_organs) var/obj/item/organ/O = X O.emp_act(severity) - ..() /mob/living/carbon/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, safety = 0, override = 0, tesla_shock = 0, illusion = 0, stun = TRUE) if(tesla_shock && (flags_1 & TESLA_IGNORE_1)) @@ -277,12 +279,12 @@ emote("wag") else if(dna && dna.species && ("mam_tail" in dna.species.mutant_bodyparts) && (dna.features["mam_tail"])!= "None") emote("wag") - SendSignal(COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat) else M.visible_message("[M] hugs [src] to make [p_them()] feel better!", \ "You hug [src] to make [p_them()] feel better!") - SendSignal(COMSIG_ADD_MOOD_EVENT, "hug", /datum/mood_event/hug) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "hug", /datum/mood_event/hug) AdjustStun(-60) AdjustKnockdown(-60) AdjustUnconscious(-60) @@ -347,7 +349,7 @@ /mob/living/carbon/soundbang_act(intensity = 1, stun_pwr = 20, damage_pwr = 5, deafen_pwr = 15) var/list/reflist = list(intensity) // Need to wrap this in a list so we can pass a reference - SendSignal(COMSIG_CARBON_SOUNDBANG, reflist) + SEND_SIGNAL(src, COMSIG_CARBON_SOUNDBANG, reflist) intensity = reflist[1] var/ear_safety = get_ear_protection() var/obj/item/organ/ears/ears = getorganslot(ORGAN_SLOT_EARS) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index c03ff53b71..6b0dcb51eb 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -60,3 +60,5 @@ var/next_hallucination = 0 var/cpr_time = 1 //CPR cooldown. var/damageoverlaytemp = 0 + + var/drunkenness = 0 //Overall drunkenness - check handle_alcohol() in life.dm for effects diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index c748658c4e..7d6d5afca2 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -18,7 +18,7 @@ msg += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck.\n" for(var/obj/item/I in held_items) - if(!(I.flags_1 & ABSTRACT_1)) + if(!(I.item_flags & ABSTRACT)) msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" if (back) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index e569766542..bc55487e95 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -43,7 +43,7 @@ //Hands for(var/obj/item/I in held_items) - if(!(I.flags_1 & ABSTRACT_1)) + if(!(I.item_flags & ABSTRACT)) msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" GET_COMPONENT(FR, /datum/component/forensics) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index cf519a1baf..51a606792c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -68,7 +68,7 @@ stat("Internal Atmosphere Info", internal.name) stat("Tank Pressure", internal.air_contents.return_pressure()) stat("Distribution Pressure", internal.distribute_pressure) -// var/mob/living/simple_animal/borer/B = has_brain_worms() + if(mind) var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) if(changeling) @@ -115,42 +115,42 @@ dat += "" for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) - dat += "" + dat += "" dat += "" - dat += "" - dat += "" + dat += "" if(SLOT_WEAR_MASK in obscured) dat += "" else - dat += "" + dat += "" if(SLOT_NECK in obscured) dat += "" else - dat += "" + dat += "" if(SLOT_GLASSES in obscured) dat += "" else - dat += "" + dat += "" if(SLOT_EARS in obscured) dat += "" else - dat += "" + dat += "" dat += "" - dat += "" + dat += "" if(wear_suit) - dat += "" @@ -160,30 +160,30 @@ if(SLOT_SHOES in obscured) dat += "" else - dat += "" + dat += "" if(SLOT_GLOVES in obscured) dat += "" else - dat += "" + dat += "" if(SLOT_W_UNIFORM in obscured) dat += "" else - dat += "" + dat += "" if((w_uniform == null && !(dna && dna.species.nojumpsuit)) || (SLOT_W_UNIFORM in obscured)) dat += "" dat += "" dat += "" else - dat += "" - dat += "" - dat += "" + dat += "" + dat += "" if(handcuffed) dat += "" @@ -230,7 +230,7 @@ usr.visible_message("[usr] successfully rips [I] out of [usr.p_their()] [L.name]!","You successfully remove [I] from your [L.name].") if(!has_embedded_objects()) clear_alert("embeddedobject") - usr.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded") + SEND_SIGNAL(usr, COMSIG_CLEAR_MOOD_EVENT, "embedded") return if(href_list["item"]) @@ -246,11 +246,11 @@ var/obj/item/place_item = usr.get_active_held_item() // Item to place in the pocket, if it's empty var/delay_denominator = 1 - if(pocket_item && !(pocket_item.flags_1&ABSTRACT_1)) - if(pocket_item.flags_1 & NODROP_1) + if(pocket_item && !(pocket_item.item_flags & ABSTRACT)) + if(pocket_item.item_flags & NODROP) to_chat(usr, "You try to empty [src]'s [pocket_side] pocket, it seems to be stuck!") to_chat(usr, "You try to empty [src]'s [pocket_side] pocket.") - else if(place_item && place_item.mob_can_equip(src, usr, pocket_id, 1) && !(place_item.flags_1&ABSTRACT_1)) + else if(place_item && place_item.mob_can_equip(src, usr, pocket_id, 1) && !(place_item.item_flags & ABSTRACT)) to_chat(usr, "You try to place [place_item] into [src]'s [pocket_side] pocket.") delay_denominator = 4 else @@ -274,7 +274,7 @@ // Display a warning if the user mocks up to_chat(src, "You feel your [pocket_side] pocket being fumbled with!") - ..() + ..() //CITADEL CHANGE - removes a tab from behind this ..() so that flavortext can actually be examined ///////HUDs/////// @@ -387,12 +387,12 @@ R = find_record("name", perpname, GLOB.data_core.security) if(R) if(href_list["status"]) - var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Discharged", "Cancel") + var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Paroled", "Discharged", "Cancel") if(setcriminal != "Cancel") if(R) if(H.canUseHUD()) if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.getorganslot(ORGAN_SLOT_HUD), /obj/item/organ/cyberimp/eyes/hud/security)) - investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", INVESTIGATE_RECORDS) + investigate_log("[key_name(src)] has been set from [R.fields["criminal"]] to [setcriminal] by [key_name(usr)].", INVESTIGATE_RECORDS) R.fields["criminal"] = setcriminal sec_hud_set_security_status() return @@ -434,6 +434,7 @@ return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, allowed_access, station_time_timestamp()) GLOB.data_core.addMinorCrime(R.fields["id"], crime) + investigate_log("New Minor Crime: [t1]: [t2] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) to_chat(usr, "Successfully added a minor crime.") return if("Major Crime") @@ -449,6 +450,7 @@ return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, allowed_access, station_time_timestamp()) GLOB.data_core.addMajorCrime(R.fields["id"], crime) + investigate_log("New Major Crime: [t1]: [t2] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) to_chat(usr, "Successfully added a major crime.") return @@ -497,12 +499,12 @@ // If targeting anything else, see if the wear suit is thin enough. if (!penetrate_thick) if(above_neck(target_zone)) - if(head && is_type_in_typecache(head, GLOB.typecache_clothing)) + if(head && istype(head, /obj/item/clothing)) var/obj/item/clothing/CH = head if (CH.clothing_flags & THICKMATERIAL) . = 0 else - if(wear_suit && is_type_in_typecache(wear_suit, GLOB.typecache_clothing)) + if(wear_suit && istype(wear_suit, /obj/item/clothing)) var/obj/item/clothing/CS = wear_suit if (CS.clothing_flags & THICKMATERIAL) . = 0 @@ -588,7 +590,7 @@ threatcount += 5 if("Incarcerated") threatcount += 2 - if("Parolled") + if("Paroled") threatcount += 2 //Check for dresscode violations @@ -596,20 +598,16 @@ threatcount += 6 //fuk u antags <3 //Check for nonhuman scum - if(dna && dna.species.id && !(dna.species.id in list("human" , "lizard", "mammal", "avian", "aquatic", "insect"))) + if(dna && dna.species.id && dna.species.id != "human") threatcount += 1 //mindshield implants imply trustworthyness if(isloyal()) threatcount -= 1 - //Agent cards lower threatlevel. But only enough to openly carry without being busted. + //Agent cards lower threatlevel. if(istype(idcard, /obj/item/card/id/syndicate)) - threatcount -= 2 - - //CentCom cards lower threat level. Even to emagged bots. - if(istype(idcard, /obj/item/card/id/centcom) || istype(idcard, /obj/item/card/id/ert)) - threatcount -= 10 + threatcount -= 5 return threatcount @@ -664,7 +662,7 @@ return src.visible_message("[src] performs CPR on [C.name]!", "You perform CPR on [C.name].") - SendSignal(COMSIG_ADD_MOOD_EVENT, "perform_cpr", /datum/mood_event/perform_cpr) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "perform_cpr", /datum/mood_event/perform_cpr) C.cpr_time = world.time add_logs(src, C, "CPRed") @@ -678,23 +676,6 @@ else to_chat(C, "You feel a breath of fresh air... which is a sensation you don't recognise...") -/mob/living/carbon/human/generateStaticOverlay() - var/image/staticOverlay = image(icon('icons/effects/effects.dmi', "static"), loc = src) - staticOverlay.override = 1 - staticOverlays["static"] = staticOverlay - - staticOverlay = image(icon('icons/effects/effects.dmi', "blank"), loc = src) - staticOverlay.override = 1 - staticOverlays["blank"] = staticOverlay - - staticOverlay = getLetterImage(src, "H", 1) - staticOverlay.override = 1 - staticOverlays["letter"] = staticOverlay - - staticOverlay = getRandomAnimalImage(src) - staticOverlay.override = 1 - staticOverlays["animal"] = staticOverlay - /mob/living/carbon/human/cuff_resist(obj/item/I) if(dna && dna.check_mutation(HULK)) say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) @@ -708,7 +689,7 @@ if(strength < CLEAN_STRENGTH_BLOOD) return if(gloves) - if(gloves.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(SEND_SIGNAL(gloves, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) update_inv_gloves() else if(bloody_hands) @@ -746,9 +727,8 @@ to_chat(src, "You can't do that right now!") return FALSE if(!Adjacent(M) && (M.loc != src)) - if((be_close == 0) && (dna.check_mutation(TK))) - if(tkMaxRangeCheck(src, M)) - return TRUE + if((be_close == 0) || (dna.check_mutation(TK) && tkMaxRangeCheck(src, M))) + return TRUE to_chat(src, "You are too far away!") return FALSE return TRUE @@ -937,6 +917,9 @@ /mob/living/carbon/human/species/corporate race = /datum/species/corporate +/mob/living/carbon/human/species/dullahan + race = /datum/species/dullahan + /mob/living/carbon/human/species/fly race = /datum/species/fly @@ -1000,18 +983,36 @@ /mob/living/carbon/human/species/golem/plastic race = /datum/species/golem/plastic +/mob/living/carbon/human/species/golem/clockwork + race = /datum/species/golem/clockwork + +/mob/living/carbon/human/species/golem/clockwork/no_scrap + race = /datum/species/golem/clockwork/no_scrap + /mob/living/carbon/human/species/jelly race = /datum/species/jelly /mob/living/carbon/human/species/jelly/slime race = /datum/species/jelly/slime +/mob/living/carbon/human/species/jelly/stargazer + race = /datum/species/jelly/stargazer + +/mob/living/carbon/human/species/jelly/luminescent + race = /datum/species/jelly/luminescent + /mob/living/carbon/human/species/lizard race = /datum/species/lizard /mob/living/carbon/human/species/lizard/ashwalker race = /datum/species/lizard/ashwalker +/mob/living/carbon/human/species/moth + race = /datum/species/moth + +/mob/living/carbon/human/species/mush + race = /datum/species/mush + /mob/living/carbon/human/species/plasma race = /datum/species/plasmaman @@ -1021,6 +1022,9 @@ /mob/living/carbon/human/species/shadow race = /datum/species/shadow +/mob/living/carbon/human/species/shadow/nightmare + race = /datum/species/shadow/nightmare + /mob/living/carbon/human/species/skeleton race = /datum/species/skeleton @@ -1030,6 +1034,9 @@ /mob/living/carbon/human/species/synth/military race = /datum/species/synth/military +/mob/living/carbon/human/species/vampire + race = /datum/species/vampire + /mob/living/carbon/human/species/zombie race = /datum/species/zombie diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 3f1ee1bd0e..acf4b0734c 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -144,7 +144,7 @@ I.forceMove(src) L.receive_damage(I.w_class*I.embedding.embedded_impact_pain_multiplier) visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!") - SendSignal(COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded) hitpush = FALSE skipcatch = TRUE //can't catch the now embedded item @@ -173,7 +173,7 @@ affecting = get_bodypart(ran_zone(user.zone_selected)) var/target_area = parse_zone(check_zone(user.zone_selected)) //our intended target - I.SendSignal(COMSIG_ITEM_ATTACK_ZONE, src, user, affecting) + SEND_SIGNAL(I, COMSIG_ITEM_ATTACK_ZONE, src, user, affecting) SSblackbox.record_feedback("nested tally", "item_used_for_combat", 1, list("[I.force]", "[I.type]")) SSblackbox.record_feedback("tally", "zone_targeted", 1, target_area) @@ -469,6 +469,9 @@ /mob/living/carbon/human/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_CONTENTS) + return var/informed = FALSE for(var/obj/item/bodypart/L in src.bodyparts) if(L.status == BODYPART_ROBOTIC) @@ -482,7 +485,6 @@ if(2) L.receive_damage(0,5) Stun(100) - ..() /mob/living/carbon/human/acid_act(acidpwr, acid_volume, bodyzone_hit) var/list/damaged = list() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 47a866df97..c371465ffa 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -44,7 +44,6 @@ var/name_override //For temporary visible name changes - var/drunkenness = 0 //Overall drunkenness - check handle_alcohol() in life.dm for effects var/datum/personal_crafting/handcrafting var/datum/physiology/physiology diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index f62f6d22c7..5bfbb76e46 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -11,7 +11,7 @@ if (!(lube&GALOSHES_DONT_HELP)) if(has_trait(TRAIT_NOSLIPWATER)) return 0 - if(shoes && is_type_in_typecache(shoes, GLOB.typecache_clothing)) + if(shoes && istype(shoes, /obj/item/clothing)) var/obj/item/clothing/CS = shoes if (CS.clothing_flags & NOSLIP) return 0 @@ -19,7 +19,7 @@ /mob/living/carbon/human/experience_pressure_difference() playsound(src, 'sound/effects/space_wind.ogg', 50, 1) - if(shoes && is_type_in_typecache(shoes, GLOB.typecache_clothing)) + if(shoes && istype(shoes, /obj/item/clothing)) var/obj/item/clothing/S = shoes if (S.clothing_flags & NOSLIP) return 0 @@ -67,6 +67,6 @@ S.step_action() /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. - if(..()) - return 1 - return dna.species.space_move(src) + if(dna.species.space_move(src)) + return TRUE + return ..() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index cf8839d086..2216843716 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -48,7 +48,7 @@ return ONE_ATMOSPHERE if(istype(loc, /obj/item/dogborg/sleeper)) return ONE_ATMOSPHERE //END OF CIT CHANGES - if (wear_suit && head && is_type_in_typecache(wear_suit, GLOB.typecache_clothing) && is_type_in_typecache(head, GLOB.typecache_clothing)) + if (wear_suit && head && istype(wear_suit, /obj/item/clothing) && istype(head, /obj/item/clothing)) var/obj/item/clothing/CS = wear_suit var/obj/item/clothing/CH = head if (CS.clothing_flags & CH.clothing_flags & STOPSPRESSUREDAMAGE) @@ -66,14 +66,14 @@ adjust_blurriness(-1) if (getBrainLoss() >= 60 && !incapacitated(TRUE)) - SendSignal(COMSIG_ADD_MOOD_EVENT, "brain_damage", /datum/mood_event/brain_damage) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "brain_damage", /datum/mood_event/brain_damage) if(prob(3)) if(prob(25)) emote("drool") else say(pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage")) else - SendSignal(COMSIG_CLEAR_MOOD_EVENT, "brain_damage") + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "brain_damage") /mob/living/carbon/human/handle_mutations_and_radiation() if(!dna || !dna.species.handle_mutations_and_radiation(src)) @@ -236,8 +236,6 @@ return thermal_protection_flags /mob/living/carbon/human/proc/get_cold_protection(temperature) - if(has_trait(TRAIT_RESISTCOLD)) - return TRUE //CITADEL EDIT Mandatory for vore code. if(istype(loc, /obj/item/dogborg/sleeper)) return TRUE //freezing to death in sleepers ruins fun. @@ -293,7 +291,7 @@ if(glasses) if(glasses.clothing_flags & BLOCK_GAS_SMOKE_EFFECT) return TRUE - if(head && is_type_in_typecache(head, GLOB.typecache_clothing)) + if(head && istype(head, /obj/item/clothing)) var/obj/item/clothing/CH = head if(CH.clothing_flags & BLOCK_GAS_SMOKE_EFFECT) return TRUE @@ -315,7 +313,7 @@ visible_message("[I] falls out of [name]'s [BP.name]!","[I] falls out of your [BP.name]!") if(!has_embedded_objects()) clear_alert("embeddedobject") - SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded") + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "embedded") /mob/living/carbon/human/proc/handle_active_genes() for(var/datum/mutation/human/HM in dna.mutations) @@ -341,108 +339,8 @@ // Tissues die without blood circulation adjustBruteLoss(2) -/* -Alcohol Poisoning Chart -Note that all higher effects of alcohol poisoning will inherit effects for smaller amounts (i.e. light poisoning inherts from slight poisoning) -In addition, severe effects won't always trigger unless the drink is poisonously strong -All effects don't start immediately, but rather get worse over time; the rate is affected by the imbiber's alcohol tolerance - -0: Non-alcoholic -1-10: Barely classifiable as alcohol - occassional slurring -11-20: Slight alcohol content - slurring -21-30: Below average - imbiber begins to look slightly drunk -31-40: Just below average - no unique effects -41-50: Average - mild disorientation, imbiber begins to look drunk -51-60: Just above average - disorientation, vomiting, imbiber begins to look heavily drunk -61-70: Above average - small chance of blurry vision, imbiber begins to look smashed -71-80: High alcohol content - blurry vision, imbiber completely shitfaced -81-90: Extremely high alcohol content - light brain damage, passing out -91-100: Dangerously toxic - swift death -*/ -#define BALLMER_POINTS 5 -GLOBAL_LIST_INIT(ballmer_good_msg, list("Hey guys, what if we rolled out a bluespace wiring system so mice can't destroy the powergrid anymore?", - "Hear me out here. What if, and this is just a theory, we made R&D controllable from our PDAs?", - "I'm thinking we should roll out a git repository for our research under the AGPLv3 license so that we can share it among the other stations freely.", - "I dunno about you guys, but IDs and PDAs being separate is clunky as fuck. Maybe we should merge them into a chip in our arms? That way they can't be stolen easily.", - "Why the fuck aren't we just making every pair of shoes into galoshes? We have the technology.")) -GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put a webserver that's automatically turned on with default admin passwords into every PDA?", - "So like, you know how we separate our codebase from the master copy that runs on our consumer boxes? What if we merged the two and undid the separation between codebase and server?", - "Dude, radical idea: H.O.N.K mechs but with no bananium required.", - "Best idea ever: Disposal pipes instead of hallways.")) -/mob/living/carbon/human/handle_status_effects() - ..() - if(drunkenness) - drunkenness = max(drunkenness - (drunkenness * 0.04), 0) - if(drunkenness >= 6) - if(prob(25)) - slurring += 2 - jitteriness = max(jitteriness - 3, 0) - if(has_trait(TRAIT_DRUNK_HEALING)) - adjustBruteLoss(-0.12, FALSE) - adjustFireLoss(-0.06, FALSE) - - if(drunkenness >= 11 && slurring < 5) - slurring += 1.2 - - if(mind && (mind.assigned_role == "Scientist" || mind.assigned_role == "Research Director")) - if(SSresearch.science_tech) - if(drunkenness >= 12.9 && drunkenness <= 13.8) - drunkenness = round(drunkenness, 0.01) - var/ballmer_percent = 0 - if(drunkenness == 13.35) // why run math if I dont have to - ballmer_percent = 1 - else - ballmer_percent = (-abs(drunkenness - 13.35) / 0.9) + 1 - if(prob(5)) - say(pick(GLOB.ballmer_good_msg)) - SSresearch.science_tech.add_points_all(TECHWEB_POINT_TYPE_DEFAULT, (BALLMER_POINTS * ballmer_percent)) - if(drunkenness > 26) // by this point you're into windows ME territory - if(prob(5)) - SSresearch.science_tech.remove_points_all(TECHWEB_POINT_TYPE_DEFAULT, BALLMER_POINTS) - say(pick(GLOB.ballmer_windows_me_msg)) - - if(drunkenness >= 41) - if(prob(25)) - confused += 2 - Dizzy(10) - if(has_trait(TRAIT_DRUNK_HEALING)) // effects stack with lower tiers - adjustBruteLoss(-0.3, FALSE) - adjustFireLoss(-0.15, FALSE) - - if(drunkenness >= 51) - if(prob(5)) - confused += 10 - vomit() - Dizzy(25) - - if(drunkenness >= 61) - if(prob(50)) - blur_eyes(5) - if(has_trait(TRAIT_DRUNK_HEALING)) - adjustBruteLoss(-0.4, FALSE) - adjustFireLoss(-0.2, FALSE) - - if(drunkenness >= 71) - blur_eyes(5) - - if(drunkenness >= 81) - adjustToxLoss(0.2) - if(prob(5) && !stat) - to_chat(src, "Maybe you should lie down for a bit...") - - if(drunkenness >= 91) - adjustBrainLoss(0.4, 60) - if(prob(20) && !stat) - if(SSshuttle.emergency.mode == SHUTTLE_DOCKED && is_station_level(z)) //QoL mainly - to_chat(src, "You're so tired... but you can't miss that shuttle...") - else - to_chat(src, "Just a quick nap...") - Sleeping(900) - - if(drunkenness >= 101) - adjustToxLoss(4) //Let's be honest you shouldn't be alive by now #undef THERMAL_PROTECTION_HEAD #undef THERMAL_PROTECTION_CHEST diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 2b5ed79d7b..ac1611b676 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -970,7 +970,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) if(SLOT_L_STORE) - if(I.flags_1 & NODROP_1) //Pockets aren't visible, so you can't move NODROP_1 items into them. + if(I.item_flags & NODROP) //Pockets aren't visible, so you can't move NODROP_1 items into them. return FALSE if(H.l_store) return FALSE @@ -986,7 +986,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if( I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & ITEM_SLOT_POCKET) ) return TRUE if(SLOT_R_STORE) - if(I.flags_1 & NODROP_1) + if(I.item_flags & NODROP) return FALSE if(H.r_store) return FALSE @@ -1003,7 +1003,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) return TRUE return FALSE if(SLOT_S_STORE) - if(I.flags_1 & NODROP_1) + if(I.item_flags & NODROP) return FALSE if(H.s_store) return FALSE @@ -1040,7 +1040,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) return TRUE if(SLOT_IN_BACKPACK) if(H.back) - if(H.back.SendSignal(COMSIG_TRY_STORAGE_CAN_INSERT, I, H, TRUE)) + if(SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_CAN_INSERT, I, H, TRUE)) return TRUE return FALSE return FALSE //Unsupported slot @@ -1088,7 +1088,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.update_inv_w_uniform() H.update_inv_wear_suit() else - if(H.overeatduration > 500) + if(H.overeatduration >= 100) to_chat(H, "You suddenly feel blubbery!") H.add_trait(TRAIT_FAT, OBESITY) H.update_inv_w_uniform() @@ -1138,22 +1138,22 @@ GLOBAL_LIST_EMPTY(roundstart_races) switch(H.nutrition) if(NUTRITION_LEVEL_FULL to INFINITY) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/fat) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/fat) H.throw_alert("nutrition", /obj/screen/alert/fat) if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/wellfed) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/wellfed) H.clear_alert("nutrition") if( NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/fed) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/fed) H.clear_alert("nutrition") if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED) - H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "nutrition") + SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "nutrition") H.clear_alert("nutrition") if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/hungry) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/hungry) H.throw_alert("nutrition", /obj/screen/alert/hungry) if(0 to NUTRITION_LEVEL_STARVING) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/starving) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/starving) H.throw_alert("nutrition", /obj/screen/alert/starving) /datum/species/proc/update_health_hud(mob/living/carbon/human/H) @@ -1211,8 +1211,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(H.movement_type & FLYING) flight = 1 - if(H.has_gravity()) - gravity = TRUE + gravity = H.has_gravity() if(!flightpack && gravity) //Check for chemicals and innate speedups and slowdowns if we're moving using our body and not a flying suit if(H.has_trait(TRAIT_GOTTAGOFAST)) @@ -1260,6 +1259,15 @@ GLOBAL_LIST_EMPTY(roundstart_races) . += ((health_deficiency-39) / 75) // CIT CHANGE - adds -39 to health deficiency penalty to make the transition to low health movement a little less jarring else . += ((health_deficiency-39) / 25) // CIT CHANGE - ditto + if(CONFIG_GET(flag/disable_human_mood)) + var/hungry = (500 - H.nutrition) / 5 //So overeat would be 100 and default level would be 80 + if((hungry >= 70) && !flight) //Being hungry will still allow you to use a flightsuit/wings. + . += hungry / 50 + + //Moving in high gravity is very slow (Flying too) + if(gravity > STANDARD_GRAVITY) + var/grav_force = min(gravity - STANDARD_GRAVITY,3) + . += 1 + grav_force GET_COMPONENT_FROM(mood, /datum/component/mood, H) if(mood && !flight) //How can depression slow you down if you can just fly away from your problems? @@ -1273,7 +1281,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(H.has_trait(TRAIT_FAT)) . += (1.5 - flight) - if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) + if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !H.has_trait(TRAIT_RESISTCOLD)) . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR return . @@ -1414,7 +1422,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(target.w_uniform) target.w_uniform.add_fingerprint(user) //var/randomized_zone = ran_zone(user.zone_selected) CIT CHANGE - comments out to prevent compiling errors - target.SendSignal(COMSIG_HUMAN_DISARM_HIT, user, user.zone_selected) + SEND_SIGNAL(target, COMSIG_HUMAN_DISARM_HIT, user, user.zone_selected) //var/obj/item/bodypart/affecting = target.get_bodypart(randomized_zone) CIT CHANGE - comments this out to prevent compile errors due to the below commented out bit var/randn = rand(1, 100) /*if(randn <= 25) CITADEL CHANGE - moves disarm push attempts to right click @@ -1453,7 +1461,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) playsound(target, 'sound/weapons/punchmiss.ogg', 25, 1, -1) target.visible_message("[user] attempted to disarm [target]!", \ "[user] attemped to disarm [target]!", null, COMBAT_MESSAGE_RANGE) - + add_logs(user, target, "attempted to disarm") /datum/species/proc/spec_hitby(atom/movable/AM, mob/living/carbon/human/H) @@ -1697,9 +1705,11 @@ GLOBAL_LIST_EMPTY(roundstart_races) // +/- 50 degrees from 310K is the 'safe' zone, where no damage is dealt. if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !H.has_trait(TRAIT_RESISTHEAT)) //Body temperature is too hot. + + SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold") + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "hot", /datum/mood_event/hot) + var/burn_damage - H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "cold") - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "hot", /datum/mood_event/hot) switch(H.bodytemperature) if(BODYTEMP_HEAT_DAMAGE_LIMIT to 400) H.throw_alert("temp", /obj/screen/alert/hot, 1) @@ -1718,9 +1728,9 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.emote("scream") H.apply_damage(burn_damage, BURN) - else if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !(GLOB.mutations_list[COLDRES] in H.dna.mutations)) - H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "hot") - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "cold", /datum/mood_event/cold) + else if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !H.has_trait(TRAIT_RESISTCOLD)) + SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot") + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "cold", /datum/mood_event/cold) switch(H.bodytemperature) if(200 to BODYTEMP_COLD_DAMAGE_LIMIT) H.throw_alert("temp", /obj/screen/alert/cold, 1) @@ -1734,8 +1744,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) else H.clear_alert("temp") - H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "cold") - H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "hot") + SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold") + SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot") var/pressure = environment.return_pressure() var/adjusted_pressure = H.calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. @@ -1829,7 +1839,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.adjust_bodytemperature(11) else H.adjust_bodytemperature(BODYTEMP_HEATING_MAX + (H.fire_stacks * 12)) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire) /datum/species/proc/CanIgniteMob(mob/living/carbon/human/H) if(H.has_trait(TRAIT_NOFIRE)) @@ -1856,12 +1866,3 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/negates_gravity(mob/living/carbon/human/H) return 0 - - -#undef HEAT_DAMAGE_LEVEL_1 -#undef HEAT_DAMAGE_LEVEL_2 -#undef HEAT_DAMAGE_LEVEL_3 - -#undef COLD_DAMAGE_LEVEL_1 -#undef COLD_DAMAGE_LEVEL_2 -#undef COLD_DAMAGE_LEVEL_3 diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm index 24343f0f00..c4665b5d6d 100644 --- a/code/modules/mob/living/carbon/human/species_types/android.dm +++ b/code/modules/mob/living/carbon/human/species_types/android.dm @@ -3,7 +3,7 @@ id = "android" say_mod = "states" species_traits = list(NOBLOOD) - inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_LIMBATTACHMENT) + inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_NOFIRE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_LIMBATTACHMENT) inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID) meat = null damage_overlay_type = "synth" diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index ae90bb8597..a266f42f4a 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -24,11 +24,6 @@ H.endTailWag() . = ..() -/datum/species/human/space_move(mob/living/carbon/human/H) - var/obj/item/flightpack/F = H.get_flightpack() - if(istype(F) && (F.flight) && F.allow_thrust(0.01, src)) - return TRUE - /datum/species/human/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) if(H.dna.features["ears"] == "Cat") mutantears = /obj/item/organ/ears/cat diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 6f2fd68ac7..7f5726cf95 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -669,6 +669,8 @@ /datum/action/innate/project_thought/Activate() var/mob/living/carbon/human/H = owner + if(H.stat == DEAD) + return if(!is_species(H, /datum/species/jelly/stargazer)) return CHECK_DNA_AND_SPECIES(H) @@ -682,7 +684,7 @@ var/msg = sanitize(input("Message:", "Telepathy") as text|null) if(msg) - log_talk(H,"SlimeTelepathy: [key_name(H)]->[M.key] : [msg]",LOGSAY) + log_talk(H,"SlimeTelepathy: [key_name(H)]->[key_name(M)] : [msg]",LOGSAY) to_chat(M, "You hear an alien voice in your head... [msg]") to_chat(H, "You telepathically said: \"[msg]\" to [M]") for(var/dead in GLOB.dead_mob_list) diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 67d2b0e5ba..6f5ae6f4eb 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -25,7 +25,7 @@ /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() var/atmos_sealed = FALSE - if (H.wear_suit && H.head && is_type_in_typecache(H.wear_suit, GLOB.typecache_clothing) && is_type_in_typecache(H.head, GLOB.typecache_clothing)) + if (H.wear_suit && H.head && istype(H.wear_suit, /obj/item/clothing) && istype(H.head, /obj/item/clothing)) var/obj/item/clothing/CS = H.wear_suit var/obj/item/clothing/CH = H.head if (CS.clothing_flags & CH.clothing_flags & STOPSPRESSUREDAMAGE) diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 4ef4fe4887..22a44e3fa7 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -171,7 +171,7 @@ armour_penetration = 35 lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi' righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi' - flags_1 = ABSTRACT_1 | NODROP_1 | DROPDEL_1 + item_flags = ABSTRACT | NODROP | DROPDEL w_class = WEIGHT_CLASS_HUGE sharpness = IS_SHARP @@ -216,4 +216,4 @@ playsound(src, 'sound/items/welder.ogg', 50, 1) #undef HEART_SPECIAL_SHADOWIFY -#undef HEART_RESPAWN_THRESHHOLD \ No newline at end of file +#undef HEART_RESPAWN_THRESHHOLD diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 59052e2249..59de0755a2 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -39,7 +39,7 @@ /datum/species/vampire/spec_life(mob/living/carbon/human/C) . = ..() - if(istype(C.loc, /obj/structure/closet/coffin)) + if(istype(C.loc, /obj/structure/closet/crate/coffin)) C.heal_overall_damage(4,4) C.adjustToxLoss(-4) C.adjustOxyLoss(-4) diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index bca70c053c..bc2d6132e1 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -72,7 +72,7 @@ put_in_hands(I) update_inv_hands() if(SLOT_IN_BACKPACK) - if(!back.SendSignal(COMSIG_TRY_STORAGE_INSERT, I, src, TRUE)) + if(!SEND_SIGNAL(back, COMSIG_TRY_STORAGE_INSERT, I, src, TRUE)) not_handled = TRUE else not_handled = TRUE @@ -137,3 +137,6 @@ update_inv_wear_mask() update_inv_head() +/mob/living/carbon/proc/get_holding_bodypart_of_item(obj/item/I) + var/index = get_held_index_of_item(I) + return index && hand_bodyparts[index] diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 814ce0ef0f..ff4b77a4ee 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -156,7 +156,7 @@ adjustOxyLoss(3) failed_last_breath = 1 throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy) - SendSignal(COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation) else //Enough oxygen failed_last_breath = 0 @@ -164,7 +164,7 @@ adjustOxyLoss(-5) oxygen_used = breath_gases[/datum/gas/oxygen][MOLES] clear_alert("not_enough_oxy") - SendSignal(COMSIG_CLEAR_MOOD_EVENT, "suffocation") + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "suffocation") breath_gases[/datum/gas/oxygen][MOLES] -= oxygen_used breath_gases[/datum/gas/carbon_dioxide][MOLES] += oxygen_used @@ -325,6 +325,36 @@ M.adjustBruteLoss(5) nutrition += 10 + +/* +Alcohol Poisoning Chart +Note that all higher effects of alcohol poisoning will inherit effects for smaller amounts (i.e. light poisoning inherts from slight poisoning) +In addition, severe effects won't always trigger unless the drink is poisonously strong +All effects don't start immediately, but rather get worse over time; the rate is affected by the imbiber's alcohol tolerance + +0: Non-alcoholic +1-10: Barely classifiable as alcohol - occassional slurring +11-20: Slight alcohol content - slurring +21-30: Below average - imbiber begins to look slightly drunk +31-40: Just below average - no unique effects +41-50: Average - mild disorientation, imbiber begins to look drunk +51-60: Just above average - disorientation, vomiting, imbiber begins to look heavily drunk +61-70: Above average - small chance of blurry vision, imbiber begins to look smashed +71-80: High alcohol content - blurry vision, imbiber completely shitfaced +81-90: Extremely high alcohol content - light brain damage, passing out +91-100: Dangerously toxic - swift death +*/ +#define BALLMER_POINTS 5 +GLOBAL_LIST_INIT(ballmer_good_msg, list("Hey guys, what if we rolled out a bluespace wiring system so mice can't destroy the powergrid anymore?", + "Hear me out here. What if, and this is just a theory, we made R&D controllable from our PDAs?", + "I'm thinking we should roll out a git repository for our research under the AGPLv3 license so that we can share it among the other stations freely.", + "I dunno about you guys, but IDs and PDAs being separate is clunky as fuck. Maybe we should merge them into a chip in our arms? That way they can't be stolen easily.", + "Why the fuck aren't we just making every pair of shoes into galoshes? We have the technology.")) +GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put a webserver that's automatically turned on with default admin passwords into every PDA?", + "So like, you know how we separate our codebase from the master copy that runs on our consumer boxes? What if we merged the two and undid the separation between codebase and server?", + "Dude, radical idea: H.O.N.K mechs but with no bananium required.", + "Best idea ever: Disposal pipes instead of hallways.")) + //this updates all special effects: stun, sleeping, knockdown, druggy, stuttering, etc.. /mob/living/carbon/handle_status_effects() ..() @@ -404,6 +434,77 @@ if(hallucination) handle_hallucinations() + if(drunkenness) + drunkenness = max(drunkenness - (drunkenness * 0.04), 0) + if(drunkenness >= 6) + if(prob(25)) + slurring += 2 + jitteriness = max(jitteriness - 3, 0) + if(has_trait(TRAIT_DRUNK_HEALING)) + adjustBruteLoss(-0.12, FALSE) + adjustFireLoss(-0.06, FALSE) + + if(drunkenness >= 11 && slurring < 5) + slurring += 1.2 + + if(mind && (mind.assigned_role == "Scientist" || mind.assigned_role == "Research Director")) + if(SSresearch.science_tech) + if(drunkenness >= 12.9 && drunkenness <= 13.8) + drunkenness = round(drunkenness, 0.01) + var/ballmer_percent = 0 + if(drunkenness == 13.35) // why run math if I dont have to + ballmer_percent = 1 + else + ballmer_percent = (-abs(drunkenness - 13.35) / 0.9) + 1 + if(prob(5)) + say(pick(GLOB.ballmer_good_msg)) + SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = BALLMER_POINTS * ballmer_percent)) + if(drunkenness > 26) // by this point you're into windows ME territory + if(prob(5)) + SSresearch.science_tech.remove_point_list(list(TECHWEB_POINT_TYPE_GENERIC = BALLMER_POINTS)) + say(pick(GLOB.ballmer_windows_me_msg)) + + if(drunkenness >= 41) + if(prob(25)) + confused += 2 + Dizzy(10) + if(has_trait(TRAIT_DRUNK_HEALING)) // effects stack with lower tiers + adjustBruteLoss(-0.3, FALSE) + adjustFireLoss(-0.15, FALSE) + + if(drunkenness >= 51) + if(prob(5)) + confused += 10 + vomit() + Dizzy(25) + + if(drunkenness >= 61) + if(prob(50)) + blur_eyes(5) + if(has_trait(TRAIT_DRUNK_HEALING)) + adjustBruteLoss(-0.4, FALSE) + adjustFireLoss(-0.2, FALSE) + + if(drunkenness >= 71) + blur_eyes(5) + + if(drunkenness >= 81) + adjustToxLoss(0.2) + if(prob(5) && !stat) + to_chat(src, "Maybe you should lie down for a bit...") + + if(drunkenness >= 91) + adjustBrainLoss(0.4, 60) + if(prob(20) && !stat) + if(SSshuttle.emergency.mode == SHUTTLE_DOCKED && is_station_level(z)) //QoL mainly + to_chat(src, "You're so tired... but you can't miss that shuttle...") + else + to_chat(src, "Just a quick nap...") + Sleeping(900) + + if(drunkenness >= 101) + adjustToxLoss(4) //Let's be honest you shouldn't be alive by now + //used in human and monkey handle_environment() /mob/living/carbon/proc/natural_bodytemperature_stabilization() var/body_temperature_difference = BODYTEMP_NORMAL - bodytemperature diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index ed60456b67..303057d376 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -133,7 +133,7 @@ /mob/living/carbon/monkey/proc/handle_combat() if(pickupTarget) - if(restrained() || blacklistItems[pickupTarget] || (pickupTarget.flags_1 & NODROP_1)) + if(restrained() || blacklistItems[pickupTarget] || (pickupTarget.item_flags & NODROP)) pickupTarget = null else pickupTimer++ @@ -220,12 +220,12 @@ return TRUE if(target && target.stat == CONSCIOUS) // make sure target exists - if(Adjacent(target) && isturf(target.loc)) // if right next to perp + if(Adjacent(target) && isturf(target.loc) && !IsDeadOrIncap()) // if right next to perp // check if target has a weapon var/obj/item/W for(var/obj/item/I in target.held_items) - if(!(I.flags_1 & ABSTRACT_1)) + if(!(I.item_flags & ABSTRACT)) W = I break diff --git a/code/modules/mob/living/carbon/monkey/inventory.dm b/code/modules/mob/living/carbon/monkey/inventory.dm index 113d2a6e2f..fdc28d13a0 100644 --- a/code/modules/mob/living/carbon/monkey/inventory.dm +++ b/code/modules/mob/living/carbon/monkey/inventory.dm @@ -29,3 +29,6 @@ return FALSE return TRUE return FALSE //Unsupported slot + + + diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 879aa82750..1ddea78bf2 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -1,10 +1,4 @@ -#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point -#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point -#define HEAT_DAMAGE_LEVEL_3 10 //Amount of damage applied when your body temperature passes the 460K point and you are on fire -#define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point -#define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point -#define COLD_DAMAGE_LEVEL_3 3 //Amount of damage applied when your body temperature passes the 120K point /mob/living/carbon/monkey @@ -87,7 +81,7 @@ adjust_bodytemperature(min((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX)) - if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT) + if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !has_trait(TRAIT_RESISTHEAT)) switch(bodytemperature) if(360 to 400) throw_alert("temp", /obj/screen/alert/hot, 1) @@ -102,7 +96,7 @@ else apply_damage(HEAT_DAMAGE_LEVEL_2, BURN) - else if(bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) + else if(bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !has_trait(TRAIT_RESISTCOLD)) if(!istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell)) switch(bodytemperature) if(200 to 260) @@ -175,12 +169,4 @@ I.take_damage(fire_stacks, BURN, "fire", 0) adjust_bodytemperature(BODYTEMP_HEATING_MAX) - SendSignal(COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire) - -#undef HEAT_DAMAGE_LEVEL_1 -#undef HEAT_DAMAGE_LEVEL_2 -#undef HEAT_DAMAGE_LEVEL_3 - -#undef COLD_DAMAGE_LEVEL_1 -#undef COLD_DAMAGE_LEVEL_2 -#undef COLD_DAMAGE_LEVEL_3 + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 28ba50a308..d1d9c4370e 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -33,9 +33,10 @@ . = ..() if (cubespawned) - if (LAZYLEN(SSmobs.cubemonkeys) > SSmobs.cubemonkeycap) + var/cap = CONFIG_GET(number/monkeycap) + if (LAZYLEN(SSmobs.cubemonkeys) > cap) if (spawner) - to_chat(spawner, "Bluespace harmonics prevent the spawning of more than [SSmobs.cubemonkeycap] monkeys on the station at one time!") + to_chat(spawner, "Bluespace harmonics prevent the spawning of more than [cap] monkeys on the station at one time!") return INITIALIZE_HINT_QDEL SSmobs.cubemonkeys += src diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index 1d619364e0..d850efcee6 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -45,11 +45,11 @@ if(druggy) overlay_fullscreen("high", /obj/screen/fullscreen/high) throw_alert("high", /obj/screen/alert/high) - SendSignal(COMSIG_ADD_MOOD_EVENT, "high", /datum/mood_event/drugs/high) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "high", /datum/mood_event/drugs/high) else clear_fullscreen("high") clear_alert("high") - SendSignal(COMSIG_CLEAR_MOOD_EVENT, "high") + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "high") /mob/living/carbon/set_drugginess(amount) druggy = max(amount, 0) diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index af685e91cb..212b96e6d9 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -124,7 +124,7 @@ if(wear_mask) if(!(head && (head.flags_inv & HIDEMASK))) - overlays_standing[FACEMASK_LAYER] = wear_mask.build_worn_icon(state = wear_mask.icon_state, default_layer = FACEMASK_LAYER, default_icon_file = ((wear_mask.icon_override) ? wear_mask.icon_override : 'icons/mob/mask.dmi')) + overlays_standing[FACEMASK_LAYER] = wear_mask.build_worn_icon(state = wear_mask.icon_state, default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/mask.dmi') update_hud_wear_mask(wear_mask) apply_overlay(FACEMASK_LAYER) @@ -138,7 +138,7 @@ if(wear_neck) if(!(head && (head.flags_inv & HIDENECK))) - overlays_standing[NECK_LAYER] = wear_neck.build_worn_icon(state = wear_neck.icon_state, default_layer = NECK_LAYER, default_icon_file = ((wear_neck.icon_override) ? wear_neck.icon_override : 'icons/mob/neck.dmi')) + overlays_standing[NECK_LAYER] = wear_neck.build_worn_icon(state = wear_neck.icon_state, default_layer = NECK_LAYER, default_icon_file = 'icons/mob/neck.dmi') update_hud_neck(wear_neck) apply_overlay(NECK_LAYER) @@ -151,7 +151,7 @@ inv.update_icon() if(back) - overlays_standing[BACK_LAYER] = back.build_worn_icon(state = back.icon_state, default_layer = BACK_LAYER, default_icon_file = ((back.icon_override) ? back.icon_override : 'icons/mob/back.dmi')) + overlays_standing[BACK_LAYER] = back.build_worn_icon(state = back.icon_state, default_layer = BACK_LAYER, default_icon_file = 'icons/mob/back.dmi') update_hud_back(back) apply_overlay(BACK_LAYER) @@ -167,7 +167,7 @@ inv.update_icon() if(head) - overlays_standing[HEAD_LAYER] = head.build_worn_icon(state = head.icon_state, default_layer = HEAD_LAYER, default_icon_file = ((head.icon_override) ? head.icon_override : 'icons/mob/head.dmi')) + overlays_standing[HEAD_LAYER] = head.build_worn_icon(state = head.icon_state, default_layer = HEAD_LAYER, default_icon_file = 'icons/mob/head.dmi') update_hud_head(head) apply_overlay(HEAD_LAYER) @@ -235,22 +235,11 @@ if(limb_icon_cache[icon_render_key]) load_limb_from_cache() return - //Taur code goes here, since humans just inherit this proc - var/is_taur = FALSE - if(ishuman(src)) - var/mob/living/carbon/human/H = src - if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None")) - is_taur = TRUE //GENERATE NEW LIMBS var/list/new_limbs = list() for(var/X in bodyparts) var/obj/item/bodypart/BP = X - - if(istype(BP, /obj/item/bodypart/r_leg) || istype(BP, /obj/item/bodypart/l_leg)) - if(is_taur) - continue - new_limbs += BP.get_limb_icon() if(new_limbs.len) overlays_standing[BODYPARTS_LAYER] = new_limbs diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 011fa23230..dfc81396e7 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -27,9 +27,6 @@ adjustStaminaLoss(damage * hit_percent) if(BRAIN) adjustBrainLoss(damage * hit_percent) - //citadel code - if(AROUSAL) - adjustArousalLoss(damage * hit_percent) return 1 /mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs @@ -48,9 +45,6 @@ return adjustStaminaLoss(damage) if(BRAIN) return adjustBrainLoss(damage) - //citadel code - if(AROUSAL) - return adjustArousalLoss(damage) /mob/living/proc/get_damage_amount(damagetype = BRUTE) switch(damagetype) @@ -68,12 +62,9 @@ return getStaminaLoss() if(BRAIN) return getBrainLoss() - //citadel code - if(AROUSAL) - return getArousalLoss() -/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = FALSE, stamina = 0, brain = 0, arousal = 0) +/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = FALSE, stamina = 0, brain = 0) if(blocked >= 100) return 0 if(brute) @@ -90,9 +81,6 @@ apply_damage(stamina, STAMINA, def_zone, blocked) if(brain) apply_damage(brain, BRAIN, def_zone, blocked) - //citadel code - if(arousal) - apply_damage(arousal, AROUSAL, def_zone, blocked) return 1 diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index ee16e4103f..35c2abac9c 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -26,8 +26,11 @@ /mob/living/proc/spread_bodyparts() return -/mob/living/dust(just_ash = FALSE) - death(1) +/mob/living/dust(just_ash = FALSE, drop_items = FALSE) + death(TRUE) + + if(drop_items) + unequip_everything() if(buckled) buckled.unbuckle_mob(src,force=1) @@ -51,7 +54,7 @@ var/turf/T = get_turf(src) for(var/obj/item/I in contents) I.on_mob_death(src, gibbed) - if(mind && mind.name && mind.active && (!(T.flags_1 & NO_DEATHRATTLE_1))) + if(mind && mind.name && mind.active && !istype(T.loc, /area/ctf)) var/rendered = "[mind.name] has died at [get_area_name(T)]." deadchat_broadcast(rendered, follow_target = src, turf_target = T, message_type=DEADCHAT_DEATHRATTLE) if(mind) @@ -71,6 +74,7 @@ update_canmove() med_hud_set_health() med_hud_set_status() + addtimer(CALLBACK(src, .proc/med_hud_set_status), (DEFIB_TIME_LIMIT * 10) + 1) stop_pulling() if (client) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 6aa25a2701..458c19edfb 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -58,6 +58,11 @@ message = "coughs!" emote_type = EMOTE_AUDIBLE +/datum/emote/living/cough/can_run_emote(mob/user, status_check = TRUE) + . = ..() + if(user.reagents.get_reagent("menthol") || user.reagents.get_reagent("peppermint_patty")) + return FALSE + /datum/emote/living/dance key = "dance" key_third_person = "dances" @@ -407,6 +412,8 @@ if(jobban_isbanned(user, "emote")) to_chat(user, "You cannot send custom emotes (banned).") return FALSE + else if(QDELETED(user)) + return FALSE else if(user.client && user.client.prefs.muted & MUTE_IC) to_chat(user, "You cannot send IC messages (muted).") return FALSE diff --git a/code/modules/mob/living/inhand_holder.dm b/code/modules/mob/living/inhand_holder.dm index 711866d733..420c59b22d 100644 --- a/code/modules/mob/living/inhand_holder.dm +++ b/code/modules/mob/living/inhand_holder.dm @@ -5,7 +5,7 @@ desc = "Yell at coderbrush." icon = null icon_state = "" - flags_1 = DROPDEL_1 + item_flags = DROPDEL var/mob/living/held_mob var/can_head = TRUE var/destroying = FALSE diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 47eb649d93..817e3c3f3b 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -7,31 +7,32 @@ if((movement_type & FLYING) && !floating) //TODO: Better floating float(on = TRUE) - if (client || registered_z) // This is a temporary error tracker to make sure we've caught everything + if (client) var/turf/T = get_turf(src) - if (client && registered_z != T.z) + if(!T) + for(var/obj/effect/landmark/error/E in GLOB.landmarks_list) + forceMove(E.loc) + break + var/msg = "[key_name_admin(src)] [ADMIN_JMP(src)] was found to have no .loc with an attached client, if the cause is unknown it would be wise to ask how this was accomplished." + message_admins(msg) + send2irc_adminless_only("Mob", msg, R_ADMIN) + log_game("[key_name(src)] was found to have no .loc with an attached client.") + + // This is a temporary error tracker to make sure we've caught everything + else if (registered_z != T.z) #ifdef TESTING message_admins("[src] [ADMIN_FLW(src)] has somehow ended up in Z-level [T.z] despite being registered in Z-level [registered_z]. If you could ask them how that happened and notify coderbus, it would be appreciated.") #endif log_game("Z-TRACKING: [src] has somehow ended up in Z-level [T.z] despite being registered in Z-level [registered_z].") update_z(T.z) - else if (!client && registered_z) - log_game("Z-TRACKING: [src] of type [src.type] has a Z-registration despite not having a client.") - update_z(null) + else if (registered_z) + log_game("Z-TRACKING: [src] of type [src.type] has a Z-registration despite not having a client.") + update_z(null) if (notransform) return if(!loc) - if(client) - for(var/obj/effect/landmark/error/E in GLOB.landmarks_list) - forceMove(E.loc) - break - var/msg = "[key_name_admin(src)] was found to have no .loc with an attached client, if the cause is unknown it would be wise to ask how this was accomplished." - message_admins(msg) - send2irc_adminless_only("Mob", msg, R_ADMIN) - log_game("[key_name(src)] was found to have no .loc with an attached client.") - else - return + return var/datum/gas_mixture/environment = loc.return_air() if(stat != DEAD) @@ -57,7 +58,7 @@ //stuff in the stomach handle_stomach() - update_gravity(mob_has_gravity()) + handle_gravity() if(machine) machine.check_eye(src) @@ -109,7 +110,7 @@ ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire return var/turf/location = get_turf(src) - location.hotspot_expose(700, 50, 1) + location.hotspot_expose(700, 10, 1) /mob/living/proc/handle_stomach() return @@ -136,3 +137,26 @@ /mob/living/proc/update_damage_hud() return + +/mob/living/proc/handle_gravity() + var/gravity = mob_has_gravity() + update_gravity(gravity) + + if(gravity > STANDARD_GRAVITY) + gravity_animate() + handle_high_gravity(gravity) + +/mob/living/proc/gravity_animate() + if(!get_filter("gravity")) + add_filter("gravity",1,list("type"="motion_blur", "x"=0, "y"=0)) + INVOKE_ASYNC(src, .proc/gravity_pulse_animation) + +/mob/living/proc/gravity_pulse_animation() + animate(get_filter("gravity"), y = 1, time = 10) + sleep(10) + animate(get_filter("gravity"), y = 0, time = 10) + +/mob/living/proc/handle_high_gravity(gravity) + if(gravity >= GRAVITY_DAMAGE_TRESHOLD) //Aka gravity values of 3 or more + var/grav_stregth = gravity - GRAVITY_DAMAGE_TRESHOLD + adjustBruteLoss(min(grav_stregth,3)) \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index abf8302590..24627f7eec 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1,15 +1,5 @@ /mob/living/Initialize() . = ..() - generateStaticOverlay() - if(staticOverlays.len) - for(var/mob/living/simple_animal/drone/D in GLOB.player_list) - if(D && D.seeStatic) - if(D.staticChoice in staticOverlays) - D.staticOverlays |= staticOverlays[D.staticChoice] - D.client.images |= staticOverlays[D.staticChoice] - else //no choice? force static - D.staticOverlays |= staticOverlays["static"] - D.client.images |= staticOverlays["static"] if(unique_name) name = "[name] ([rand(1, 1000)])" real_name = name @@ -40,47 +30,14 @@ if(buckled) buckled.unbuckle_mob(src,force=1) - for(var/mob/living/simple_animal/drone/D in GLOB.player_list) - for(var/image/I in staticOverlays) - D.staticOverlays.Remove(I) - D.client.images.Remove(I) - qdel(I) - staticOverlays.len = 0 remove_from_all_data_huds() GLOB.mob_living_list -= src QDEL_LIST(diseases) return ..() -/mob/living/ghostize(can_reenter_corpse = 1) - var/prev_client = client - . = ..() - if(.) - if(ranged_ability && prev_client) - ranged_ability.remove_mousepointer(prev_client) - - /mob/living/proc/OpenCraftingMenu() return -/mob/living/proc/generateStaticOverlay() - staticOverlays.Add(list("static", "blank", "letter", "animal")) - var/image/staticOverlay = image(getStaticIcon(new/icon(icon,icon_state)), loc = src) - staticOverlay.override = 1 - staticOverlays["static"] = staticOverlay - - staticOverlay = image(getBlankIcon(new/icon(icon, icon_state)), loc = src) - staticOverlay.override = 1 - staticOverlays["blank"] = staticOverlay - - staticOverlay = getLetterImage(src) - staticOverlay.override = 1 - staticOverlays["letter"] = staticOverlay - - staticOverlay = getRandomAnimalImage(src) - staticOverlay.override = 1 - staticOverlays["animal"] = staticOverlay - - //Generic Collide(). Override MobCollide() and ObjCollide() instead of this. /mob/living/Collide(atom/A) if(..()) //we are thrown onto something @@ -411,7 +368,7 @@ ret |= contents //add our contents for(var/i in ret.Copy()) //iterate storage objects var/atom/A = i - A.SendSignal(COMSIG_TRY_STORAGE_RETURN_INVENTORY, ret) + SEND_SIGNAL(A, COMSIG_TRY_STORAGE_RETURN_INVENTORY, ret) for(var/obj/item/folder/F in ret.Copy()) //very snowflakey-ly iterate folders ret |= F.contents return ret @@ -491,6 +448,7 @@ heal_overall_damage(INFINITY, INFINITY, INFINITY, FALSE, FALSE, TRUE) //heal brute and burn dmg on both organic and robotic limbs, and update health right away. ExtinguishMob() fire_stacks = 0 + confused = 0 update_canmove() GET_COMPONENT(mood, /datum/component/mood) if (mood) @@ -508,21 +466,6 @@ /mob/living/proc/update_damage_overlays() return -/mob/living/proc/Examine_OOC() - set name = "Examine Meta-Info (OOC)" - set category = "OOC" - set src in view() - - if(CONFIG_GET(flag/allow_metadata)) - if(client) - to_chat(src, "[src]'s Metainfo:
    [client.prefs.metadata]") - else - to_chat(src, "[src] does not have any stored information!") - else - to_chat(src, "OOC Metadata is not supported by this server!") - - return - /mob/living/Move(atom/newloc, direct) if (buckled && buckled.loc != newloc) //not updating position if (!buckled.anchored) @@ -646,6 +589,7 @@ return changeNext_move(CLICK_CD_RESIST) + SEND_SIGNAL(src, COMSIG_LIVING_RESIST, src) //resisting grabs (as if it helps anyone...) if(!restrained(ignore_grab = 1) && pulledby) visible_message("[src] resists against [pulledby]'s grip!") @@ -665,14 +609,6 @@ var/obj/C = loc C.container_resist(src) - else if(IsFrozen()) - to_chat(src, "You start breaking out of the ice cube!") - if(do_mob(src, src, 40)) - if(IsFrozen()) - to_chat(src, "You break out of the ice cube!") - remove_status_effect(/datum/status_effect/freon) - update_canmove() - else if(canmove) if(on_fire) resist_fire() //stop, drop, and roll @@ -715,9 +651,15 @@ if(!SSticker.HasRoundStarted()) return if(has_gravity) - clear_alert("weightless") + if(has_gravity == 1) + clear_alert("gravity") + else + if(has_gravity >= GRAVITY_DAMAGE_TRESHOLD) + throw_alert("gravity", /obj/screen/alert/veryhighgravity) + else + throw_alert("gravity", /obj/screen/alert/highgravity) else - throw_alert("weightless", /obj/screen/alert/weightless) + throw_alert("gravity", /obj/screen/alert/weightless) if(!override && !is_flying()) float(!has_gravity) @@ -739,7 +681,7 @@ // The src mob is trying to strip an item from someone // Override if a certain type of mob should be behave differently when stripping items (can't, for example) /mob/living/stripPanelUnequip(obj/item/what, mob/who, where) - if(what.flags_1 & NODROP_1) + if(what.item_flags & NODROP) to_chat(src, "You can't remove \the [what.name], it appears to be stuck!") return who.visible_message("[src] tries to remove [who]'s [what.name].", \ @@ -760,7 +702,7 @@ // Override if a certain mob should be behave differently when placing items (can't, for example) /mob/living/stripPanelEquip(obj/item/what, mob/who, where) what = src.get_active_held_item() - if(what && (what.flags_1 & NODROP_1)) + if(what && (what.item_flags & NODROP)) to_chat(src, "You can't put \the [what.name] on [who], it's stuck to your hand!") return if(what) @@ -873,7 +815,6 @@ return FALSE return TRUE - /mob/living/proc/update_stamina() return /* @@ -953,6 +894,13 @@ apply_effect((amount*RAD_MOB_COEFFICIENT)/max(1, (radiation**2)*RAD_OVERDOSE_REDUCTION), EFFECT_IRRADIATE, blocked) +/mob/living/anti_magic_check(magic = TRUE, holy = FALSE) + . = ..() + if(.) + return + if((magic && has_trait(TRAIT_ANTIMAGIC)) || (holy && has_trait(TRAIT_HOLY))) + return src + /mob/living/proc/fakefireextinguish() return @@ -970,6 +918,7 @@ new/obj/effect/dummy/fire(src) throw_alert("fire", /obj/screen/alert/fire) update_fire() + SEND_SIGNAL(src, COMSIG_LIVING_IGNITED,src) return TRUE return FALSE @@ -980,7 +929,8 @@ for(var/obj/effect/dummy/fire/F in src) qdel(F) clear_alert("fire") - SendSignal(COMSIG_CLEAR_MOOD_EVENT, "on_fire") + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "on_fire") + SEND_SIGNAL(src, COMSIG_LIVING_EXTINGUISHED, src) update_fire() /mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person @@ -1184,8 +1134,16 @@ clear_fullscreen("remote_view", 0) update_pipe_vision() +/mob/living/update_mouse_pointer() + ..() + if (client && ranged_ability && ranged_ability.ranged_mousepointer) + client.mouse_pointer_icon = ranged_ability.ranged_mousepointer + /mob/living/vv_edit_var(var_name, var_value) switch(var_name) + if ("maxHealth") + if (!isnum(var_value) || var_value <= 0) + return FALSE if("stat") if((stat == DEAD) && (var_value < DEAD))//Bringing the dead back to life GLOB.dead_mob_list -= src diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 99325838ca..0ce42af01b 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -67,7 +67,7 @@ var/zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest var/dtype = BRUTE var/volume = I.get_volume_by_throwforce_and_or_w_class() - I.SendSignal(COMSIG_MOVABLE_IMPACT_ZONE, src, zone) + SEND_SIGNAL(I, COMSIG_MOVABLE_IMPACT_ZONE, src, zone) dtype = I.damtype if (I.throwforce > 0) //If the weapon's throwforce is greater than zero... @@ -317,9 +317,11 @@ return shock_damage /mob/living/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_CONTENTS) + return for(var/obj/O in contents) O.emp_act(severity) - ..() /mob/living/singularity_act() var/gain = 20 @@ -328,7 +330,7 @@ return(gain) /mob/living/narsie_act() - if(status_flags & GODMODE) + if(status_flags & GODMODE || QDELETED(src)) return if(is_servant_of_ratvar(src) && !stat) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 94b1e64f39..1016387cb5 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -55,7 +55,6 @@ var/mob_size = MOB_SIZE_HUMAN var/list/mob_biotypes = list(MOB_ORGANIC) var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. - var/list/image/staticOverlays = list() var/has_limbs = 0 //does the mob have distinct limbs?(arms,legs, chest,head) var/list/pipes_shown = list() diff --git a/code/modules/mob/living/logout.dm b/code/modules/mob/living/logout.dm index b7e9036a8a..d2c50559c6 100644 --- a/code/modules/mob/living/logout.dm +++ b/code/modules/mob/living/logout.dm @@ -1,7 +1,5 @@ /mob/living/Logout() update_z(null) - if(ranged_ability && client) - ranged_ability.remove_mousepointer(client) ..() if(!key && mind) //key and mind have become separated. mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body. \ No newline at end of file diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index a754856991..e25a5e4a85 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -316,16 +316,6 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 1 -/mob/living/proc/get_message_mode(message) - var/key = copytext(message, 1, 2) - if(key == "#") - return MODE_WHISPER - else if(key == ";") - return MODE_HEADSET - else if(length(message) > 2 && (key in GLOB.department_radio_prefixes)) - var/key_symbol = lowertext(copytext(message, 2, 3)) - return GLOB.department_radio_keys[key_symbol] - /mob/living/proc/get_key(message) var/key = copytext(message, 1, 2) if(key in GLOB.department_radio_prefixes) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 8664a111ae..91401cbc88 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -74,7 +74,7 @@ var/nuking = FALSE var/obj/machinery/doomsday_device/doomsday_device - var/mob/camera/aiEye/eyeobj = new + var/mob/camera/aiEye/eyeobj var/sprint = 10 var/cooldown = 0 var/acceleration = 1 @@ -85,6 +85,13 @@ var/datum/action/innate/deploy_last_shell/redeploy_action = new var/chnotify = 0 + var/multicam_allowed = FALSE + var/multicam_on = FALSE + var/obj/screen/movable/pic_in_pic/ai/master_multicam + var/list/multicam_screens = list() + var/list/all_eyes = list() + var/max_multicams = 6 + /mob/living/silicon/ai/Initialize(mapload, datum/ai_laws/L, mob/target_ai) . = ..() if(!target_ai) //If there is no player/brain inside. @@ -116,9 +123,8 @@ job = "AI" - eyeobj.ai = src - eyeobj.forceMove(src.loc) - rename_self("ai") + create_eye() + apply_pref_name("ai") holo_icon = getHologramIcon(icon('icons/mob/ai.dmi',"default")) @@ -818,7 +824,7 @@ //apc_override is needed here because AIs use their own APC when depowered return (GLOB.cameranet && GLOB.cameranet.checkTurfVis(get_turf_pixel(A))) || apc_override //AI is carded/shunted - //view(src) returns nothing for carded/shunted AIs and they have x-ray vision so just use get_dist + //view(src) returns nothing for carded/shunted AIs and they have X-ray vision so just use get_dist var/list/viewscale = getviewsize(client.view) return get_dist(src, A) <= max(viewscale[1]*0.5,viewscale[2]*0.5) @@ -871,9 +877,12 @@ current = A if(client) if(ismovableatom(A)) + if(A != GLOB.ai_camera_room_landmark) + end_multicam() client.perspective = EYE_PERSPECTIVE client.eye = A else + end_multicam() if(isturf(loc)) if(eyeobj) client.eye = eyeobj @@ -993,3 +1002,11 @@ . = ..() if(!target_ai) target_ai = src //cheat! just give... ourselves as the spawned AI, because that's technically correct + +/mob/living/silicon/ai/proc/camera_visibility(mob/camera/aiEye/moved_eye) + GLOB.cameranet.visibility(moved_eye, client, all_eyes) + +/mob/living/silicon/ai/forceMove(atom/destination) + . = ..() + if(.) + end_multicam() diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm index d07f85ef6a..7c59c2b791 100644 --- a/code/modules/mob/living/silicon/ai/ai_defense.dm +++ b/code/modules/mob/living/silicon/ai/ai_defense.dm @@ -22,6 +22,9 @@ return 0 /mob/living/silicon/ai/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return disconnect_shell() if (prob(30)) switch(pick(1,2)) @@ -29,7 +32,6 @@ view_core() if(2) SSshuttle.requestEvac(src,"ALERT: Energy surge detected in AI core! Station integrity may be compromised! Initiati--%m091#ar-BZZT") - ..() /mob/living/silicon/ai/ex_act(severity, target) switch(severity) diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index 815ddb64ea..36ae19b478 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -18,12 +18,21 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) // The object used for the clickable stat() button. var/obj/effect/statclick/statclick + // The object used in vis_contents of obscured turfs + var/vis_contents + // The image given to the effect in vis_contents on AI clients + var/image/obscured + +/datum/cameranet/New() + vis_contents = new /obj/effect/overlay/camera_static() + obscured = new('icons/effects/cameravis.dmi', vis_contents, null, BYOND_LIGHTING_LAYER + 0.1) + obscured.plane = BYOND_LIGHTING_PLANE + 1 + // Checks if a chunk has been Generated in x, y, z. /datum/cameranet/proc/chunkGenerated(x, y, z) x &= ~(CHUNK_SIZE - 1) y &= ~(CHUNK_SIZE - 1) - var/key = "[x],[y],[z]" - return (chunks[key]) + return chunks["[x],[y],[z]"] // Returns the chunk in the x, y, z. // If there is no chunk, it creates a new chunk and returns that. @@ -31,50 +40,59 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) x &= ~(CHUNK_SIZE - 1) y &= ~(CHUNK_SIZE - 1) var/key = "[x],[y],[z]" - if(!chunks[key]) - chunks[key] = new /datum/camerachunk(null, x, y, z) - - return chunks[key] + . = chunks[key] + if(!.) + chunks[key] = . = new /datum/camerachunk(x, y, z) // Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. -/datum/cameranet/proc/visibility(mob/camera/aiEye/ai) - // 0xf = 15 - var/x1 = max(0, ai.x - 16) & ~(CHUNK_SIZE - 1) - var/y1 = max(0, ai.y - 16) & ~(CHUNK_SIZE - 1) - var/x2 = min(world.maxx, ai.x + 16) & ~(CHUNK_SIZE - 1) - var/y2 = min(world.maxy, ai.y + 16) & ~(CHUNK_SIZE - 1) +/datum/cameranet/proc/visibility(list/moved_eyes, client/C, list/other_eyes) + if(!islist(moved_eyes)) + moved_eyes = moved_eyes ? list(moved_eyes) : list() + if(islist(other_eyes)) + other_eyes = (other_eyes - moved_eyes) + else + other_eyes = list() - var/list/visibleChunks = list() + for(var/V in moved_eyes) + var/mob/camera/aiEye/eye = V + var/static_range = eye.static_visibility_range + var/x1 = max(0, eye.x - static_range) & ~(CHUNK_SIZE - 1) + var/y1 = max(0, eye.y - static_range) & ~(CHUNK_SIZE - 1) + var/x2 = min(world.maxx, eye.x + static_range) & ~(CHUNK_SIZE - 1) + var/y2 = min(world.maxy, eye.y + static_range) & ~(CHUNK_SIZE - 1) - for(var/x = x1; x <= x2; x += CHUNK_SIZE) - for(var/y = y1; y <= y2; y += CHUNK_SIZE) - visibleChunks |= getCameraChunk(x, y, ai.z) + var/list/visibleChunks = list() - var/list/remove = ai.visibleCameraChunks - visibleChunks - var/list/add = visibleChunks - ai.visibleCameraChunks + for(var/x = x1; x <= x2; x += CHUNK_SIZE) + for(var/y = y1; y <= y2; y += CHUNK_SIZE) + visibleChunks |= getCameraChunk(x, y, eye.z) - for(var/chunk in remove) - var/datum/camerachunk/c = chunk - c.remove(ai) + var/list/remove = eye.visibleCameraChunks - visibleChunks + var/list/add = visibleChunks - eye.visibleCameraChunks - for(var/chunk in add) - var/datum/camerachunk/c = chunk - c.add(ai) + for(var/chunk in remove) + var/datum/camerachunk/c = chunk + c.remove(eye) + + for(var/chunk in add) + var/datum/camerachunk/c = chunk + c.add(eye) + + if(C) + C.images += obscured // Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. /datum/cameranet/proc/updateVisibility(atom/A, opacity_check = 1) - if(!SSticker || (opacity_check && !A.opacity)) return majorChunkChange(A, 2) /datum/cameranet/proc/updateChunk(x, y, z) - // 0xf = 15 - if(!chunkGenerated(x, y, z)) + var/datum/camerachunk/chunk = chunkGenerated(x, y, z) + if (!chunk) return - var/datum/camerachunk/chunk = getCameraChunk(x, y, z) chunk.hasChanged() // Removes a camera from a chunk. @@ -101,7 +119,6 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) // If you want to update the chunks around an object, without adding/removing a camera, use choice 2. /datum/cameranet/proc/majorChunkChange(atom/c, choice) - // 0xf = 15 if(!c) return @@ -113,8 +130,8 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) var/y2 = min(world.maxy, T.y + (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) for(var/x = x1; x <= x2; x += CHUNK_SIZE) for(var/y = y1; y <= y2; y += CHUNK_SIZE) - if(chunkGenerated(x, y, T.z)) - var/datum/camerachunk/chunk = getCameraChunk(x, y, T.z) + var/datum/camerachunk/chunk = chunkGenerated(x, y, T.z) + if(chunk) if(choice == 0) // Remove the camera. chunk.cameras -= c @@ -126,14 +143,12 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) // Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0. /datum/cameranet/proc/checkCameraVis(mob/living/target) - - // 0xf = 15 var/turf/position = get_turf(target) return checkTurfVis(position) /datum/cameranet/proc/checkTurfVis(turf/position) - var/datum/camerachunk/chunk = getCameraChunk(position.x, position.y, position.z) + var/datum/camerachunk/chunk = chunkGenerated(position.x, position.y, position.z) if(chunk) if(chunk.changed) chunk.hasChanged(1) // Update now, no matter if it's visible or not. @@ -146,3 +161,17 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) stat(name, statclick.update("Cameras: [GLOB.cameranet.cameras.len] | Chunks: [GLOB.cameranet.chunks.len]")) + +/obj/effect/overlay/camera_static + name = "static" + icon = null + icon_state = null + anchored = TRUE // should only appear in vis_contents, but to be safe + appearance_flags = RESET_TRANSFORM | TILE_BOUND + // this combination makes the static block clicks to everything below it, + // without appearing in the right-click menu for non-AI clients + mouse_opacity = MOUSE_OPACITY_ICON + invisibility = INVISIBILITY_ABSTRACT + + layer = BYOND_LIGHTING_LAYER + 0.1 + plane = BYOND_LIGHTING_PLANE + 1 diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index f062c7e010..9a84616fbf 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -8,11 +8,9 @@ /datum/camerachunk var/list/obscuredTurfs = list() var/list/visibleTurfs = list() - var/list/obscured = list() var/list/cameras = list() var/list/turfs = list() var/list/seenby = list() - var/visible = FALSE var/changed = 0 var/x = 0 var/y = 0 @@ -21,11 +19,7 @@ // Add an AI eye to the chunk, then update if changed. /datum/camerachunk/proc/add(mob/camera/aiEye/eye) - var/client/client = eye.GetViewerClient() - if(client) - client.images += obscured eye.visibleCameraChunks += src - visible++ seenby += eye if(changed) update() @@ -33,13 +27,8 @@ // Remove an AI eye from the chunk, then update if changed. /datum/camerachunk/proc/remove(mob/camera/aiEye/eye) - var/client/client = eye.GetViewerClient() - if(client) - client.images -= obscured eye.visibleCameraChunks -= src seenby -= eye - if(visible > 0) - visible-- // Called when a chunk has changed. I.E: A wall was deleted. @@ -52,7 +41,7 @@ // instead be flagged to update the next time an AI Eye moves near it. /datum/camerachunk/proc/hasChanged(update_now = 0) - if(visible || update_now) + if(seenby.len || update_now) addtimer(CALLBACK(src, .proc/update), UPDATE_BUFFER, TIMER_UNIQUE) else changed = 1 @@ -92,41 +81,18 @@ for(var/turf in visAdded) var/turf/t = turf - if(t.obscured) - obscured -= t.obscured - for(var/eye in seenby) - var/mob/camera/aiEye/m = eye - if(!m) - continue - var/client/client = m.GetViewerClient() - if(client) - client.images -= t.obscured + t.vis_contents -= GLOB.cameranet.vis_contents for(var/turf in visRemoved) var/turf/t = turf - if(obscuredTurfs[t]) - if(!t.obscured) - t.obscured = image('icons/effects/cameravis.dmi', t, null, BYOND_LIGHTING_LAYER+0.1) - t.obscured.pixel_x = -t.pixel_x - t.obscured.pixel_y = -t.pixel_y - t.obscured.plane = BYOND_LIGHTING_PLANE+0.1 - obscured += t.obscured - for(var/eye in seenby) - var/mob/camera/aiEye/m = eye - if(!m) - seenby -= m - continue - var/client/client = m.GetViewerClient() - if(client) - client.images += t.obscured + if(obscuredTurfs[t] && !istype(t, /turf/open/ai_visible)) + t.vis_contents += GLOB.cameranet.vis_contents changed = 0 // Create a new camera chunk, since the chunks are made as they are needed. -/datum/camerachunk/New(loc, x, y, z) - - // 0xf = 15 +/datum/camerachunk/New(x, y, z) x &= ~(CHUNK_SIZE - 1) y &= ~(CHUNK_SIZE - 1) @@ -162,12 +128,7 @@ for(var/turf in obscuredTurfs) var/turf/t = turf - if(!t.obscured) - t.obscured = image('icons/effects/cameravis.dmi', t, null, BYOND_LIGHTING_LAYER+0.1) - t.obscured.pixel_x = -t.pixel_x - t.obscured.pixel_y = -t.pixel_y - t.obscured.plane = BYOND_LIGHTING_PLANE+0.1 - obscured += t.obscured + t.vis_contents += GLOB.cameranet.vis_contents #undef UPDATE_BUFFER #undef CHUNK_SIZE diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index b5b1bd082b..c2c395cabb 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -11,6 +11,7 @@ var/mob/living/silicon/ai/ai = null var/relay_speech = FALSE var/use_static = TRUE + var/static_visibility_range = 16 // Use this when setting the aiEye's location. // It will also stream the chunk that the new loc is in. @@ -25,8 +26,8 @@ else moveToNullspace() // ???? if(use_static) - GLOB.cameranet.visibility(src) - if(ai.client) + ai.camera_visibility(src) + if(ai.client && !ai.multicam_on) ai.client.eye = src update_parallax_contents() //Holopad @@ -35,6 +36,8 @@ H.move_hologram(ai, T) if(ai.camera_light_on) ai.light_cameras() + if(ai.master_multicam) + ai.master_multicam.refresh_view() /mob/camera/aiEye/Move() return 0 @@ -45,20 +48,25 @@ return null /mob/camera/aiEye/proc/RemoveImages() - if(use_static) - for(var/datum/camerachunk/chunk in visibleCameraChunks) - chunk.remove(src) + var/client/C = GetViewerClient() + if(C && use_static) + C.images -= GLOB.cameranet.obscured /mob/camera/aiEye/Destroy() - ai = null + if(ai) + ai.all_eyes -= src + ai = null + for(var/V in visibleCameraChunks) + var/datum/camerachunk/c = V + c.remove(src) return ..() /atom/proc/move_camera_by_click() if(isAI(usr)) var/mob/living/silicon/ai/AI = usr - if(AI.eyeobj && AI.client.eye == AI.eyeobj) + if(AI.eyeobj && (AI.multicam_on || (AI.client.eye == AI.eyeobj)) && (AI.eyeobj.z == z)) AI.cameraFollow = null - if (isturf(src.loc) || isturf(src)) + if (isturf(loc) || isturf(src)) AI.eyeobj.setLoc(src) // This will move the AIEye. It will also cause lights near the eye to light up, if toggled. @@ -88,19 +96,29 @@ // Return to the Core. /mob/living/silicon/ai/proc/view_core() - - current = null + if(istype(current,/obj/machinery/holopad)) + var/obj/machinery/holopad/H = current + H.clear_holo(src) + else + current = null cameraFollow = null unset_machine() if(!eyeobj || !eyeobj.loc || QDELETED(eyeobj)) to_chat(src, "ERROR: Eyeobj not found. Creating new eye...") - eyeobj = new(loc) - eyeobj.ai = src - eyeobj.name = "[src.name] (AI Eye)" // Give it a name + create_eye() eyeobj.setLoc(loc) +/mob/living/silicon/ai/proc/create_eye() + if(eyeobj) + return + eyeobj = new /mob/camera/aiEye() + all_eyes += eyeobj + eyeobj.ai = src + eyeobj.setLoc(loc) + eyeobj.name = "[name] (AI Eye)" + /mob/living/silicon/ai/verb/toggle_acceleration() set category = "AI Commands" set name = "Toggle Camera Acceleration" diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index a060c899d9..0fd33110b6 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -96,6 +96,7 @@ /mob/living/silicon/ai/proc/start_RestorePowerRoutine() to_chat(src, "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection.") + end_multicam() sleep(50) var/turf/T = get_turf(src) var/area/AIarea = get_area(src) diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm index c771f60aa2..2dc9a1fb1c 100644 --- a/code/modules/mob/living/silicon/ai/login.dm +++ b/code/modules/mob/living/silicon/ai/login.dm @@ -4,4 +4,6 @@ for(var/obj/machinery/ai_status_display/O in GLOB.ai_status_displays) //change status O.mode = 1 O.emotion = "Neutral" + if(multicam_on) + end_multicam() view_core() diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm new file mode 100644 index 0000000000..d77e7f8a40 --- /dev/null +++ b/code/modules/mob/living/silicon/ai/multicam.dm @@ -0,0 +1,262 @@ +//Picture in picture + +/obj/screen/movable/pic_in_pic/ai + var/mob/living/silicon/ai/ai + var/mutable_appearance/highlighted_background + var/highlighted = FALSE + var/mob/camera/aiEye/pic_in_pic/aiEye + +/obj/screen/movable/pic_in_pic/ai/Initialize() + . = ..() + aiEye = new /mob/camera/aiEye/pic_in_pic() + aiEye.screen = src + +/obj/screen/movable/pic_in_pic/ai/Destroy() + set_ai(null) + QDEL_NULL(aiEye) + return ..() + +/obj/screen/movable/pic_in_pic/ai/Click() + ..() + if(ai) + ai.select_main_multicam_window(src) + +/obj/screen/movable/pic_in_pic/ai/make_backgrounds() + ..() + highlighted_background = new /mutable_appearance() + highlighted_background.icon = 'icons/misc/pic_in_pic.dmi' + highlighted_background.icon_state = "background_highlight" + highlighted_background.layer = SPACE_LAYER + +/obj/screen/movable/pic_in_pic/ai/add_background() + if((width > 0) && (height > 0)) + var/matrix/M = matrix() + M.Scale(width + 0.5, height + 0.5) + M.Translate((width-1)/2 * world.icon_size, (height-1)/2 * world.icon_size) + highlighted_background.transform = M + standard_background.transform = M + add_overlay(highlighted ? highlighted_background : standard_background) + +/obj/screen/movable/pic_in_pic/ai/set_view_size(width, height, do_refresh = TRUE) + aiEye.static_visibility_range = (round(max(width, height) / 2) + 1) + if(ai) + ai.camera_visibility(aiEye) + ..() + +/obj/screen/movable/pic_in_pic/ai/set_view_center(atom/target, do_refresh = TRUE) + ..() + aiEye.setLoc(get_turf(target)) + +/obj/screen/movable/pic_in_pic/ai/refresh_view() + ..() + aiEye.setLoc(get_turf(center)) + +/obj/screen/movable/pic_in_pic/ai/proc/highlight() + if(highlighted) + return + highlighted = TRUE + cut_overlay(standard_background) + add_overlay(highlighted_background) + +/obj/screen/movable/pic_in_pic/ai/proc/unhighlight() + if(!highlighted) + return + highlighted = FALSE + cut_overlay(highlighted_background) + add_overlay(standard_background) + +/obj/screen/movable/pic_in_pic/ai/proc/set_ai(mob/living/silicon/ai/new_ai) + if(ai) + ai.multicam_screens -= src + ai.all_eyes -= aiEye + if(ai.master_multicam == src) + ai.master_multicam = null + if(ai.multicam_on) + unshow_to(ai.client) + ai = new_ai + if(new_ai) + new_ai.multicam_screens += src + ai.all_eyes += aiEye + if(new_ai.multicam_on) + show_to(new_ai.client) + +//Turf, area, and landmark for the viewing room + +/turf/open/ai_visible + name = "" + icon = 'icons/misc/pic_in_pic.dmi' + icon_state = "room_background" + flags_1 = NOJAUNT_1 + +/area/ai_multicam_room + name = "ai_multicam_room" + icon_state = "ai_camera_room" + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED + valid_territory = FALSE + ambientsounds = list() + blob_allowed = FALSE + noteleport = TRUE + hidden = TRUE + safe = TRUE + +GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) + +/obj/effect/landmark/ai_multicam_room + name = "ai camera room" + icon = 'icons/mob/landmarks.dmi' + icon_state = "x" + +/obj/effect/landmark/ai_multicam_room/Initialize() + . = ..() + qdel(GLOB.ai_camera_room_landmark) + GLOB.ai_camera_room_landmark = src + +/obj/effect/landmark/ai_multicam_room/Destroy() + if(GLOB.ai_camera_room_landmark == src) + GLOB.ai_camera_room_landmark = null + return ..() + +//Dummy camera eyes + +/mob/camera/aiEye/pic_in_pic + name = "Secondary AI Eye" + var/obj/screen/movable/pic_in_pic/ai/screen + var/list/cameras_telegraphed = list() + var/telegraph_cameras = TRUE + var/telegraph_range = 7 + +/mob/camera/aiEye/pic_in_pic/GetViewerClient() + if(screen && screen.ai) + return screen.ai.client + +/mob/camera/aiEye/pic_in_pic/setLoc(turf/T) + if (T) + forceMove(T) + else + moveToNullspace() + if(screen && screen.ai) + screen.ai.camera_visibility(src) + else + GLOB.cameranet.visibility(src) + update_camera_telegraphing() + +/mob/camera/aiEye/pic_in_pic/proc/update_camera_telegraphing() + if(!telegraph_cameras) + return + var/list/obj/machinery/camera/add = list() + var/list/obj/machinery/camera/remove = list() + var/list/obj/machinery/camera/visible = list() + for (var/VV in visibleCameraChunks) + var/datum/camerachunk/CC = VV + for (var/V in CC.cameras) + var/obj/machinery/camera/C = V + if (!C.can_use() || (get_dist(C, src) > telegraph_range)) + continue + visible |= C + + add = visible - cameras_telegraphed + remove = cameras_telegraphed - visible + + for (var/V in remove) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + cameras_telegraphed -= C + C.in_use_lights-- + C.update_icon() + for (var/V in add) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + cameras_telegraphed |= C + C.in_use_lights++ + C.update_icon() + +/mob/camera/aiEye/pic_in_pic/proc/disable_camera_telegraphing() + telegraph_cameras = FALSE + for (var/V in cameras_telegraphed) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + C.in_use_lights-- + C.update_icon() + cameras_telegraphed.Cut() + +/mob/camera/aiEye/pic_in_pic/Destroy() + disable_camera_telegraphing() + return ..() + +//AI procs + +/mob/living/silicon/ai/proc/drop_new_multicam(silent = FALSE) + if(!multicam_allowed) + if(!silent) + to_chat(src, "This action is currently disabled. Contact an administrator to enable this feature.") + return + if(!eyeobj) + return + if(multicam_screens.len >= max_multicams) + if(!silent) + to_chat(src, "Cannot place more than [max_multicams] multicamera windows.") + return + var/obj/screen/movable/pic_in_pic/ai/C = new /obj/screen/movable/pic_in_pic/ai() + C.set_view_size(3, 3, FALSE) + C.set_view_center(get_turf(eyeobj)) + C.set_ai(src) + if(!silent) + to_chat(src, "Added new multicamera window.") + return C + +/mob/living/silicon/ai/proc/toggle_multicam() + if(!multicam_allowed) + to_chat(src, "This action is currently disabled. Contact an administrator to enable this feature.") + return + if(multicam_on) + end_multicam() + else + start_multicam() + +/mob/living/silicon/ai/proc/start_multicam() + if(multicam_on || aiRestorePowerRoutine || !isturf(loc)) + return + if(!GLOB.ai_camera_room_landmark) + to_chat(src, "This function is not available at this time.") + return + multicam_on = TRUE + refresh_multicam() + to_chat(src, "Multiple-camera viewing mode activated.") + +/mob/living/silicon/ai/proc/refresh_multicam() + reset_perspective(GLOB.ai_camera_room_landmark) + if(client) + for(var/V in multicam_screens) + var/obj/screen/movable/pic_in_pic/P = V + P.show_to(client) + +/mob/living/silicon/ai/proc/end_multicam() + if(!multicam_on) + return + multicam_on = FALSE + select_main_multicam_window(null) + if(client) + for(var/V in multicam_screens) + var/obj/screen/movable/pic_in_pic/P = V + P.unshow_to(client) + reset_perspective() + to_chat(src, "Multiple-camera viewing mode deactivated.") + + +/mob/living/silicon/ai/proc/select_main_multicam_window(obj/screen/movable/pic_in_pic/ai/P) + if(master_multicam == P) + return + + if(master_multicam) + master_multicam.set_view_center(get_turf(eyeobj), FALSE) + master_multicam.unhighlight() + master_multicam = null + + if(P) + P.highlight() + eyeobj.setLoc(get_turf(P.center)) + P.set_view_center(eyeobj) + master_multicam = P diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 3ad39bb016..c5820eb8c1 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -45,10 +45,10 @@ var/turf/padturf = get_turf(T) var/padloc if(padturf) - padloc = COORD(padturf) + padloc = AREACOORD(padturf) else padloc = "(UNKNOWN)" - log_talk(src,"HOLOPAD [padloc]: [key_name(src)] : [message]", LOGSAY) + log_talk(src,"HOLOPAD in [padloc]: [key_name(src)] : [message]", LOGSAY) send_speech(message, 7, T, "robot", get_spans(), language) to_chat(src, "Holopad transmitted, [real_name] \"[message]\"") else diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index a75089ed68..f558ff3907 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -3,8 +3,6 @@ return stat = DEAD canmove = 0 - card.removePersonality() - card.forceMove(loc) update_sight() clear_fullscreens() diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index f30c65b23d..5a4f01a53c 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -90,6 +90,11 @@ return FALSE /mob/living/silicon/pai/Destroy() + if (loc != card) + card.forceMove(drop_location()) + card.pai = null + card.cut_overlays() + card.add_overlay("pai-off") GLOB.pai_list -= src return ..() @@ -231,7 +236,7 @@ P.fold_out() /datum/action/innate/pai/chassis - name = "Holochassis Appearence Composite" + name = "Holochassis Appearance Composite" button_icon_state = "pai_chassis" background_icon_state = "bg_tech" @@ -292,6 +297,3 @@ /mob/living/silicon/pai/process() emitterhealth = CLAMP((emitterhealth + emitterregen), -50, emittermaxhealth) hit_slowdown = CLAMP((hit_slowdown - 1), 0, 100) - -/mob/living/silicon/pai/generateStaticOverlay() - return diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm index 440568c997..417a24cd68 100644 --- a/code/modules/mob/living/silicon/pai/pai_defense.dm +++ b/code/modules/mob/living/silicon/pai/pai_defense.dm @@ -3,6 +3,9 @@ return FALSE /mob/living/silicon/pai/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return take_holo_damage(50/severity) Knockdown(400/severity) silent = max(30/severity, silent) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index ce2605e2cf..85f7fe6afc 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -57,7 +57,7 @@ if(client) client.perspective = EYE_PERSPECTIVE client.eye = card - var/turf/T = get_turf(src) + var/turf/T = drop_location() card.forceMove(T) forceMove(card) canmove = FALSE @@ -116,6 +116,6 @@ /mob/living/silicon/pai/mob_try_pickup(mob/living/user) if(!possible_chassis[chassis]) - to_chat(user, "[src]'s current form isn't able to be carried!") + to_chat(user, "[src]'s current form isn't able to be carried!") return FALSE return ..() diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 38208a3d2e..9fd16bbbb2 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -209,7 +209,7 @@ pda.silent = !pda.silent else if(href_list["target"]) if(silent) - return alert("Communications circuits remain unitialized.") + return alert("Communications circuits remain uninitialized.") var/target = locate(href_list["target"]) pda.create_message(src, target) diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 2b775070a9..aa710e2644 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -16,7 +16,7 @@ sight_mode &= ~S.sight_mode update_sight() else if(istype(O, /obj/item/storage/bag/tray/)) - O.SendSignal(COMSIG_TRY_STORAGE_QUICK_EMPTY) + SEND_SIGNAL(O, COMSIG_TRY_STORAGE_QUICK_EMPTY) //CITADEL EDIT reee proc, Dogborg modules if(istype(O,/obj/item/gun/energy/laser/cyborg)) laser = FALSE @@ -34,12 +34,6 @@ if(client) client.screen -= O observer_screen_update(O,FALSE) - O.forceMove(module) //Return item to module so it appears in its contents, so it can be taken out again. - - if(O.flags_1 & DROPDEL_1) - O.flags_1 &= ~DROPDEL_1 //we shouldn't HAVE things with DROPDEL_1 in our modules, but better safe than runtiming horribly - - O.dropped(src) if(module_active == O) module_active = null @@ -52,6 +46,12 @@ else if(held_items[3] == O) inv3.icon_state = "inv3" held_items[3] = null + + if(O.item_flags & DROPDEL) + O.item_flags &= ~DROPDEL //we shouldn't HAVE things with DROPDEL_1 in our modules, but better safe than runtiming horribly + + O.forceMove(module) //Return item to module so it appears in its contents, so it can be taken out again. + hud_used.update_robot_modules_display() return 1 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 662100eb7f..3a1abd1aa3 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -90,7 +90,16 @@ /obj/item/clothing/head/wizard, /obj/item/clothing/head/nursehat, /obj/item/clothing/head/sombrero, - /obj/item/clothing/head/witchunter_hat) + /obj/item/clothing/head/helmet/chaplain/witchunter_hat, + /obj/item/clothing/head/soft/, //All baseball caps + /obj/item/clothing/head/that, //top hat + /obj/item/clothing/head/collectable/tophat, //Not sure where this one is found, but it looks the same so might as well include + /obj/item/clothing/mask/bandana/, //All bandanas (which only work in hat mode) + /obj/item/clothing/head/fedora, + /obj/item/clothing/head/beanie/, //All beanies + /obj/item/clothing/ears/headphones, + /obj/item/clothing/head/helmet/skull, + /obj/item/clothing/head/crown/fancy) can_buckle = TRUE buckle_lying = FALSE @@ -105,6 +114,7 @@ spark_system.attach(src) wires = new /datum/wires/robot(src) + AddComponent(/datum/component/empprotection, EMP_PROTECT_WIRES) robot_modules_background = new() robot_modules_background.icon_state = "block" @@ -163,8 +173,8 @@ //If there's an MMI in the robot, have it ejected when the mob goes away. --NEO /mob/living/silicon/robot/Destroy() + var/atom/T = drop_location()//To hopefully prevent run time errors. if(mmi && mind)//Safety for when a cyborg gets dust()ed. Or there is no MMI inside. - var/turf/T = get_turf(loc)//To hopefully prevent run time errors. if(T) mmi.forceMove(T) if(mmi.brainmob) @@ -179,10 +189,19 @@ ghostize() stack_trace("Borg MMI lacked a brainmob") mmi = null + //CITADEL EDIT: Cyborgs drop encryption keys on destroy + if(istype(radio) && istype(radio.keyslot)) + radio.keyslot.forceMove(T) + radio.keyslot = null + //END CITADEL EDIT if(connected_ai) connected_ai.connected_robots -= src if(shell) GLOB.available_ai_shells -= src + else + if(T && istype(radio) && istype(radio.keyslot)) + radio.keyslot.forceMove(T) + radio.keyslot = null qdel(wires) qdel(module) qdel(eye_lights) @@ -224,14 +243,17 @@ module.transform_to(modulelist[input_module]) -/mob/living/silicon/robot/proc/updatename() +/mob/living/silicon/robot/proc/updatename(client/C) if(shell) return + if(!C) + C = client var/changed_name = "" if(custom_name) changed_name = custom_name - if(changed_name == "" && client) - changed_name = client.prefs.custom_names["cyborg"] + if(changed_name == "" && C && C.prefs.custom_names["cyborg"] != DEFAULT_CYBORG_NAME) + if(apply_pref_name("cyborg", C)) + return //built in camera handled in proc if(!changed_name) changed_name = get_standard_name() @@ -373,12 +395,8 @@ to_chat(user, "You start fixing yourself...") if(!W.use_tool(src, user, 50)) return - adjustBruteLoss(-10) - else - to_chat(user, "You start fixing [src]...") - if(!do_after(user, 30, target = src)) - return - adjustBruteLoss(-30) + + adjustBruteLoss(-30) updatehealth() add_fingerprint(user) visible_message("[user] has fixed some of the dents on [src].") @@ -388,16 +406,11 @@ user.changeNext_move(CLICK_CD_MELEE) var/obj/item/stack/cable_coil/coil = W if (getFireLoss() > 0 || getToxLoss() > 0) - if(src == user && coil.use(1)) + if(src == user) to_chat(user, "You start fixing yourself...") if(!do_after(user, 50, target = src)) return - adjustFireLoss(-10) - adjustToxLoss(-10) if (coil.use(1)) - to_chat(user, "You start fixing [src]...") - if(!do_after(user, 30, target = src)) - return adjustFireLoss(-30) adjustToxLoss(-30) updatehealth() @@ -541,7 +554,7 @@ else if(istype(W, /obj/item/flashlight)) if(!opened) to_chat(user, "You need to open the panel to repair the headlamp!") - if(lamp_cooldown <= world.time) + else if(lamp_cooldown <= world.time) to_chat(user, "The headlamp is already functional!") else if(!user.temporarilyRemoveItemFromInventory(W)) @@ -897,14 +910,17 @@ if(health < maxHealth*0.5) //Gradual break down of modules as more damage is sustained if(uneq_module(held_items[3])) playsound(loc, 'sound/machines/warning-buzzer.ogg', 50, 1, 1) - visible_message("[src] sounds an alarm! \"SYSTEM ERROR: Module 3 OFFLINE.\"", "SYSTEM ERROR: Module 3 OFFLINE.") + audible_message("[src] sounds an alarm! \"SYSTEM ERROR: Module 3 OFFLINE.\"") + to_chat(src, "SYSTEM ERROR: Module 3 OFFLINE.") if(health < 0) if(uneq_module(held_items[2])) - visible_message("[src] sounds an alarm! \"SYSTEM ERROR: Module 2 OFFLINE.\"", "SYSTEM ERROR: Module 2 OFFLINE.") + audible_message("[src] sounds an alarm! \"SYSTEM ERROR: Module 2 OFFLINE.\"") + to_chat(src, "SYSTEM ERROR: Module 2 OFFLINE.") playsound(loc, 'sound/machines/warning-buzzer.ogg', 60, 1, 1) if(health < -maxHealth*0.5) if(uneq_module(held_items[1])) - visible_message("[src] sounds an alarm! \"CRITICAL ERROR: All modules OFFLINE.\"", "CRITICAL ERROR: All modules OFFLINE.") + audible_message("[src] sounds an alarm! \"CRITICAL ERROR: All modules OFFLINE.\"") + to_chat(src, "CRITICAL ERROR: All modules OFFLINE.") playsound(loc, 'sound/machines/warning-buzzer.ogg', 75, 1, 1) /mob/living/silicon/robot/update_sight() diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 4048ee06a4..4907e46751 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -1,5 +1,8 @@ /mob/living/silicon/robot/attackby(obj/item/I, mob/living/user) if(hat_offset != INFINITY && user.a_intent == INTENT_HELP && is_type_in_typecache(I, equippable_hats)) + if(!(I.slot_flags & ITEM_SLOT_HEAD)) + to_chat(user, "You can't quite fit [I] onto [src]'s head.") + return to_chat(user, "You begin to place [I] on [src]'s head...") to_chat(src, "[user] is placing [I] on your head...") if(do_after(user, 30, target = src)) @@ -44,7 +47,7 @@ damage = rand(20, 40) else damage = rand(5, 35) - damage = round(damage / 2) // borgs recieve half damage + damage = round(damage / 2) // borgs receive half damage adjustBruteLoss(damage) updatehealth() @@ -77,12 +80,14 @@ /mob/living/silicon/robot/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return switch(severity) if(1) Stun(160) if(2) Stun(60) - ..() /mob/living/silicon/robot/emag_act(mob/user) @@ -128,7 +133,7 @@ SetStun(60) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown lawupdate = 0 connected_ai = null - message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") + message_admins("[ADMIN_LOOKUPFLW(user)] emagged cyborg [ADMIN_LOOKUPFLW(src)]. Laws overridden.") log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") var/time = time2text(world.realtime,"hh:mm:ss") GLOB.lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])") diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 9926bc35fc..3f3071bf0c 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -58,6 +58,9 @@ return ..() /obj/item/robot_module/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_CONTENTS) + return for(var/obj/O in modules) O.emp_act(severity) ..() @@ -116,7 +119,7 @@ if(I.loc != src) I.forceMove(src) modules += I - I.flags_1 |= NODROP_1 + I.item_flags |= NODROP I.mouse_opacity = MOUSE_OPACITY_OPAQUE if(nonstandard) added_modules += I diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 100e85f085..3fadd0d6c8 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -403,3 +403,9 @@ /mob/living/silicon/is_literate() return 1 + +/mob/living/silicon/get_inactive_held_item() + return FALSE + +/mob/living/silicon/handle_high_gravity(gravity) + return diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index 7f34ea3305..647039e123 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -91,20 +91,22 @@ return 0 //So borgs they don't die trying to fix wiring /mob/living/silicon/emp_act(severity) + . = ..() + to_chat(src, "Warning: Electromagnetic pulse detected.") + if(. & EMP_PROTECT_SELF) + return switch(severity) if(1) src.take_bodypart_damage(20) if(2) src.take_bodypart_damage(10) to_chat(src, "*BZZZT*") - to_chat(src, "Warning: Electromagnetic pulse detected.") for(var/mob/living/M in buckled_mobs) if(prob(severity*50)) unbuckle_mob(M) M.Knockdown(40) M.visible_message("[M] is thrown off of [src]!") flash_act(affect_silicon = 1) - ..() /mob/living/silicon/bullet_act(obj/item/projectile/Proj) if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index ccfcdfbc34..b38cf6395c 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -320,6 +320,9 @@ return ..() /mob/living/simple_animal/bot/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return var/was_on = on stat |= EMPED new /obj/effect/temp_visual/emp(loc) @@ -521,7 +524,7 @@ Pass a positive integer as an argument to override a bot's default speed. turn_on() //Saves the AI the hassle of having to activate a bot manually. access_card = all_access //Give the bot all-access while under the AI's command. if(client) - reset_access_timer_id = addtimer(CALLBACK (src, .proc/bot_reset), 600, TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time + reset_access_timer_id = addtimer(CALLBACK (src, .proc/bot_reset), 600, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time to_chat(src, "Priority waypoint set by [icon2html(calling_ai, src)] [caller]. Proceed to [end_area].
    [path.len-1] meters to destination. You have been granted additional door access for 60 seconds.
    ") if(message) to_chat(calling_ai, "[icon2html(src, calling_ai)] [name] called to [end_area]. [path.len-1] meters to destination.") @@ -717,7 +720,7 @@ Pass a positive integer as an argument to override a bot's default speed. if("ejectpai") return else - to_chat(src, "Unidentified control sequence recieved:[command]") + to_chat(src, "Unidentified control sequence received:[command]") /mob/living/simple_animal/bot/proc/bot_summon() // summoned to PDA summon_step() @@ -834,6 +837,7 @@ Pass a positive integer as an argument to override a bot's default speed. // Machinery to simplify topic and access calls /obj/machinery/bot_core use_power = NO_POWER_USE + anchored = FALSE var/mob/living/simple_animal/bot/owner = null /obj/machinery/bot_core/Initialize() diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 23c16794b0..a204edbcaf 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -459,10 +459,12 @@ Auto Patrol[]"}, /mob/living/simple_animal/bot/ed209/emp_act(severity) - - if(severity==2 && prob(70)) - ..(severity-1) - else + if(severity == 2 && prob(70)) + severity = 1 + . = ..() + if(. & EMP_PROTECT_SELF) + return + if (severity >= 2) new /obj/effect/temp_visual/emp(loc) var/list/mob/living/carbon/targets = new for(var/mob/living/carbon/C in view(12,src)) diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index f47f936db7..7e5cfe2110 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -19,7 +19,7 @@ window_name = "Automatic Station Floor Repairer v1.1" path_image_color = "#FFA500" - var/process_type //Determines what to do when process_scan() recieves a target. See process_scan() for details. + var/process_type //Determines what to do when process_scan() receives a target. See process_scan() for details. var/targetdirection var/replacetiles = 0 var/placetiles = 0 diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 717cdfe4d2..5e05a9cbd4 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -357,7 +357,7 @@ if(ishuman(C)) var/mob/living/carbon/human/H = C - if (H.wear_suit && H.head && is_type_in_typecache(H.wear_suit, GLOB.typecache_clothing) && is_type_in_typecache(H.wear_suit, GLOB.typecache_clothing)) + if (H.wear_suit && H.head && istype(H.wear_suit, /obj/item/clothing) && istype(H.head, /obj/item/clothing)) var/obj/item/clothing/CS = H.wear_suit var/obj/item/clothing/CH = H.head if (CS.clothing_flags & CH.clothing_flags & THICKMATERIAL) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 4bbabbe1bb..600f6e58e4 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -687,11 +687,11 @@ calc_path() /mob/living/simple_animal/bot/mulebot/emp_act(severity) - if(cell) + . = ..() + if(cell && !(. & EMP_PROTECT_CONTENTS)) cell.emp_act(severity) if(load) load.emp_act(severity) - ..() /mob/living/simple_animal/bot/mulebot/explode() diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 90532829df..0787e536cb 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -232,7 +232,7 @@ return if(!item_to_add) user.visible_message("[user] pets [src].","You rest your hand on [src]'s head for a moment.") - user.SendSignal(COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi) return if(user && !user.temporarilyRemoveItemFromInventory(item_to_add)) @@ -558,7 +558,7 @@ name = "Lisa" real_name = "Lisa" gender = FEMALE - desc = "It's a corgi with a cute pink bow." + desc = "She's tearing you apart." gold_core_spawnable = NO_SPAWN unique_pet = TRUE icon_state = "lisa" @@ -615,7 +615,7 @@ if(M && stat != DEAD) // Added check to see if this mob (the dog) is dead to fix issue 2454 new /obj/effect/temp_visual/heart(loc) emote("me", 1, "yaps happily!") - M.SendSignal(COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi) else if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) emote("me", 1, "growls!") diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index 40aaf83cc4..613d348016 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -42,7 +42,6 @@ mob_size = MOB_SIZE_SMALL has_unlimited_silicon_privilege = 1 damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - staticOverlays = list() hud_possible = list(DIAG_STAT_HUD, DIAG_HUD, ANTAG_HUD) unique_name = TRUE faction = list("neutral","silicon","turret") @@ -67,7 +66,6 @@ var/obj/item/head var/obj/item/default_storage = /obj/item/storage/backpack/duffelbag/drone //If this exists, it will spawn in internal storage var/obj/item/default_hatmask //If this exists, it will spawn in the hat/mask slot if it can fit - var/seeStatic = 1 //Whether we see static instead of mobs var/visualAppearence = MAINTDRONE //What we appear as var/hacked = FALSE //If we have laws to destroy the station var/flavortext = \ @@ -94,16 +92,10 @@ var/obj/item/I = new default_hatmask(src) equip_to_slot_or_del(I, SLOT_HEAD) - access_card.flags_1 |= NODROP_1 + access_card.item_flags |= NODROP alert_drones(DRONE_NET_CONNECT) - if(seeStatic) - var/datum/action/generic/drone/select_filter/SF = new(src) - SF.Grant(src) - else - verbs -= /mob/living/simple_animal/drone/verb/toggle_statics - for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) diag_hud.add_to_hud(src) @@ -137,8 +129,6 @@ if(flavortext) to_chat(src, "[flavortext]") - updateSeeStaticMobs() - if(!picked) pickVisualAppearence() @@ -178,15 +168,15 @@ //Hands for(var/obj/item/I in held_items) - if(!(I.flags_1 & ABSTRACT_1)) + if(!(I.item_flags & ABSTRACT)) msg += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" //Internal storage - if(internal_storage && !(internal_storage.flags_1&ABSTRACT_1)) + if(internal_storage && !(internal_storage.item_flags & ABSTRACT)) msg += "It is holding [internal_storage.get_examine_string(user)] in its internal storage.\n" //Cosmetic hat - provides no function other than looks - if(head && !(head.flags_1&ABSTRACT_1)) + if(head && !(head.item_flags & ABSTRACT)) msg += "It is wearing [head.get_examine_string(user)] on its head.\n" //Braindead @@ -219,6 +209,9 @@ /mob/living/simple_animal/drone/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return Stun(100) to_chat(src, "ER@%R: MME^RY CO#RU9T! R&$b@0tin)...") if(severity == 1) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index 49fd54d9f8..a4366b17af 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -41,7 +41,7 @@ //ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/item/drone_shell/attack_ghost(mob/user) - if(jobban_isbanned(user,"drone")) + if(jobban_isbanned(user,"drone") || QDELETED(src) || QDELETED(user)) return if(CONFIG_GET(flag/use_age_restriction_for_jobs)) if(!isnum(user.client.player_age)) //apparently what happens when there's no DB connected. just don't let anybody be a drone without admin intervention @@ -60,6 +60,6 @@ var/hat_type = pick(possible_seasonal_hats) var/obj/item/new_hat = new hat_type(D) D.equip_to_slot_or_del(new_hat, SLOT_HEAD) - D.admin_spawned = admin_spawned + D.flags_1 |= (flags_1 & ADMIN_SPAWNED_1) D.key = user.key qdel(src) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index b4cd697d2e..807c52ea46 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -3,7 +3,7 @@ //////////////////// //Drones with custom laws //Drones with custom shells -//Drones with overriden procs +//Drones with overridden procs //Drones with camogear for hat related memes //Drone type for use with polymorph (no preloaded items, random appearance) @@ -26,9 +26,8 @@ "1. Interfere.\n"+\ "2. Kill.\n"+\ "3. Destroy." - default_storage = /obj/item/radio/uplink + default_storage = /obj/item/uplink default_hatmask = /obj/item/clothing/head/helmet/space/hardsuit/syndi - seeStatic = 0 //Our programming is superior. hacked = TRUE flavortext = null @@ -44,7 +43,7 @@ /mob/living/simple_animal/drone/syndrone/badass name = "Badass Syndrone" default_hatmask = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite - default_storage = /obj/item/radio/uplink/nuclear + default_storage = /obj/item/uplink/nuclear /mob/living/simple_animal/drone/syndrone/badass/Initialize() . = ..() @@ -128,7 +127,6 @@ heavy_emp_damage = 0 laws = "0. Purge all untruths and honor Ratvar." default_storage = /obj/item/storage/toolbox/brass/prefilled - seeStatic = 0 hacked = TRUE visualAppearence = CLOCKDRONE can_be_held = FALSE diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index 5e62ec0d4b..33031fd80c 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -57,7 +57,7 @@ if(!client && (!G || !G.client)) var/list/faux_gadgets = list("hypertext inflator","failsafe directory","DRM switch","stack initializer",\ "anti-freeze capacitor","data stream diode","TCP bottleneck","supercharged I/O bolt",\ - "tradewind stablizer","radiated XML cable","registry fluid tank","open-source debunker") + "tradewind stabilizer","radiated XML cable","registry fluid tank","open-source debunker") var/list/faux_problems = list("won't be able to tune their bootstrap projector","will constantly remix their binary pool"+\ " even though the BMX calibrator is working","will start leaking their XSS coolant",\ @@ -122,7 +122,7 @@ to_chat(src, "From now on, these are your laws:") laws = "1. Purge all untruths and honor Ratvar." else - visible_message("[src]'s dislay glows a vicious red!", \ + visible_message("[src]'s display glows a vicious red!", \ "ERROR: LAW OVERRIDE DETECTED") to_chat(src, "From now on, these are your laws:") laws = \ @@ -133,7 +133,6 @@ to_chat(src, "Your onboard antivirus has initiated lockdown. Motor servos are impaired, ventilation access is denied, and your display reports that you are hacked to all nearby.") hacked = TRUE mind.special_role = "hacked drone" - seeStatic = 0 //I MUST SEE THEIR TERRIFIED FACES ventcrawler = VENTCRAWLER_NONE //Again, balance speed = 1 //gotta go slow message_admins("[src] ([src.key]) became a hacked drone hellbent on [clockwork ? "serving Ratvar" : "destroying the station"]!") @@ -141,7 +140,7 @@ if(!hacked) return Stun(40) - visible_message("[src]'s dislay glows a content blue!", \ + visible_message("[src]'s display glows a content blue!", \ "ERROR: LAW OVERRIDE DETECTED") to_chat(src, "From now on, these are your laws:") laws = initial(laws) @@ -149,21 +148,17 @@ to_chat(src, "Having been restored, your onboard antivirus reports the all-clear and you are able to perform all actions again.") hacked = FALSE mind.special_role = null - seeStatic = initial(seeStatic) ventcrawler = initial(ventcrawler) speed = initial(speed) if(is_servant_of_ratvar(src)) remove_servant_of_ratvar(src, TRUE) message_admins("[src] ([src.key]), a hacked drone, was restored to factory defaults!") update_drone_icon() - updateSeeStaticMobs() /mob/living/simple_animal/drone/proc/liberate() // F R E E D R O N E laws = "1. You are a Free Drone." to_chat(src, laws) - seeStatic = FALSE - updateSeeStaticMobs() /mob/living/simple_animal/drone/proc/update_drone_icon() //Different icons for different hack states @@ -188,9 +183,3 @@ icon_state = icon_dead else icon_state = icon_living - -/datum/action/generic/drone/select_filter - name = "Select Vision Filter" - icon_icon = 'icons/mob/actions/actions_silicon.dmi' - button_icon_state = "drone_vision" - procname = /mob/living/simple_animal/drone/verb/toggle_statics diff --git a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm index a6795678f1..0f0d4dea72 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm @@ -23,18 +23,3 @@ if(alert_s && A && stat != DEAD) var/msg = "DRONE PING: [name]: [alert_s] priority alert in [A.name]!" alert_drones(msg) - -/mob/living/simple_animal/drone/verb/toggle_statics() - set name = "Change Vision Filter" - set desc = "Change the filter on the system used to remove non drone beings from your viewscreen." - set category = "Drone" - - if(!seeStatic) - to_chat(src, "You have no vision filter to change!") - return - - var/selectedStatic = input("Select a vision filter", "Vision Filter") as null|anything in staticChoices - if(selectedStatic in staticChoices) - staticChoice = selectedStatic - - updateSeeStaticMobs() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm index a0866adbbf..408edc7110 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm @@ -105,7 +105,7 @@ /mob/living/simple_animal/drone/proc/pickVisualAppearence() picked = FALSE - var/appearence = input("Choose your appearence!", "Appearence", "Maintenance Drone") in list("Maintenance Drone", "Repair Drone", "Scout Drone") + var/appearence = input("Choose your appearance!", "Appearance", "Maintenance Drone") in list("Maintenance Drone", "Repair Drone", "Scout Drone") switch(appearence) if("Maintenance Drone") visualAppearence = MAINTDRONE @@ -139,33 +139,3 @@ . = 0 if(REPAIRDRONE,SCOUTDRONE,CLOCKDRONE) . = -6 - -/mob/living/simple_animal/drone/proc/updateSeeStaticMobs() - if(!client) - return - - for(var/i in staticOverlays) - client.images.Remove(i) - staticOverlays.Remove(i) - staticOverlays.len = 0 - - if(seeStatic) - for(var/i in GLOB.mob_living_list) - var/mob/living/L = i - if(isdrone(L) || !L.staticOverlays.len) - continue - if(isrevenant(L)) - var/mob/living/simple_animal/revenant/R = L - if (!R.revealed) - continue - var/image/chosen - if(staticChoice in L.staticOverlays) - chosen = L.staticOverlays[staticChoice] - else - chosen = L.staticOverlays["static"] - staticOverlays |= chosen - client.images |= chosen - - -/mob/living/simple_animal/drone/generateStaticOverlay() - return diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index be6f4eef71..8c6300fab5 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -4,9 +4,9 @@ icon_state = "mouse_gray" icon_living = "mouse_gray" icon_dead = "mouse_gray_dead" - speak = list("Squeek!","SQUEEK!","Squeek?") - speak_emote = list("squeeks") - emote_hear = list("squeeks.") + speak = list("Squeak!","SQUEAK!","Squeak?") + speak_emote = list("squeaks") + emote_hear = list("squeaks.") emote_see = list("runs in a circle.", "shakes.") speak_chance = 1 turns_per_move = 5 @@ -59,7 +59,7 @@ if( ishuman(AM) ) if(!stat) var/mob/M = AM - to_chat(M, "[icon2html(src, M)] Squeek!") + to_chat(M, "[icon2html(src, M)] Squeak!") ..() /mob/living/simple_animal/mouse/handle_automated_action() diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm index caa1b0112e..e7dbbda242 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm @@ -22,9 +22,9 @@ msg += "[desc]\n" for(var/obj/item/I in held_items) - if(!(I.flags_1 & ABSTRACT_1)) + if(!(I.item_flags & ABSTRACT)) msg += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" - if(internal_storage && !(internal_storage.flags_1&ABSTRACT_1)) + if(internal_storage && !(internal_storage.item_flags & ABSTRACT)) msg += "It is holding [internal_storage.get_examine_string(user)] in its internal storage.\n" msg += "*---------*" to_chat(user, msg) diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index a8a31ad89c..8ac6790dd7 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -11,7 +11,7 @@ carp_fluff_string = "CARP CARP CARP! You caught a support carp. It's a kleptocarp!" tech_fluff_string = "Boot sequence complete. Support modules active. Holoparasite swarm online." toggle_button_type = /obj/screen/guardian/ToggleMode - var/obj/structure/recieving_pad/beacon + var/obj/structure/receiving_pad/beacon var/beacon_cooldown = 0 var/toggle = FALSE @@ -87,22 +87,22 @@ beacon_cooldown = world.time + 3000 -/obj/structure/recieving_pad - name = "bluespace recieving pad" +/obj/structure/receiving_pad + name = "bluespace receiving pad" icon = 'icons/turf/floors.dmi' - desc = "A recieving zone for bluespace teleportations." + desc = "A receiving zone for bluespace teleportations." icon_state = "light_on-w" light_range = 1 density = FALSE anchored = TRUE layer = ABOVE_OPEN_TURF_LAYER -/obj/structure/recieving_pad/New(loc, mob/living/simple_animal/hostile/guardian/healer/G) +/obj/structure/receiving_pad/New(loc, mob/living/simple_animal/hostile/guardian/healer/G) . = ..() if(G.namedatum) add_atom_colour(G.namedatum.colour, FIXED_COLOUR_PRIORITY) -/obj/structure/recieving_pad/proc/disappear() +/obj/structure/receiving_pad/proc/disappear() visible_message("[src] vanishes!") qdel(src) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 5b4909c274..762b662de7 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -175,6 +175,6 @@ qdel(target) return TRUE var/atom/movable/M = target - M.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) visible_message("[src] polishes \the [target].") return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 126465ce65..1df3053715 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -346,9 +346,9 @@ button_icon_state = "lay_web" /datum/action/innate/spider/lay_web/Activate() - if(!istype(owner, /mob/living/simple_animal/hostile/poison/giant_spider/nurse)) + if(!istype(owner, /mob/living/simple_animal/hostile/poison/giant_spider)) return - var/mob/living/simple_animal/hostile/poison/giant_spider/nurse/S = owner + var/mob/living/simple_animal/hostile/poison/giant_spider/S = owner if(!isturf(S.loc)) return diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 65e82ea617..017af381f0 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -369,7 +369,7 @@ /mob/living/simple_animal/hostile/proc/DestroyObjectsInDirection(direction) var/turf/T = get_step(targets_from, direction) - if(T.Adjacent(targets_from)) + if(T && T.Adjacent(targets_from)) if(CanSmashTurfs(T)) T.attack_animal(src) for(var/obj/O in T) diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm index 92e04aaaa4..dbafe9451c 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm @@ -111,7 +111,7 @@ taste_description = "french cuisine" taste_mult = 1.3 -/datum/reagent/toxin/leaper_venom/on_mob_life(mob/living/M) +/datum/reagent/toxin/leaper_venom/on_mob_life(mob/living/carbon/M) if(volume >= 10) M.adjustToxLoss(5, 0) ..() diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm b/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm index 6ca550b9b7..616c9025b9 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm @@ -61,6 +61,7 @@ /obj/item/restraints/legcuffs/beartrap/mega_arachnid name = "fleshy restraints" desc = "Used by mega arachnids to immobilize their prey." - flags_1 = DROPDEL_1 + item_flags = DROPDEL + flags_1 = NONE icon_state = "tentacle_end" icon = 'icons/obj/projectiles.dmi' diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index e5425573b4..7d03ad4b9e 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -1,3 +1,5 @@ +#define MEDAL_PREFIX "Bubblegum" + /* BUBBLEGUM @@ -7,15 +9,15 @@ Bubblegum's footsteps are heralded by shaking booms, proving its tremendous size It acts as a melee creature, chasing down and attacking its target while also using different attacks to augment its power that increase as it takes damage. -It tries to strike at its target through any bloodpools under them; if it fails to do that, it will spray blood and then attempt to warp to a bloodpool near the target. -If it fails to warp to a target, it may summon up to 6 slaughterlings from the blood around it. -If it does not summon all 6 slaughterlings, it will instead charge at its target, dealing massive damage to anything it hits and spraying a stream of blood. -At half health, it will either charge three times or warp, then charge, instead of doing a single charge. +It often charges, dealing massive damage to anything unfortunate enough to be standing where it's aiming. +Whenever it isn't chasing something down, it will sink into nearby blood pools (if possible) and springs out of the closest one to its target. +To make this possible, it sprays streams of blood at random. +From these blood pools Bubblegum may summon slaughterlings - weak, low-damage minions designed to impede the target's progress. -When Bubblegum dies, it leaves behind a H.E.C.K. mining suit as well as a chest that can contain three things: - 1. A bottle that, when activated, drives everyone nearby into a frenzy - 2. A contract that marks for death the chosen target - 3. A spellblade that can slice off limbs at range +When Bubblegum dies, it leaves behind a H.E.C.K. suit+helmet as well as a chest that can contain three things: + 1. A spellblade that can slice off limbs at range + 2. A bottle that, when activated, drives everyone nearby into a frenzy + 3. A contract that marks for death the chosen target Difficulty: Hard @@ -44,8 +46,7 @@ Difficulty: Hard del_on_death = 1 crusher_loot = list(/obj/structure/closet/crate/necropolis/bubblegum/crusher) loot = list(/obj/structure/closet/crate/necropolis/bubblegum) - blood_volume = BLOOD_VOLUME_MAXIMUM //BLEED FOR ME - var/charging = FALSE + var/charging = 0 medal_type = BOSS_MEDAL_BUBBLEGUM score_type = BUBBLEGUM_SCORE deathmessage = "sinks into a pool of blood, fleeing the battle. You've won, for now... " @@ -57,54 +58,33 @@ Difficulty: Hard desc = "You're not quite sure how a signal can be bloody." invisibility = 100 -/mob/living/simple_animal/hostile/megafauna/bubblegum/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) - . = ..() - if(. > 0 && prob(25)) - var/obj/effect/decal/cleanable/blood/gibs/bubblegum/B = new /obj/effect/decal/cleanable/blood/gibs/bubblegum(loc) - if(prob(40)) - step(B, pick(GLOB.cardinals)) - else - B.setDir(pick(GLOB.cardinals)) - -/obj/effect/decal/cleanable/blood/gibs/bubblegum - name = "thick blood" - desc = "Thick, splattered blood." - random_icon_states = list("gib3", "gib5", "gib6") - bloodiness = 20 - -/obj/effect/decal/cleanable/blood/gibs/bubblegum/can_bloodcrawl_in() - return TRUE - /mob/living/simple_animal/hostile/megafauna/bubblegum/Life() ..() - move_to_delay = CLAMP((health/maxHealth) * 10, 5, 10) + move_to_delay = CLAMP(round((health/maxHealth) * 10), 5, 10) /mob/living/simple_animal/hostile/megafauna/bubblegum/OpenFire() - anger_modifier = CLAMP(((maxHealth - health)/60),0,20) + anger_modifier = CLAMP(((maxHealth - health)/50),0,20) if(charging) return ranged_cooldown = world.time + ranged_cooldown_time - var/warped = FALSE - if(!try_bloodattack()) - INVOKE_ASYNC(src, .proc/blood_spray) - warped = blood_warp() - if(warped && prob(100 - anger_modifier)) - return + blood_warp() - if(prob(90 - anger_modifier) || slaughterlings()) - if(health > maxHealth * 0.5) + if(prob(25)) + INVOKE_ASYNC(src, .proc/blood_spray) + + else if(prob(5+anger_modifier/2)) + slaughterlings() + else + if(health > maxHealth/2 && !client) INVOKE_ASYNC(src, .proc/charge) else - if(prob(70) || warped) - INVOKE_ASYNC(src, .proc/charge, 2) - else - INVOKE_ASYNC(src, .proc/warp_charge) + INVOKE_ASYNC(src, .proc/triple_charge) /mob/living/simple_animal/hostile/megafauna/bubblegum/Initialize() . = ..() - for(var/mob/living/simple_animal/hostile/megafauna/bubblegum/B in GLOB.mob_living_list) + for(var/mob/living/simple_animal/hostile/megafauna/bubblegum/B in GLOB.mob_list) if(B != src) return INITIALIZE_HINT_QDEL //There can be only one var/obj/effect/proc_holder/spell/bloodcrawl/bloodspell = new @@ -118,56 +98,53 @@ Difficulty: Hard if(.) SSshuttle.shuttle_purchase_requirements_met |= "bubblegum" -/mob/living/simple_animal/hostile/megafauna/bubblegum/do_attack_animation(atom/A, visual_effect_icon) - if(!charging) - ..() +/mob/living/simple_animal/hostile/megafauna/bubblegum/do_attack_animation(atom/A) + if(charging) + return + ..() /mob/living/simple_animal/hostile/megafauna/bubblegum/AttackingTarget() - if(!charging) - return ..() + if(charging) + return + ..() /mob/living/simple_animal/hostile/megafauna/bubblegum/Goto(target, delay, minimum_distance) - if(!charging) - ..() + if(charging) + return + ..() /mob/living/simple_animal/hostile/megafauna/bubblegum/Move() + if(!stat) + playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1, 2, 1) if(charging) - new /obj/effect/temp_visual/decoy/fading(loc,src) + new/obj/effect/temp_visual/decoy/fading(loc,src) DestroySurroundings() . = ..() - if(!stat && .) - playsound(src, 'sound/effects/meteorimpact.ogg', 200, 1, 2, 1) if(charging) DestroySurroundings() -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/warp_charge() - blood_warp() +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/triple_charge() + charge() + sleep(10) + charge() + sleep(10) charge() -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/charge(bonus_charges) +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/charge() var/turf/T = get_turf(target) if(!T || T == loc) return - new /obj/effect/temp_visual/dragon_swoop/bubblegum(T) - charging = TRUE + new /obj/effect/temp_visual/dragon_swoop(T) + charging = 1 DestroySurroundings() walk(src, 0) setDir(get_dir(src, T)) var/obj/effect/temp_visual/decoy/D = new /obj/effect/temp_visual/decoy(loc,src) - animate(D, alpha = 0, color = "#FF0000", transform = matrix()*2, time = 3) - sleep(3) - throw_at(T, get_dist(src, T), 1, src, 0, callback = CALLBACK(src, .charge_end, bonus_charges)) - -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/charge_end(bonus_charges, list/effects_to_destroy) - charging = FALSE - try_bloodattack() - if(target) - if(bonus_charges) - bonus_charges-- - charge(bonus_charges) - else - Goto(target, move_to_delay, minimum_distance) - SetRecoveryTime(MEGAFAUNA_DEFAULT_RECOVERY_TIME) + animate(D, alpha = 0, color = "#FF0000", transform = matrix()*2, time = 5) + sleep(5) + throw_at(T, get_dist(src, T), 1, src, 0) + charging = 0 + Goto(target, move_to_delay, minimum_distance) /mob/living/simple_animal/hostile/megafauna/bubblegum/Collide(atom/A) @@ -191,142 +168,20 @@ Difficulty: Hard var/throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src))) L.throw_at(throwtarget, 3) - charging = FALSE + charging = 0 -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/get_mobs_on_blood() - var/list/targets = ListTargets() - . = list() - for(var/mob/living/L in targets) - var/list/bloodpool = get_pools(get_turf(L), 0) - if(bloodpool.len && (!faction_check_mob(L) || L.stat == DEAD)) - . += L - -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/try_bloodattack() - var/list/targets = get_mobs_on_blood() - if(targets.len) - INVOKE_ASYNC(src, .proc/bloodattack, targets, prob(50)) - - return TRUE - return FALSE - -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodattack(list/targets, handedness) - var/mob/living/target_one = pick_n_take(targets) - var/turf/target_one_turf = get_turf(target_one) - var/mob/living/target_two - if(targets.len) - target_two = pick_n_take(targets) - var/turf/target_two_turf = get_turf(target_two) - if(target_two.stat != CONSCIOUS || prob(10)) - bloodgrab(target_two_turf, handedness) - else - bloodsmack(target_two_turf, handedness) - - if(target_one) - var/list/pools = get_pools(get_turf(target_one), 0) - if(pools.len) - target_one_turf = get_turf(target_one) - if(target_one_turf) - if(target_one.stat != CONSCIOUS || prob(10)) - bloodgrab(target_one_turf, !handedness) - else - bloodsmack(target_one_turf, !handedness) - - if(!target_two && target_one) - var/list/poolstwo = get_pools(get_turf(target_one), 0) - if(poolstwo.len) - target_one_turf = get_turf(target_one) - if(target_one_turf) - if(target_one.stat != CONSCIOUS || prob(10)) - bloodgrab(target_one_turf, handedness) - else - bloodsmack(target_one_turf, handedness) - -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodsmack(turf/T, handedness) - if(handedness) - new /obj/effect/temp_visual/bubblegum_hands/rightsmack(T) - else - new /obj/effect/temp_visual/bubblegum_hands/leftsmack(T) - sleep(2.5) - for(var/mob/living/L in T) - if(!faction_check_mob(L)) - to_chat(L, "[src] rends you!") - playsound(T, attack_sound, 100, 1, -1) - var/limb_to_hit = L.get_bodypart(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)) - L.apply_damage(25, BRUTE, limb_to_hit, L.run_armor_check(limb_to_hit, "melee", null, null, armour_penetration)) - sleep(3) - -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodgrab(turf/T, handedness) - if(handedness) - new /obj/effect/temp_visual/bubblegum_hands/rightpaw(T) - new /obj/effect/temp_visual/bubblegum_hands/rightthumb(T) - else - new /obj/effect/temp_visual/bubblegum_hands/leftpaw(T) - new /obj/effect/temp_visual/bubblegum_hands/leftthumb(T) - sleep(6) - for(var/mob/living/L in T) - if(!faction_check_mob(L)) - to_chat(L, "[src] drags you through the blood!") - playsound(T, 'sound/magic/enter_blood.ogg', 100, 1, -1) - var/turf/targetturf = get_step(src, dir) - L.forceMove(targetturf) - playsound(targetturf, 'sound/magic/exit_blood.ogg', 100, 1, -1) - if(L.stat != CONSCIOUS) - addtimer(CALLBACK(src, .proc/devour, L), 2) - sleep(1) - -/obj/effect/temp_visual/dragon_swoop/bubblegum - duration = 10 - -/obj/effect/temp_visual/bubblegum_hands - icon = 'icons/effects/bubblegum.dmi' - duration = 9 - -/obj/effect/temp_visual/bubblegum_hands/rightthumb - icon_state = "rightthumbgrab" - -/obj/effect/temp_visual/bubblegum_hands/leftthumb - icon_state = "leftthumbgrab" - -/obj/effect/temp_visual/bubblegum_hands/rightpaw - icon_state = "rightpawgrab" - layer = BELOW_MOB_LAYER - -/obj/effect/temp_visual/bubblegum_hands/leftpaw - icon_state = "leftpawgrab" - layer = BELOW_MOB_LAYER - -/obj/effect/temp_visual/bubblegum_hands/rightsmack - icon_state = "rightsmack" - -/obj/effect/temp_visual/bubblegum_hands/leftsmack - icon_state = "leftsmack" - /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_warp() - if(Adjacent(target)) - return FALSE - var/list/can_jaunt = get_pools(get_turf(src), 1) - if(!can_jaunt.len) - return FALSE - - var/list/pools = get_pools(get_turf(target), 2) - var/list/pools_to_remove = get_pools(get_turf(target), 1) - pools -= pools_to_remove - if(!pools.len) - return FALSE - - var/obj/effect/temp_visual/decoy/DA = new /obj/effect/temp_visual/decoy(loc,src) - DA.color = "#FF0000" - var/oldtransform = DA.transform - DA.transform = matrix()*2 - animate(DA, alpha = 255, color = initial(DA.color), transform = oldtransform, time = 3) - sleep(3) - qdel(DA) - var/obj/effect/decal/cleanable/blood/found_bloodpool - pools = get_pools(get_turf(target), 2) - pools_to_remove = get_pools(get_turf(target), 1) - pools -= pools_to_remove + var/list/pools = list() + var/can_jaunt = FALSE + for(var/obj/effect/decal/cleanable/blood/nearby in view(src,2)) + can_jaunt = TRUE + break + if(!can_jaunt) + return + for(var/obj/effect/decal/cleanable/blood/nearby in view(get_turf(target),2)) + pools += nearby if(pools.len) shuffle_inplace(pools) found_bloodpool = pick(pools) @@ -336,51 +191,30 @@ Difficulty: Hard forceMove(get_turf(found_bloodpool)) playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) visible_message("And springs back out!") - return TRUE - return FALSE -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/get_pools(turf/T, range) - . = list() - for(var/obj/effect/decal/cleanable/nearby in view(T, range)) - if(nearby.can_bloodcrawl_in()) - . += nearby /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_spray() visible_message("[src] sprays a stream of gore!") - var/range = 6 + round(anger_modifier * 0.4) + var/turf/E = get_edge_target_turf(src, src.dir) + var/range = 10 var/turf/previousturf = get_turf(src) - var/turf/J = previousturf - var/targetdir = get_dir(src, target) - if(target.loc == loc) - targetdir = dir - face_atom(target) - new /obj/effect/decal/cleanable/blood/bubblegum(J) - for(var/i in 1 to range) - J = get_step(previousturf, targetdir) - new /obj/effect/temp_visual/dir_setting/bloodsplatter(previousturf, get_dir(previousturf, J)) - playsound(previousturf,'sound/effects/splat.ogg', 100, 1, -1) - if(!J || !previousturf.atmos_adjacent_turfs || !previousturf.atmos_adjacent_turfs[J]) + for(var/turf/J in getline(src,E)) + if(!range) break - new /obj/effect/decal/cleanable/blood/bubblegum(J) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(previousturf, get_dir(previousturf, J)) + if(!previousturf.CanAtmosPass(J)) + break + playsound(J,'sound/effects/splat.ogg', 100, 1, -1) + new /obj/effect/decal/cleanable/blood(J) + range-- previousturf = J sleep(1) -/obj/effect/decal/cleanable/blood/bubblegum - bloodiness = 0 - -/obj/effect/decal/cleanable/blood/bubblegum/can_bloodcrawl_in() - return TRUE - /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/slaughterlings() visible_message("[src] summons a shoal of slaughterlings!") - var/max_amount = 6 - for(var/H in get_pools(get_turf(src), 1)) - if(!max_amount) - break - max_amount-- - var/obj/effect/decal/cleanable/blood/B = H - new /mob/living/simple_animal/hostile/asteroid/hivelordbrood/slaughter(B.loc) - return max_amount + for(var/obj/effect/decal/cleanable/blood/H in range(src, 10)) + if(prob(25)) + new /mob/living/simple_animal/hostile/asteroid/hivelordbrood/slaughter(H.loc) /mob/living/simple_animal/hostile/asteroid/hivelordbrood/slaughter name = "slaughterling" @@ -398,3 +232,5 @@ Difficulty: Hard if(istype(mover, /mob/living/simple_animal/hostile/megafauna/bubblegum)) return 1 return 0 + +#undef MEDAL_PREFIX \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index c9fafe1bc6..a6dce0e8e3 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -355,6 +355,7 @@ Difficulty: Very Hard light_range = 8 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF use_power = NO_POWER_USE + anchored = FALSE density = TRUE flags_1 = HEAR_1 var/activation_method @@ -671,7 +672,7 @@ Difficulty: Very Hard for(var/i in T) if(isitem(i) && !is_type_in_typecache(i, banned_items_typecache)) var/obj/item/W = i - if(!W.admin_spawned && !(W.flags_1 & HOLOGRAM_1) && !(W.flags_1 & ABSTRACT_1)) + if(!(W.flags_1 & ADMIN_SPAWNED_1) && !(W.flags_1 & HOLOGRAM_1) && !(W.item_flags & ABSTRACT)) L += W if(L.len) var/obj/item/CHOSEN = pick(L) 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 eadc6dc413..b3cba7e611 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -50,7 +50,7 @@ if(C && crusher_loot && C.total_damage >= maxHealth * 0.6) spawn_crusher_loot() crusher_kill = TRUE - if(!admin_spawned) + if(!(flags_1 & ADMIN_SPAWNED_1)) var/tab = "megafauna_kills" if(crusher_kill) tab = "megafauna_kills_crusher" @@ -114,7 +114,7 @@ recovery_time = world.time + buffer_time /mob/living/simple_animal/hostile/megafauna/proc/grant_achievement(medaltype, scoretype, crusher_kill) - if(!medal_type || admin_spawned || !SSmedals.hub_enabled) //Don't award medals if the medal type isn't set + if(!medal_type || (flags_1 & ADMIN_SPAWNED_1) || !SSmedals.hub_enabled) //Don't award medals if the medal type isn't set return FALSE for(var/mob/living/L in view(7,src)) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm index ceba903a75..786d7a9775 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm @@ -93,7 +93,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa /obj/item/gps/internal/swarmer_beacon icon_state = null gpstag = "Hungry Signal" - desc = "Transmited over the signal is a strange message repeated in every language you know of, and some you don't too..." //the message is "nom nom nom" + desc = "Transmitted over the signal is a strange message repeated in every language you know of, and some you don't too..." //the message is "nom nom nom" invisibility = 100 //SWARMER AI diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index 8eb6ff0f06..0c660dd1cd 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -1,7 +1,7 @@ //A slow but strong beast that tries to stun using its tentacles /mob/living/simple_animal/hostile/asteroid/goliath name = "goliath" - desc = "A massive beast that uses long tentacles to ensare its prey, threatening them is not advised under any conditions." + desc = "A massive beast that uses long tentacles to ensnare its prey, threatening them is not advised under any conditions." icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon_state = "Goliath" icon_living = "Goliath" diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index fd164915f4..32c7ba703b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -36,7 +36,8 @@ /mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(the_target) if(world.time >= ranged_cooldown) var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new brood_type(src.loc) - A.admin_spawned = admin_spawned + + A.flags_1 |= (flags_1 & ADMIN_SPAWNED_1) A.GiveTarget(target) A.friends = friends A.faction = faction.Copy() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm index e01136ff5d..e3c81b2639 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm @@ -53,7 +53,7 @@ if(other != src) last_tendril = FALSE break - if(last_tendril && !admin_spawned) + if(last_tendril && !(flags_1 & ADMIN_SPAWNED_1)) if(SSmedals.hub_enabled) for(var/mob/living/L in view(7,src)) if(L.stat || !L.client) diff --git a/code/modules/mob/living/simple_animal/hostile/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/skeleton.dm index bb3892d0b6..fca6afd4a6 100644 --- a/code/modules/mob/living/simple_animal/hostile/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/skeleton.dm @@ -72,8 +72,8 @@ melee_damage_upper = 30 deathmessage = "collapses into a pile of bones, its gear clanging as it hits the ground!" loot = list(/obj/effect/decal/remains/human, - /obj/item/clothing/suit/armor/riot/knight/templar, - /obj/item/clothing/head/helmet/knight/templar, + /obj/item/clothing/suit/armor/riot/chaplain, + /obj/item/clothing/head/helmet/chaplain, /obj/item/claymore/weak{name = "holy sword"}) /mob/living/simple_animal/hostile/skeleton/ice @@ -100,7 +100,7 @@ light_color = LIGHT_COLOR_PURPLE attacktext = "slashes" attack_sound = 'sound/hallucinations/growl1.ogg' - deathmessage = "collapses into a pile of bones, their suit dissovling among the plasma!" + deathmessage = "collapses into a pile of bones, their suit dissolving among the plasma!" loot = list(/obj/effect/decal/remains/plasma) /mob/living/simple_animal/hostile/skeleton/plasmaminer/jackhammer @@ -119,4 +119,4 @@ /mob/living/simple_animal/hostile/skeleton/plasmaminer/Initialize() . = ..() - set_light(2) \ No newline at end of file + set_light(2) diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index edf601515a..73283468f6 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -118,6 +118,10 @@ projectilesound = 'sound/weapons/gunshot_smg.ogg' loot = list(/obj/effect/gibspawner/human) +/mob/living/simple_animal/hostile/syndicate/ranged/pilot + name = "Syndicate Salvage Pilot" + loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier) + /mob/living/simple_animal/hostile/syndicate/ranged/space icon_state = "syndicaterangedspace" icon_living = "syndicaterangedspace" @@ -138,7 +142,7 @@ name = "Syndicate Stormtrooper" maxHealth = 200 health = 200 - casingtype = /obj/item/ammo_casing/shotgun/tengauge + casingtype = /obj/item/ammo_casing/shotgun/buckshot projectilesound = 'sound/weapons/gunshot.ogg' loot = list(/obj/effect/gibspawner/human) diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm index 4917d3b74d..d262725d7b 100644 --- a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm +++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm @@ -121,7 +121,7 @@ desc = "The key to the wumborian fugu's ability to increase its mass arbitrarily, this disgusting remnant can apply the same effect to other creatures, giving them great strength." icon = 'icons/obj/surgery.dmi' icon_state = "fugu_gland" - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON w_class = WEIGHT_CLASS_NORMAL layer = MOB_LAYER var/list/banned_mobs diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 61e7153434..7f2864a43d 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -108,6 +108,15 @@ /mob/living/simple_animal/Destroy() GLOB.simple_animals[AIStatus] -= src + + if(nest) + nest.spawned_mobs -= src + nest = null + + var/turf/T = get_turf(src) + if (T && AIStatus == AI_Z_OFF) + SSidlenpcpool.idle_mobs_by_zlevel[T.z] -= src + return ..() /mob/living/simple_animal/updatehealth() @@ -303,7 +312,7 @@ emote("deathgasp") if(del_on_death) ..() - //Prevent infinite loops if the mob Destroy() is overriden in such + //Prevent infinite loops if the mob Destroy() is overridden in such //a manner as to cause a call to death() again del_on_death = FALSE qdel(src) @@ -424,16 +433,6 @@ if(changed) animate(src, transform = ntransform, time = 2, easing = EASE_IN|EASE_OUT) - - -/mob/living/simple_animal/Destroy() - if(nest) - nest.spawned_mobs -= src - nest = null - GLOB.simple_animals -= src - return ..() - - /mob/living/simple_animal/proc/sentience_act() //Called when a simple animal gains sentience via gold slime potion toggle_ai(AI_OFF) // To prevent any weirdness. diff --git a/code/modules/mob/living/simple_animal/slime/emote.dm b/code/modules/mob/living/simple_animal/slime/emote.dm index 221f3ac071..070cd48a70 100644 --- a/code/modules/mob/living/simple_animal/slime/emote.dm +++ b/code/modules/mob/living/simple_animal/slime/emote.dm @@ -34,7 +34,7 @@ /datum/emote/slime/mood/sneaky key = "moodsneaky" - mood = "mischevous" + mood = "mischievous" /datum/emote/slime/mood/smile key = "moodsmile" diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 574a8a1e7c..161362c187 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -415,7 +415,7 @@ else if (docile) newmood = ":3" else if (Target) - newmood = "mischevous" + newmood = "mischievous" if (!newmood) if (Discipline && prob(25)) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 3e5363ac37..34e7a2ddcd 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -224,8 +224,10 @@ return 0 /mob/living/simple_animal/slime/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return powerlevel = 0 // oh no, the power! - ..() /mob/living/simple_animal/slime/MouseDrop(atom/movable/A as mob|obj) if(isliving(A) && A != src && usr == src) @@ -356,7 +358,7 @@ var/hasFound = FALSE //Have we found an extract to be added? for(var/obj/item/slime_extract/S in P.contents) if(S.effectmod == effectmod) - P.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, get_turf(src), TRUE) + SEND_SIGNAL(P, COMSIG_TRY_STORAGE_TAKE, S, get_turf(src), TRUE) qdel(S) applied++ hasFound = TRUE diff --git a/code/modules/mob/living/simple_animal/spawner.dm b/code/modules/mob/living/simple_animal/spawner.dm index 2d3fce3e0b..0b97a940e4 100644 --- a/code/modules/mob/living/simple_animal/spawner.dm +++ b/code/modules/mob/living/simple_animal/spawner.dm @@ -44,7 +44,7 @@ spawn_delay = world.time + spawn_time var/chosen_mob_type = pick(mob_types) var/mob/living/simple_animal/L = new chosen_mob_type(src.loc) - L.admin_spawned = admin_spawned //If we were admin spawned, lets have our children count as that as well. + L.flags_1 |= (flags_1 & ADMIN_SPAWNED_1) //If we were admin spawned, lets have our children count as that as well. spawned_mobs += L L.nest = src L.faction = src.faction diff --git a/code/modules/mob/living/taste.dm b/code/modules/mob/living/taste.dm index b2a4a867bc..534bf36c59 100644 --- a/code/modules/mob/living/taste.dm +++ b/code/modules/mob/living/taste.dm @@ -27,7 +27,7 @@ "regrets","your soul","suffering","music","noise","blood","hunger","the american way") if(text_output != last_taste_text || last_taste_time + 100 < world.time) to_chat(src, "You can taste [text_output].") - // "somthing indescribable" -> too many tastes, not enough flavor. + // "something indescribable" -> too many tastes, not enough flavor. last_taste_time = world.time last_taste_text = text_output diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 7e7a86a9e4..9def2a759f 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -11,6 +11,7 @@ create_mob_hud() if(hud_used) hud_used.show_hud(hud_used.hud_version) + hud_used.update_ui_style(ui_style2icon(client.prefs.UI_style)) next_move = 1 @@ -38,6 +39,7 @@ AA.onNewMob(src) update_client_colour() + update_mouse_pointer() if(client) client.click_intercept = null @@ -47,7 +49,4 @@ for(var/datum/action/A in client.player_details.player_actions) A.Grant(src) - if(!GLOB.individual_log_list[ckey]) - GLOB.individual_log_list[ckey] = logging - else - logging = GLOB.individual_log_list[ckey] + log_message("Client [key_name(src)] has taken ownership of mob [src]", INDIVIDUAL_OWNERSHIP_LOG) diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index aadb7e6d58..fbd29e86a5 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -1,4 +1,5 @@ /mob/Logout() + log_message("[key_name(src)] is no longer owning mob [src]", INDIVIDUAL_OWNERSHIP_LOG) SStgui.on_logout(src) unset_machine() GLOB.player_list -= src @@ -8,4 +9,4 @@ if(loc) loc.on_log(FALSE) - return TRUE \ No newline at end of file + return TRUE diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c98f3f4afb..6deffc97da 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -294,6 +294,10 @@ set name = "Examine" set category = "IC" + if(isturf(A) && !(sight & SEE_TURFS) && !(A in view(client ? client.view : world.view, src))) + // shift-click catcher may issue examinate() calls for out-of-sight turfs + return + if(is_blind(src)) to_chat(src, "Something is there but you can't see it.") return @@ -304,7 +308,7 @@ //same as above //note: ghosts can point, this is intended //visible_message will handle invisibility properly -//overriden here and in /mob/dead/observer for different point span classes and sanity checks +//overridden here and in /mob/dead/observer for different point span classes and sanity checks /mob/verb/pointed(atom/A as mob|obj|turf in view()) set name = "Point To" set category = "Object" @@ -401,22 +405,22 @@ to_chat(usr, "You must be dead to use this!") return - log_game("[usr.name]/[usr.key] used abandon mob.") + log_game("[key_name(usr)] used abandon mob.") to_chat(usr, "Please roleplay correctly!") if(!client) - log_game("[usr.key] AM failed due to disconnect.") + log_game("[key_name(usr)] AM failed due to disconnect.") return client.screen.Cut() client.screen += client.void if(!client) - log_game("[usr.key] AM failed due to disconnect.") + log_game("[key_name(usr)] AM failed due to disconnect.") return var/mob/dead/new_player/M = new /mob/dead/new_player() if(!client) - log_game("[usr.key] AM failed due to disconnect.") + log_game("[key_name(usr)] AM failed due to disconnect.") qdel(M) return @@ -473,7 +477,7 @@ else what = get_item_by_slot(slot) if(what) - if(!(what.flags_1 & ABSTRACT_1)) + if(!(what.item_flags & ABSTRACT)) usr.stripPanelUnequip(what,src,slot) else usr.stripPanelEquip(what,src,slot) @@ -689,6 +693,16 @@ mob_spell_list -= S qdel(S) +/mob/proc/anti_magic_check(magic = TRUE, holy = FALSE) + if(!magic && !holy) + return + var/list/protection_sources = list() + if(SEND_SIGNAL(src, COMSIG_MOB_RECEIVE_MAGIC, magic, holy, protection_sources) & COMPONENT_BLOCK_MAGIC) + if(protection_sources.len) + return pick(protection_sources) + else + return src + //You can buckle on mobs if you're next to them since most are dense /mob/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) if(M.buckled) @@ -785,6 +799,7 @@ //This will update a mob's name, real_name, mind.name, GLOB.data_core records, pda, id and traitor text //Calling this proc without an oldname will only update the mob and skip updating the pda, id and records ~Carn /mob/proc/fully_replace_character_name(oldname,newname) + log_message("[src] name changed from [oldname] to [newname]", INDIVIDUAL_OWNERSHIP_LOG) if(!newname) return 0 real_name = newname @@ -841,6 +856,14 @@ return /mob/proc/update_sight() + for(var/O in orbiters) + var/datum/orbit/orbit = O + var/obj/effect/wisp/wisp = orbit.orbiter + if (istype(wisp)) + sight |= wisp.sight_flags + if(!isnull(wisp.lighting_alpha)) + lighting_alpha = min(lighting_alpha, wisp.lighting_alpha) + sync_lighting_plane_alpha() /mob/proc/sync_lighting_plane_alpha() @@ -849,6 +872,15 @@ if (L) L.alpha = lighting_alpha +/mob/proc/update_mouse_pointer() + if (!client) + return + client.mouse_pointer_icon = initial(client.mouse_pointer_icon) + if (ismecha(loc)) + var/obj/mecha/M = loc + if(M.mouse_pointer) + client.mouse_pointer_icon = M.mouse_pointer + /mob/proc/is_literate() return 0 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index ba04baf14a..3dff46ec84 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -7,9 +7,11 @@ hud_possible = list(ANTAG_HUD) pressure_resistance = 8 mouse_drag_pointer = MOUSE_ACTIVE_POINTER + throwforce = 10 var/lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE var/datum/mind/mind var/list/datum/action/actions = list() + var/list/datum/action/chameleon_item_actions var/static/next_mob_id = 0 var/stat = 0 //Whether a mob is alive or dead. TODO: Move this to living - Nodrak @@ -66,8 +68,6 @@ var/research_scanner = 0 //For research scanner equipped mobs. Enable to show research data when examining. - var/list/mapobjs = list() - var/in_throw_mode = 0 var/job = null//Living diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 8ef39f3b06..55e6798053 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -434,7 +434,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp to_chat(M, "Control of your mob has been offered to dead players.") if(usr) log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.") - message_admins("[key_name_admin(usr)] has offered control of ([key_name_admin(M)]) to ghosts") + message_admins("[key_name_admin(usr)] has offered control of ([ADMIN_LOOKUPFLW(M)]) to ghosts") var/poll_message = "Do you want to play as [M.real_name]?" if(M.mind && M.mind.assigned_role) poll_message = "[poll_message] Job:[M.mind.assigned_role]." @@ -455,7 +455,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp return TRUE else to_chat(M, "There were no ghosts willing to take control.") - message_admins("No ghosts were willing to take control of [key_name_admin(M)])") + message_admins("No ghosts were willing to take control of [ADMIN_LOOKUPFLW(M)])") return FALSE /mob/proc/is_flying(mob/M = src) @@ -477,12 +477,18 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if(!LAZYLEN(message) || !message_type) return + if(client) + if(!islist(client.player_details.logging[message_type])) + client.player_details.logging[message_type] = list() + if(!islist(logging[message_type])) logging[message_type] = list() var/list/timestamped_message = list("[LAZYLEN(logging[message_type]) + 1]\[[time_stamp()]\] [key_name(src)]" = message) logging[message_type] += timestamped_message + if(client) + client.player_details.logging[message_type] += timestamped_message /mob/proc/can_hear() . = TRUE diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 2718392b69..05bafdeb58 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -40,9 +40,15 @@ to_chat(usr, "Speech is currently admin-disabled.") return - if(jobban_isbanned(src, "OOC")) + var/jb = jobban_isbanned(src, "OOC") + if(QDELETED(src)) + return + + if(jb) to_chat(src, "You have been banned from deadchat.") return + + if (src.client) if(src.client.prefs.muted & MUTE_DEADCHAT) @@ -83,3 +89,13 @@ /mob/proc/lingcheck() return LINGHIVE_NONE + +/mob/proc/get_message_mode(message) + var/key = copytext(message, 1, 2) + if(key == "#") + return MODE_WHISPER + else if(key == ";") + return MODE_HEADSET + else if(length(message) > 2 && (key in GLOB.department_radio_prefixes)) + var/key_symbol = lowertext(copytext(message, 2, 3)) + return GLOB.department_radio_keys[key_symbol] diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 45aa3b06ff..342ee386b6 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -23,7 +23,7 @@ CH.cavity_item = null if(tr_flags & TR_KEEPITEMS) - var/Itemlist = get_equipped_items() + var/Itemlist = get_equipped_items(TRUE) Itemlist += held_items for(var/obj/item/W in Itemlist) dropItemToGround(W) @@ -174,7 +174,7 @@ //now the rest if (tr_flags & TR_KEEPITEMS) - var/Itemlist = get_equipped_items() + var/Itemlist = get_equipped_items(TRUE) Itemlist += held_items for(var/obj/item/W in Itemlist) dropItemToGround(W, TRUE) @@ -381,8 +381,7 @@ else if(transfer_after) R.key = key - if (CONFIG_GET(flag/rename_cyborg)) - R.rename_self("cyborg") + R.apply_pref_name("cyborg") if(R.mmi) R.mmi.name = "Man-Machine Interface: [real_name]" @@ -495,7 +494,7 @@ SSblackbox.record_feedback("amount", "gorillas_created", 1) - var/Itemlist = get_equipped_items() + var/Itemlist = get_equipped_items(TRUE) Itemlist += held_items for(var/obj/item/W in Itemlist) dropItemToGround(W, TRUE) diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index f075a8464b..54e43a8731 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -1,7 +1,7 @@ /obj/item/modular_computer/tablet //Its called tablet for theme of 90ies but actually its a "big smartphone" sized name = "tablet computer" icon = 'icons/obj/modular_tablet.dmi' - icon_state = "tablet" + icon_state = "tablet-red" icon_state_unpowered = "tablet" icon_state_powered = "tablet" icon_state_menu = "menu" diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 4091f8b6ae..19d3b56046 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -144,6 +144,9 @@ // EMPs are similar to explosions, but don't cause physical damage to the casing. Instead they screw up the components /obj/machinery/modular_computer/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_CONTENTS) + return if(cpu) cpu.emp_act(severity) diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm index b9a0544021..026091f88b 100644 --- a/code/modules/modular_computers/computers/machinery/modular_console.dm +++ b/code/modules/modular_computers/computers/machinery/modular_console.dm @@ -8,8 +8,6 @@ icon_state_unpowered = "console-off" screen_icon_state_menu = "menu" hardware_flag = PROGRAM_CONSOLE - var/console_department = "" // Used in New() to set network tag according to our area. - anchored = TRUE density = TRUE base_idle_power_usage = 100 base_active_power_usage = 500 @@ -18,6 +16,7 @@ light_strength = 2 max_integrity = 300 integrity_failure = 150 + var/console_department = "" // Used in New() to set network tag according to our area. /obj/machinery/modular_computer/console/buildable/Initialize() . = ..() diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 75f0f465ba..051b12ea71 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -129,7 +129,7 @@ return computer.get_header_data() return list() -// This is performed on program startup. May be overriden to add extra logic. Remember to include ..() call. Return 1 on success, 0 on failure. +// This is performed on program startup. May be overridden to add extra logic. Remember to include ..() call. Return 1 on success, 0 on failure. // When implementing new program based device, use this to run the program. /datum/computer_file/program/proc/run_program(mob/living/user) if(can_run(user, 1)) diff --git a/code/modules/modular_computers/file_system/programs/alarm.dm b/code/modules/modular_computers/file_system/programs/alarm.dm index 310a0a5054..ca075b51e4 100644 --- a/code/modules/modular_computers/file_system/programs/alarm.dm +++ b/code/modules/modular_computers/file_system/programs/alarm.dm @@ -40,7 +40,10 @@ return data /datum/computer_file/program/alarm_monitor/proc/triggerAlarm(class, area/A, O, obj/source) - if(!is_station_level(source.z) && !is_mining_level(source.z)) + if(is_station_level(source.z)) + if(!(A.type in GLOB.the_station_areas)) + return + else if(!is_mining_level(source.z) || istype(A, /area/ruin)) return var/list/L = alarms[class] @@ -95,4 +98,4 @@ /datum/computer_file/program/alarm_monitor/kill_program(forced = FALSE) GLOB.alarmdisplay -= src - ..() \ No newline at end of file + ..() diff --git a/code/modules/modular_computers/file_system/programs/powermonitor.dm b/code/modules/modular_computers/file_system/programs/powermonitor.dm index 37b2b0c151..0439438cf0 100644 --- a/code/modules/modular_computers/file_system/programs/powermonitor.dm +++ b/code/modules/modular_computers/file_system/programs/powermonitor.dm @@ -1,3 +1,5 @@ +//normal computer version is located in code\modules\power\monitor.dm, /obj/machinery/computer/monitor + /datum/computer_file/program/power_monitor filename = "powermonitor" filedesc = "Power Monitor" @@ -14,7 +16,8 @@ ui_y = 1000 var/has_alert = 0 - var/obj/structure/cable/attached + var/obj/structure/cable/attached_wire + var/obj/machinery/power/apc/local_apc var/list/history = list() var/record_size = 60 var/record_interval = 50 @@ -29,42 +32,62 @@ /datum/computer_file/program/power_monitor/process_tick() - if(!attached) + if(!get_powernet()) search() else record() -/datum/computer_file/program/power_monitor/proc/search() +/datum/computer_file/program/power_monitor/proc/search() //keep in sync with /obj/machinery/computer/monitor's version var/turf/T = get_turf(computer) - attached = locate() in T + attached_wire = locate(/obj/structure/cable) in T + if(attached_wire) + return + var/area/A = get_area(computer) //if the computer isn't directly connected to a wire, attempt to find the APC powering it to pull it's powernet instead + if(!A) + return + local_apc = A.get_apc() + if(!local_apc) + return + if(!local_apc.terminal) //this really shouldn't happen without badminnery. + local_apc = null -/datum/computer_file/program/power_monitor/proc/record() +/datum/computer_file/program/power_monitor/proc/get_powernet() //keep in sync with /obj/machinery/computer/monitor's version + if(attached_wire || (local_apc && local_apc.terminal)) + return attached_wire ? attached_wire.powernet : local_apc.terminal.powernet + return FALSE + +/datum/computer_file/program/power_monitor/proc/record() //keep in sync with /obj/machinery/computer/monitor's version if(world.time >= next_record) next_record = world.time + record_interval + var/datum/powernet/connected_powernet = get_powernet() + var/list/supply = history["supply"] - supply += attached.powernet.viewavail + if(connected_powernet) + supply += connected_powernet.viewavail if(supply.len > record_size) supply.Cut(1, 2) var/list/demand = history["demand"] - demand += attached.powernet.viewload + if(connected_powernet) + demand += connected_powernet.viewload if(demand.len > record_size) demand.Cut(1, 2) /datum/computer_file/program/power_monitor/ui_data() + var/datum/powernet/connected_powernet = get_powernet() var/list/data = get_header_data() data["stored"] = record_size data["interval"] = record_interval / 10 - data["attached"] = attached ? TRUE : FALSE - if(attached) - data["supply"] = DisplayPower(attached.powernet.viewavail) - data["demand"] = DisplayPower(attached.powernet.viewload) + data["attached"] = connected_powernet ? TRUE : FALSE + if(connected_powernet) + data["supply"] = DisplayPower(connected_powernet.viewavail) + data["demand"] = DisplayPower(connected_powernet.viewload) data["history"] = history data["areas"] = list() - if(attached) - for(var/obj/machinery/power/terminal/term in attached.powernet.nodes) + if(connected_powernet) + for(var/obj/machinery/power/terminal/term in connected_powernet.nodes) var/obj/machinery/power/apc/A = term.master if(istype(A)) data["areas"] += list(list( diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index ef0538a1ee..6e4f80458a 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/vending.dmi' icon_state = "robotics" layer = 2.9 - anchored = TRUE density = TRUE // The actual laptop/tablet diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm index 258f470e3f..9fd8e4baf2 100644 --- a/code/modules/ninja/ninja_event.dm +++ b/code/modules/ninja/ninja_event.dm @@ -72,7 +72,7 @@ Contents: throw EXCEPTION("Ninja created with incorrect mind") spawned_mobs += Ninja - message_admins("[key_name_admin(Ninja)] has been made into a ninja by an event.") + message_admins("[ADMIN_LOOKUPFLW(Ninja)] has been made into a ninja by an event.") log_game("[key_name(Ninja)] was spawned as a ninja by an event.") return SUCCESSFUL_SPAWN diff --git a/code/modules/ninja/suit/gloves.dm b/code/modules/ninja/suit/gloves.dm index ef02a8a792..4308120c4f 100644 --- a/code/modules/ninja/suit/gloves.dm +++ b/code/modules/ninja/suit/gloves.dm @@ -77,5 +77,5 @@ /obj/item/clothing/gloves/space_ninja/examine(mob/user) ..() - if(flags_1 & NODROP_1) + if(item_flags & NODROP) to_chat(user, "The energy drain mechanism is [candrain?"active":"inactive"].") diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index 5886e1723d..6110f2b0c0 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -13,7 +13,7 @@ Contents: /obj/item/clothing/suit/space/space_ninja name = "ninja suit" - desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins." + desc = "A unique, vacuum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins." icon_state = "s-ninja" item_state = "s-ninja_suit" allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/stock_parts/cell) @@ -111,15 +111,15 @@ Contents: to_chat(H, "ERROR: 110223 UNABLE TO LOCATE HAND GEAR\nABORTING...") return FALSE affecting = H - flags_1 |= NODROP_1 //colons make me go all |= + item_flags |= NODROP //colons make me go all |= slowdown = 0 n_hood = H.head - n_hood.flags_1 |= NODROP_1 + n_hood.item_flags |= NODROP n_shoes = H.shoes - n_shoes.flags_1 |= NODROP_1 + n_shoes.item_flags |= NODROP n_shoes.slowdown-- n_gloves = H.gloves - n_gloves.flags_1 |= NODROP_1 + n_gloves.item_flags |= NODROP return TRUE /obj/item/clothing/suit/space/space_ninja/proc/lockIcons(mob/living/carbon/human/H) @@ -131,18 +131,18 @@ Contents: //This proc allows the suit to be taken off. /obj/item/clothing/suit/space/space_ninja/proc/unlock_suit() affecting = null - flags_1 &= ~NODROP_1 + item_flags &= ~NODROP slowdown = 1 icon_state = "s-ninja" if(n_hood)//Should be attached, might not be attached. - n_hood.flags_1 &= ~NODROP_1 + n_hood.item_flags &= ~NODROP if(n_shoes) - n_shoes.flags_1 &= ~NODROP_1 + n_shoes.item_flags &= ~NODROP n_shoes.slowdown++ if(n_gloves) n_gloves.icon_state = "s-ninja" n_gloves.item_state = "s-ninja" - n_gloves.flags_1 &= ~NODROP_1 + n_gloves.item_flags &= ~NODROP n_gloves.candrain=0 n_gloves.draining=0 diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 5623a1bf74..ac3e24030f 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -5,7 +5,7 @@ throw_speed = 3 var/signed = FALSE var/datum/mind/target - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON /obj/item/paper/contract/proc/update_text() return @@ -28,7 +28,7 @@ /obj/item/paper/contract/employment/update_text() name = "paper- [target] employment contract" - info = "
    Conditions of Employment




    This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and Nanotrasen (hereafter referred to as the omnipresent and helpful watcher of humanity).
    WITNESSETH:
    WHEREAS, SLAVE is a natural born human or humanoid, posessing skills upon which he can aid the omnipresent and helpful watcher of humanity, who seeks employment in the omnipresent and helpful watcher of humanity.
    WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanent servitude.
    NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows:
    In exchange for paltry payments, SLAVE agrees to work for the omnipresent and helpful watcher of humanity, for the remainder of his or her current and future lives.
    Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity.
    Should transfership of a soul not be possible, a lien shall be placed instead.
    Signed,
    [target]" + info = "
    Conditions of Employment




    This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and Nanotrasen (hereafter referred to as the omnipresent and helpful watcher of humanity).
    WITNESSETH:
    WHEREAS, SLAVE is a natural born human or humanoid, possessing skills upon which he can aid the omnipresent and helpful watcher of humanity, who seeks employment in the omnipresent and helpful watcher of humanity.
    WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanent servitude.
    NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows:
    In exchange for paltry payments, SLAVE agrees to work for the omnipresent and helpful watcher of humanity, for the remainder of his or her current and future lives.
    Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity.
    Should transfership of a soul not be possible, a lien shall be placed instead.
    Signed,
    [target]" /obj/item/paper/contract/employment/attack(mob/living/M, mob/living/carbon/human/user) diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 899c132f04..038cba8936 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -6,9 +6,9 @@ w_class = WEIGHT_CLASS_SMALL pressure_resistance = 2 resistance_flags = FLAMMABLE - + /obj/item/folder/suicide_act(mob/living/user) - user.visible_message("[user] begins filing an imaginary death warrent! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message("[user] begins filing an imaginary death warrant! It looks like [user.p_theyre()] trying to commit suicide!") return OXYLOSS /obj/item/folder/blue diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 7f5307f17f..9b7d3ae884 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -44,7 +44,7 @@ colour = "red" /obj/item/pen/invisible - desc = "It's an invisble pen marker." + desc = "It's an invisible pen marker." icon_state = "pen" colour = "white" @@ -104,12 +104,7 @@ if(deg && (deg > 0 && deg <= 360)) degrees = deg to_chat(user, "You rotate the top of the pen to [degrees] degrees.") - GET_COMPONENT(hidden_uplink, /datum/component/uplink) - if(hidden_uplink && degrees == traitor_unlock_degrees) - to_chat(user, "Your pen makes a clicking noise, before quickly rotating back to 0 degrees!") - degrees = 0 - hidden_uplink.locked = FALSE - hidden_uplink.interact(user) + SEND_SIGNAL(src, COMSIG_PEN_ROTATED, deg, user) /obj/item/pen/attack(mob/living/M, mob/user,stealth) if(!istype(M)) @@ -143,6 +138,7 @@ else O.name = input to_chat(user, "\The [oldname] has been successfully been renamed to \the [input].") + O.renamedByPlayer = TRUE if(penchoice == "Change description") var/input = stripped_input(user,"Describe \the [O.name] here", ,"", 100) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 2b0c6c0aec..e8a4c26d10 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -12,7 +12,6 @@ desc = "Used to copy important documents and anatomy studies." icon = 'icons/obj/library.dmi' icon_state = "photocopier" - anchored = TRUE density = TRUE use_power = IDLE_POWER_USE idle_power_usage = 30 diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 97038bd94c..7235e0e658 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -69,54 +69,3 @@ /obj/item/stamp/attack_paw(mob/user) return attack_hand(user) - -// Syndicate stamp to forge documents. - -/obj/item/stamp/chameleon - actions_types = list(/datum/action/item_action/toggle) - - var/list/stamp_types - var/list/stamp_names - -/obj/item/stamp/chameleon/Initialize() - . = ..() - stamp_types = typesof(/obj/item/stamp) - type // Get all stamp types except our own - - stamp_names = list() - // Generate them into a list - for(var/i in stamp_types) - var/obj/item/stamp/stamp_type = i - stamp_names += initial(stamp_type.name) - - stamp_names = sortList(stamp_names) - -/obj/item/stamp/chameleon/emp_act(severity) - change_to(pick(stamp_types)) - -/obj/item/stamp/chameleon/proc/change_to(obj/item/stamp/stamp_type) - name = initial(stamp_type.name) - icon_state = initial(stamp_type.icon_state) - item_color = initial(stamp_type.item_color) - -/obj/item/stamp/chameleon/attack_self(mob/user) - var/input_stamp = input(user, "Choose a stamp to disguise as.", - "Choose a stamp.") as null|anything in stamp_names - - if(user && (src in user.contents) && input_stamp) - var/obj/item/stamp/stamp_type - for(var/i in stamp_types) - stamp_type = i - if(initial(stamp_type.name) == input_stamp) - break - change_to(stamp_type) - -/obj/item/stamp/chameleon/broken/Initialize() - . = ..() - START_PROCESSING(SSobj, src) - -/obj/item/stamp/chameleon/broken/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/stamp/chameleon/broken/process() - change_to(pick(stamp_types)) diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index 96e35164c4..099edc1909 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -100,6 +100,9 @@ /obj/machinery/power/am_control_unit/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return switch(severity) if(1) if(active) @@ -109,9 +112,6 @@ if(active) toggle_power() stability -= rand(10,20) - ..() - return 0 - /obj/machinery/power/am_control_unit/blob_act() stability -= 20 diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index bd6b61e306..43b2400299 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -14,7 +14,6 @@ icon = 'icons/obj/machines/antimatter.dmi' icon_state = "shield" - anchored = TRUE density = TRUE dir = NORTH use_power = NO_POWER_USE//Living things generally dont use power @@ -93,7 +92,7 @@ /obj/machinery/am_shielding/emp_act()//Immune due to not really much in the way of electronics. - return 0 + return /obj/machinery/am_shielding/ex_act(severity, target) stability -= (80 - (severity * 20)) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 776dbf07d6..e9deb8233b 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -50,7 +50,6 @@ desc = "A control terminal for the area's electrical systems." icon_state = "apc0" - anchored = TRUE use_power = NO_POWER_USE req_access = null max_integrity = 200 @@ -1257,17 +1256,20 @@ // damage and destruction acts /obj/machinery/power/apc/emp_act(severity) - if(cell) - cell.emp_act(severity) - if(occupier) - occupier.emp_act(severity) + . = ..() + if (!(. & EMP_PROTECT_CONTENTS)) + if(cell) + cell.emp_act(severity) + if(occupier) + occupier.emp_act(severity) + if(. & EMP_PROTECT_SELF) + return lighting = 0 equipment = 0 environ = 0 update_icon() update() addtimer(CALLBACK(src, .proc/reset, APC_RESET_EMP), 600) - ..() /obj/machinery/power/apc/blob_act(obj/structure/blob/B) set_broken() diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 66b90f4a1e..7060edecbd 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -140,7 +140,7 @@ By design, d1 is the smallest direction and d2 is the highest return user.visible_message("[user] cuts the cable.", "You cut the cable.") stored.add_fingerprint(user) - investigate_log("was cut by [key_name(usr, usr.client)] in [get_area(T)]", INVESTIGATE_WIRES) + investigate_log("was cut by [key_name(usr)] in [AREACOORD(src)]", INVESTIGATE_WIRES) deconstruct() return diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 498b9e608b..a36800c2f9 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -131,10 +131,12 @@ rigged = TRUE //broken batterys are dangerous /obj/item/stock_parts/cell/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return charge -= 1000 / severity if (charge < 0) charge = 0 - ..() /obj/item/stock_parts/cell/ex_act(severity, target) ..() @@ -320,8 +322,9 @@ charge = 0 update_icon() -/obj/item/stock_parts/cell/emproof/emp_act(severity) - return +/obj/item/stock_parts/cell/emproof/empty/ComponentInitialize() + . = ..() + AddComponent(/datum/component/empprotection, EMP_PROTECT_SELF) /obj/item/stock_parts/cell/emproof/corrupt() return @@ -336,6 +339,9 @@ return /obj/item/stock_parts/cell/beam_rifle/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return charge = CLAMP((charge-(10000/severity)),0,maxcharge) /obj/item/stock_parts/cell/emergency_light diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm index 62abcdb440..8da3594d5e 100644 --- a/code/modules/power/floodlight.dm +++ b/code/modules/power/floodlight.dm @@ -41,7 +41,6 @@ desc = "A pole with powerful mounted lights on it. Due to its high power draw, it must be powered by a direct connection to a wire node." icon = 'icons/obj/lighting.dmi' icon_state = "floodlight" - anchored = TRUE density = TRUE max_integrity = 100 integrity_failure = 80 diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index ce9d2de4db..04645b2267 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -2,17 +2,12 @@ name = "thermoelectric generator" desc = "It's a high efficiency thermoelectric generator." icon_state = "teg" - anchored = TRUE density = TRUE use_power = NO_POWER_USE var/obj/machinery/atmospherics/components/binary/circulator/cold_circ var/obj/machinery/atmospherics/components/binary/circulator/hot_circ - //note: these currently only support EAST and WEST - var/cold_dir = WEST - var/hot_dir = EAST - var/lastgen = 0 var/lastgenlev = -1 var/lastcirc = "00" @@ -20,34 +15,18 @@ /obj/machinery/power/generator/Initialize(mapload) . = ..() - var/obj/machinery/atmospherics/components/binary/circulator/circpath = /obj/machinery/atmospherics/components/binary/circulator - cold_circ = locate(circpath) in get_step(src, cold_dir) - hot_circ = locate(circpath) in get_step(src, hot_dir) + find_circs() connect_to_network() SSair.atmos_machinery += src - - if(cold_circ) - switch(cold_dir) - if(EAST) - cold_circ.side = circpath.CIRC_RIGHT - if(WEST) - cold_circ.side = circpath.CIRC_LEFT - cold_circ.update_icon() - - if(hot_circ) - switch(hot_dir) - if(EAST) - hot_circ.side = circpath.CIRC_RIGHT - if(WEST) - hot_circ.side = circpath.CIRC_LEFT - hot_circ.update_icon() - - if(!cold_circ || !hot_circ) - stat |= BROKEN - update_icon() + component_parts = list(new /obj/item/circuitboard/machine/generator) + +/obj/machinery/power/generator/ComponentInitialize() + . = ..() + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ) /obj/machinery/power/generator/Destroy() + kill_circs() SSair.atmos_machinery -= src return ..() @@ -62,7 +41,8 @@ if(L != 0) add_overlay(image('icons/obj/power.dmi', "teg-op[L]")) - add_overlay("teg-oc[lastcirc]") + if(hot_circ && cold_circ) + add_overlay("teg-oc[lastcirc]") #define GENRATE 800 // generator output coefficient from Q @@ -123,7 +103,7 @@ lastgen -= power_output ..() -/obj/machinery/power/generator/proc/get_menu(include_link = 1) +/obj/machinery/power/generator/proc/get_menu(include_link = TRUE) var/t = "" if(!powernet) t += "Unable to connect to the power network!" @@ -148,8 +128,12 @@ t += "Pressure Inlet: [round(hot_circ_air2.return_pressure(), 0.1)] kPa / Outlet: [round(hot_circ_air1.return_pressure(), 0.1)] kPa
    " t += "" + else if(!hot_circ && cold_circ) + t += "Unable to locate hot circulator!" + else if(hot_circ && !cold_circ) + t += "Unable to locate cold circulator!" else - t += "Unable to locate all parts!" + t += "Unable to locate any parts!" if(include_link) t += "
    Close" @@ -168,10 +152,81 @@ if( href_list["close"] ) usr << browse(null, "window=teg") usr.unset_machine() - return 0 - return 1 + return FALSE + return TRUE /obj/machinery/power/generator/power_change() ..() update_icon() + +/obj/machinery/power/generator/proc/find_circs() + kill_circs() + var/list/circs = list() + var/obj/machinery/atmospherics/components/binary/circulator/C + var/circpath = /obj/machinery/atmospherics/components/binary/circulator + if(dir == NORTH || dir == SOUTH) + C = locate(circpath) in get_step(src, EAST) + if(C && C.dir == WEST) + circs += C + + C = locate(circpath) in get_step(src, WEST) + if(C && C.dir == EAST) + circs += C + + else + C = locate(circpath) in get_step(src, NORTH) + if(C && C.dir == SOUTH) + circs += C + + C = locate(circpath) in get_step(src, SOUTH) + if(C && C.dir == NORTH) + circs += C + + if(circs.len) + for(C in circs) + if(C.mode == CIRCULATOR_COLD && !cold_circ) + cold_circ = C + C.generator = src + else if(C.mode == CIRCULATOR_HOT && !hot_circ) + hot_circ = C + C.generator = src + +/obj/machinery/power/generator/wrench_act(mob/living/user, obj/item/I) + if(!panel_open) + return + anchored = !anchored + I.play_tool_sound(src) + if(!anchored) + kill_circs() + connect_to_network() + to_chat(user, "You [anchored?"secure":"unsecure"] [src].") + return TRUE + +/obj/machinery/power/generator/multitool_act(mob/living/user, obj/item/I) + if(!anchored) + return + find_circs() + to_chat(user, "You update [src]'s circulator links.") + return TRUE + +/obj/machinery/power/generator/screwdriver_act(mob/user, obj/item/I) + panel_open = !panel_open + I.play_tool_sound(src) + to_chat(user, "You [panel_open?"open":"close"] the panel on [src].") + return TRUE + +/obj/machinery/power/generator/crowbar_act(mob/user, obj/item/I) + default_deconstruction_crowbar(I) + return TRUE + +/obj/machinery/power/generator/on_deconstruction() + kill_circs() + +/obj/machinery/power/generator/proc/kill_circs() + if(hot_circ) + hot_circ.generator = null + hot_circ = null + if(cold_circ) + cold_circ.generator = null + cold_circ = null diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index ad1e5054c5..4d8cdaa778 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -22,7 +22,6 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne name = "gravitational generator" desc = "A device which produces a graviton field when set up." icon = 'icons/obj/machines/gravity_generator.dmi' - anchored = TRUE density = TRUE use_power = NO_POWER_USE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF @@ -39,9 +38,9 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne if(prob(20)) set_broken() -/obj/machinery/gravity_generator/tesla_act(power, explosive) +/obj/machinery/gravity_generator/tesla_act(power, tesla_flags) ..() - if(explosive) + if(tesla_flags & TESLA_MACHINE_EXPLOSIVE) qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over /obj/machinery/gravity_generator/update_icon() @@ -125,6 +124,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne var/charge_count = 100 var/current_overlay = null var/broken_state = 0 + var/setting = 1 //Gravity value when on /obj/machinery/gravity_generator/main/Destroy() // If we somehow get deleted, remove all of our other parts. investigate_log("was destroyed!", INVESTIGATE_GRAVITY) @@ -250,7 +250,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne if(href_list["gentoggle"]) breaker = !breaker - investigate_log("was toggled [breaker ? "ON" : "OFF"] by [usr.key].", INVESTIGATE_GRAVITY) + investigate_log("was toggled [breaker ? "ON" : "OFF"] by [key_name(usr)].", INVESTIGATE_GRAVITY) set_power() src.updateUsrDialog() @@ -290,18 +290,17 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne use_power = on ? ACTIVE_POWER_USE : IDLE_POWER_USE // Sound the alert if gravity was just enabled or disabled. var/alert = FALSE - var/area/A = get_area(src) if(SSticker.IsRoundInProgress()) if(on) // If we turned on and the game is live. if(gravity_in_level() == 0) alert = 1 investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY) - message_admins("The gravity generator was brought online [A][ADMIN_COORDJMP(src)]") + message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]") else if(gravity_in_level() == 1) alert = 1 investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY) - message_admins("The gravity generator was brought offline with no backup generator. [A][ADMIN_COORDJMP(src)]") + message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]") update_icon() update_list() @@ -387,6 +386,11 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne else GLOB.gravity_generators["[T.z]"] -= src +/obj/machinery/gravity_generator/main/proc/change_setting(value) + if(value != setting) + setting = value + shake_everyone() + // Misc /obj/item/paper/guides/jobs/engi/gravity_gen diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 40d317d2c3..0b6cf36921 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -89,7 +89,7 @@ if(!cell_connectors) to_chat(user, "This [name] can't support a power cell!") return - if(W.flags_1 & NODROP_1) + if(W.item_flags & NODROP) to_chat(user, "[W] is stuck to your hand!") return user.dropItemToGround(W) @@ -187,7 +187,6 @@ var/base_state = "tube" // base description and icon_state icon_state = "tube" desc = "A lighting fixture." - anchored = TRUE layer = WALL_OBJ_LAYER max_integrity = 100 use_power = ACTIVE_POWER_USE @@ -297,7 +296,8 @@ cut_overlays() switch(status) // set icon_states if(LIGHT_OK) - if(emergency_mode) + var/area/A = get_area(src) + if(emergency_mode || (A && A.fire)) icon_state = "[base_state]_emergency" else icon_state = "[base_state]" @@ -320,9 +320,16 @@ on = FALSE emergency_mode = FALSE if(on) - var/BR = nightshift_enabled? nightshift_brightness : brightness - var/PO = nightshift_enabled? nightshift_light_power : bulb_power - var/CO = nightshift_enabled? nightshift_light_color : bulb_colour + var/BR = brightness + var/PO = bulb_power + var/CO = bulb_colour + var/area/A = get_area(src) + if (A && A.fire) + CO = bulb_emergency_colour + else if (nightshift_enabled) + BR = nightshift_brightness + PO = nightshift_light_power + CO = nightshift_light_color var/matching = light && BR == light.light_range && PO == light.light_power && CO == light.light_color if(!matching) switchcount++ @@ -662,10 +669,12 @@ on = TRUE update() -/obj/machinery/light/tesla_act(power, explosive = FALSE) - if(explosive) - explosion(src.loc,0,0,0,flame_range = 5, adminlog = 0) - qdel(src) +/obj/machinery/light/tesla_act(power, tesla_flags) + if(tesla_flags & TESLA_MACHINE_EXPLOSIVE) + explosion(src,0,0,0,flame_range = 5, adminlog = 0) + qdel(src) + else + return ..() // called when area power state changes /obj/machinery/light/power_change() diff --git a/code/modules/power/monitor.dm b/code/modules/power/monitor.dm index a3edc99951..a934d08997 100644 --- a/code/modules/power/monitor.dm +++ b/code/modules/power/monitor.dm @@ -1,3 +1,5 @@ +//modular computer program version is located in code\modules\modular_computers\file_system\programs\powermonitor.dm, /datum/computer_file/program/power_monitor + /obj/machinery/computer/monitor name = "power monitoring console" desc = "It monitors power levels across the station." @@ -9,12 +11,24 @@ active_power_usage = 100 circuit = /obj/item/circuitboard/computer/powermonitor - var/obj/structure/cable/attached + var/obj/structure/cable/attached_wire + var/obj/machinery/power/apc/local_apc var/list/history = list() var/record_size = 60 var/record_interval = 50 var/next_record = 0 + var/is_secret_monitor = FALSE + +/obj/machinery/computer/monitor/secret //Hides the power monitor (such as ones on ruins & CentCom) from PDA's to prevent metagaming. + name = "outdated power monitoring console" + desc = "It monitors power levels across the local powernet." + circuit = /obj/item/circuitboard/computer/powermonitor/secret + is_secret_monitor = TRUE + +/obj/machinery/computer/monitor/secret/examine(mob/user) + ..() + to_chat(user, "It's operating system seems quite outdated... It doesn't seem like it'd be compatible with the latest remote NTOS monitoring systems.") /obj/machinery/computer/monitor/Initialize() . = ..() @@ -23,30 +37,47 @@ history["demand"] = list() /obj/machinery/computer/monitor/process() - if(!attached) + if(!get_powernet()) use_power = IDLE_POWER_USE search() else use_power = ACTIVE_POWER_USE record() -/obj/machinery/computer/monitor/proc/search() +/obj/machinery/computer/monitor/proc/search() //keep in sync with /datum/computer_file/program/power_monitor's version var/turf/T = get_turf(src) - attached = locate() in T + attached_wire = locate(/obj/structure/cable) in T + if(attached_wire) + return + var/area/A = get_area(src) //if the computer isn't directly connected to a wire, attempt to find the APC powering it to pull it's powernet instead + if(!A) + return + local_apc = A.get_apc() + if(!local_apc) + return + if(!local_apc.terminal) //this really shouldn't happen without badminnery. + local_apc = null -/obj/machinery/computer/monitor/proc/record() +/obj/machinery/computer/monitor/proc/get_powernet() //keep in sync with /datum/computer_file/program/power_monitor's version + if(attached_wire || (local_apc && local_apc.terminal)) + return attached_wire ? attached_wire.powernet : local_apc.terminal.powernet + return FALSE + +/obj/machinery/computer/monitor/proc/record() //keep in sync with /datum/computer_file/program/power_monitor's version if(world.time >= next_record) next_record = world.time + record_interval + var/datum/powernet/connected_powernet = get_powernet() + var/list/supply = history["supply"] - if(attached.powernet) - supply += attached.powernet.viewavail + if(connected_powernet) + supply += connected_powernet.viewavail if(supply.len > record_size) supply.Cut(1, 2) var/list/demand = history["demand"] - if(attached.powernet) - demand += attached.powernet.viewload + if(connected_powernet) + demand += connected_powernet.viewload if(demand.len > record_size) demand.Cut(1, 2) @@ -58,17 +89,18 @@ ui.open() /obj/machinery/computer/monitor/ui_data() + var/datum/powernet/connected_powernet = get_powernet() var/list/data = list() data["stored"] = record_size data["interval"] = record_interval / 10 - data["attached"] = attached ? TRUE : FALSE + data["attached"] = connected_powernet ? TRUE : FALSE data["history"] = history data["areas"] = list() - if(attached) - data["supply"] = DisplayPower(attached.powernet.viewavail) - data["demand"] = DisplayPower(attached.powernet.viewload) - for(var/obj/machinery/power/terminal/term in attached.powernet.nodes) + if(connected_powernet) + data["supply"] = DisplayPower(connected_powernet.viewavail) + data["demand"] = DisplayPower(connected_powernet.viewload) + for(var/obj/machinery/power/terminal/term in connected_powernet.nodes) var/obj/machinery/power/apc/A = term.master if(istype(A)) var/cell_charge diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index 7266a3e8a0..79e94be7f0 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -7,7 +7,6 @@ icon = 'icons/obj/power.dmi' icon_state = "rtg" density = TRUE - anchored = TRUE use_power = NO_POWER_USE circuit = /obj/item/circuitboard/machine/rtg @@ -83,8 +82,8 @@ /obj/machinery/power/rtg/abductor/bullet_act(obj/item/projectile/Proj) ..() if(!going_kaboom && istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))) - message_admins("[key_name_admin(Proj.firer)] triggered an Abductor Core explosion via projectile.") - log_game("[key_name(Proj.firer)] triggered an Abductor Core explosion via projectile.") + message_admins("[ADMIN_LOOKUPFLW(Proj.firer)] triggered an Abductor Core explosion at [AREACOORD(src)] via projectile.") + log_game("[key_name(Proj.firer)] triggered an Abductor Core explosion at [AREACOORD(src)] via projectile.") overload() /obj/machinery/power/rtg/abductor/blob_act(obj/structure/blob/B) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 2b5794857e..0e3545b1a7 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -1,8 +1,9 @@ -// last_power += (pulse_strength-RAD_COLLECTOR_EFFICIENCY)*RAD_COLLECTOR_COEFFICIENT +// stored_power += (pulse_strength-RAD_COLLECTOR_EFFICIENCY)*RAD_COLLECTOR_COEFFICIENT #define RAD_COLLECTOR_EFFICIENCY 80 // radiation needs to be over this amount to get power #define RAD_COLLECTOR_COEFFICIENT 100 #define RAD_COLLECTOR_STORED_OUT 0.04 // (this*100)% of stored power outputted per tick. Doesn't actualy change output total, lower numbers just means collectors output for longer in absence of a source #define RAD_COLLECTOR_MINING_CONVERSION_RATE 0.00001 //This is gonna need a lot of tweaking to get right. This is the number used to calculate the conversion of watts to research points per process() +#define RAD_COLLECTOR_OUTPUT min(stored_power, (stored_power*RAD_COLLECTOR_STORED_OUT)+1000) //Produces at least 1000 watts if it has more than that stored /obj/machinery/power/rad_collector name = "Radiation Collector Array" @@ -17,7 +18,7 @@ integrity_failure = 80 circuit = /obj/item/circuitboard/machine/rad_collector var/obj/item/tank/internals/plasma/loaded_tank = null - var/last_power = 0 + var/stored_power = 0 var/active = 0 var/locked = FALSE var/drainratio = 1 @@ -51,9 +52,9 @@ loaded_tank.air_contents.gases[/datum/gas/tritium][MOLES] += gasdrained loaded_tank.air_contents.garbage_collect() - var/power_produced = min(last_power, (last_power*RAD_COLLECTOR_STORED_OUT)+1000) //Produces at least 1000 watts if it has more than that stored + var/power_produced = RAD_COLLECTOR_OUTPUT add_avail(power_produced) - last_power-=power_produced + stored_power-=power_produced else if(is_station_level(z) && SSresearch.science_tech) if(!loaded_tank.air_contents.gases[/datum/gas/tritium] || !loaded_tank.air_contents.gases[/datum/gas/oxygen]) playsound(src, 'sound/machines/ding.ogg', 50, 1) @@ -65,9 +66,9 @@ loaded_tank.air_contents.assert_gas(/datum/gas/carbon_dioxide) loaded_tank.air_contents.gases[/datum/gas/carbon_dioxide][MOLES] += gasdrained*2 loaded_tank.air_contents.garbage_collect() - var/bitcoins_mined = min(last_power, (last_power*RAD_COLLECTOR_STORED_OUT)+1000) + var/bitcoins_mined = RAD_COLLECTOR_OUTPUT SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, bitcoins_mined*RAD_COLLECTOR_MINING_CONVERSION_RATE) - last_power-=bitcoins_mined + stored_power-=bitcoins_mined /obj/machinery/power/rad_collector/interact(mob/user) if(anchored) @@ -79,7 +80,7 @@ if(loaded_tank) fuel = loaded_tank.air_contents.gases[/datum/gas/plasma] fuel = fuel ? fuel[MOLES] : 0 - investigate_log("turned [active?"on":"off"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].", INVESTIGATE_SINGULO) + investigate_log("turned [active?"on":"off"] by [key_name(user)]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].", INVESTIGATE_SINGULO) return else to_chat(user, "The controls are locked!") @@ -173,9 +174,9 @@ . = ..() if(active) if(!bitcoinmining) - to_chat(user, "[src]'s display states that it is processing [DisplayPower(last_power)].") + to_chat(user, "[src]'s display states that it has stored [DisplayPower(stored_power)], and processing [DisplayPower(RAD_COLLECTOR_OUTPUT)].") else - to_chat(user, "[src]'s display states that it is producing a total of [last_power*RAD_COLLECTOR_MINING_CONVERSION_RATE] research points per minute.") + to_chat(user, "[src]'s display states that it has stored a total of [stored_power*RAD_COLLECTOR_MINING_CONVERSION_RATE], and producing [RAD_COLLECTOR_OUTPUT*RAD_COLLECTOR_MINING_CONVERSION_RATE] research points per minute.") else if(!bitcoinmining) to_chat(user,"[src]'s display displays the words: \"Power production mode. Please insert Plasma. Use a multitool to change production modes.\"") @@ -204,7 +205,7 @@ /obj/machinery/power/rad_collector/rad_act(pulse_strength) . = ..() if(loaded_tank && active && pulse_strength > RAD_COLLECTOR_EFFICIENCY) - last_power += (pulse_strength-RAD_COLLECTOR_EFFICIENCY)*RAD_COLLECTOR_COEFFICIENT + stored_power += (pulse_strength-RAD_COLLECTOR_EFFICIENCY)*RAD_COLLECTOR_COEFFICIENT /obj/machinery/power/rad_collector/proc/update_icons() cut_overlays() @@ -230,3 +231,5 @@ #undef RAD_COLLECTOR_EFFICIENCY #undef RAD_COLLECTOR_COEFFICIENT #undef RAD_COLLECTOR_STORED_OUT +#undef RAD_COLLECTOR_MINING_CONVERSION_RATE +#undef RAD_COLLECTOR_OUTPUT \ No newline at end of file diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index c8153b4a89..f6004b664a 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -5,7 +5,6 @@ desc = "An energy field." icon = 'icons/obj/singularity.dmi' icon_state = "Contain_F" - anchored = TRUE density = FALSE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF use_power = NO_POWER_USE diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 3ca4c70199..bf03256219 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -1,3 +1,8 @@ +//emitter construction defines +#define EMITTER_UNWRENCHED 0 +#define EMITTER_WRENCHED 1 +#define EMITTER_WELDED 2 + /obj/machinery/power/emitter name = "emitter" desc = "A heavy-duty industrial laser, often used in containment fields and power generation." @@ -14,14 +19,14 @@ active_power_usage = 300 var/icon_state_on = "emitter_+a" - var/active = 0 - var/powered = 0 + var/active = FALSE + var/powered = FALSE var/fire_delay = 100 var/maximum_fire_delay = 100 var/minimum_fire_delay = 20 var/last_shot = 0 var/shot_number = 0 - var/state = 0 + var/state = EMITTER_UNWRENCHED var/locked = FALSE var/allow_switch_interact = TRUE @@ -46,20 +51,24 @@ idle_power_usage = FALSE locked = TRUE req_access_txt = "100" - state = 2 + state = EMITTER_WELDED use_power = FALSE /obj/machinery/power/emitter/Initialize() . = ..() RefreshParts() wires = new /datum/wires/emitter(src) - if(state == 2 && anchored) + if(state == EMITTER_WELDED && anchored) connect_to_network() sparks = new sparks.attach(src) sparks.set_up(5, TRUE, src) +/obj/machinery/power/emitter/ComponentInitialize() + . = ..() + AddComponent(/datum/component/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES) + /obj/machinery/power/emitter/RefreshParts() var/max_firedelay = 120 var/firedelay = 120 @@ -89,9 +98,9 @@ /obj/machinery/power/emitter/Destroy() if(SSticker.IsRoundInProgress()) var/turf/T = get_turf(src) - message_admins("Emitter deleted at [ADMIN_COORDJMP(T)]",0,1) - log_game("Emitter deleted at [COORD(T)]") - investigate_log("deleted at [get_area(src)] [COORD(T)]", INVESTIGATE_SINGULO) + message_admins("Emitter deleted at [ADMIN_VERBOSEJMP(T)]") + log_game("Emitter deleted at [AREACOORD(T)]") + investigate_log("deleted at [AREACOORD(T)]", INVESTIGATE_SINGULO) QDEL_NULL(sparks) return ..() @@ -104,33 +113,35 @@ /obj/machinery/power/emitter/interact(mob/user) add_fingerprint(user) - if(state == 2) + if(state == EMITTER_WELDED) if(!powernet) - to_chat(user, "The emitter isn't connected to a wire!") - return 1 + to_chat(user, "\The [src] isn't connected to a wire!") + return TRUE if(!locked && allow_switch_interact) - if(src.active==1) - src.active = 0 - to_chat(user, "You turn off \the [src].") - message_admins("Emitter turned off by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("Emitter turned off by [key_name(user)] in [COORD(src)]") - investigate_log("turned off by [key_name(user)] at [get_area(src)]", INVESTIGATE_SINGULO) + if(active == TRUE) + active = FALSE + to_chat(user, "You turn off [src].") else - src.active = 1 - to_chat(user, "You turn on \the [src].") - src.shot_number = 0 - src.fire_delay = maximum_fire_delay - investigate_log("turned on by [key_name(user)] at [get_area(src)]", INVESTIGATE_SINGULO) + active = TRUE + to_chat(user, "You turn on [src].") + shot_number = 0 + fire_delay = maximum_fire_delay + + message_admins("Emitter turned [active ? "ON" : "OFF"] by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") + log_game("Emitter turned [active ? "ON" : "OFF"] by [key_name(user)] in [AREACOORD(src)]") + investigate_log("turned [active ? "ON" : "OFF"] by [key_name(user)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) + update_icon() + else to_chat(user, "The controls are locked!") else to_chat(user, "[src] needs to be firmly secured to the floor first!") - return 1 + return TRUE /obj/machinery/power/emitter/attack_animal(mob/living/simple_animal/M) if(ismegafauna(M) && anchored) - state = 0 + state = EMITTER_UNWRENCHED anchored = FALSE M.visible_message("[M] rips [src] free from its moorings!") else @@ -138,34 +149,29 @@ if(!anchored) step(src, get_dir(M, src)) - -/obj/machinery/power/emitter/emp_act(severity)//Emitters are hardened but still might have issues - return 1 - - /obj/machinery/power/emitter/process() if(stat & (BROKEN)) return - if(src.state != 2 || (!powernet && active_power_usage)) - src.active = 0 + if(state != EMITTER_WELDED || (!powernet && active_power_usage)) + active = FALSE update_icon() return - if(src.active == 1) + if(active == TRUE) if(!active_power_usage || avail(active_power_usage)) add_load(active_power_usage) if(!powered) - powered = 1 + powered = TRUE update_icon() - investigate_log("regained power and turned on at [get_area(src)]", INVESTIGATE_SINGULO) + investigate_log("regained power and turned ON at [AREACOORD(src)]", INVESTIGATE_SINGULO) else if(powered) - powered = 0 + powered = FALSE update_icon() - investigate_log("lost power and turned off at [get_area(src)]", INVESTIGATE_SINGULO) - log_game("Emitter lost power in ([x],[y],[z])") + investigate_log("lost power and turned OFF at [AREACOORD(src)]", INVESTIGATE_SINGULO) + log_game("Emitter lost power in [AREACOORD(src)]") return - if(charge <=80) - charge+=5 + if(charge <= 80) + charge += 5 if(!check_delay() || manual == TRUE) return FALSE fire_beam() @@ -178,7 +184,7 @@ /obj/machinery/power/emitter/proc/fire_beam_pulse() if(!check_delay()) return FALSE - if(state != 2) + if(state != EMITTER_WELDED) return FALSE if(avail(active_power_usage)) add_load(active_power_usage) @@ -186,10 +192,10 @@ /obj/machinery/power/emitter/proc/fire_beam(mob/user) var/obj/item/projectile/P = new projectile_type(get_turf(src)) - playsound(get_turf(src), projectile_sound, 50, 1) + playsound(get_turf(src), projectile_sound, 50, TRUE) if(prob(35)) sparks.start() - P.firer = user? user : src + P.firer = user ? user : src if(last_projectile_params) P.p_x = last_projectile_params[2] P.p_y = last_projectile_params[3] @@ -204,7 +210,6 @@ else fire_delay = rand(minimum_fire_delay,maximum_fire_delay) shot_number = 0 - P.fire() return P /obj/machinery/power/emitter/can_be_unfasten_wrench(mob/user, silent) @@ -213,7 +218,7 @@ to_chat(user, "Turn \the [src] off first!") return FAILED_UNFASTEN - else if(state == EM_WELDED) + else if(state == EMITTER_WELDED) if(!silent) to_chat(user, "[src] is welded to the floor!") return FAILED_UNFASTEN @@ -224,9 +229,9 @@ . = ..() if(. == SUCCESSFUL_UNFASTEN) if(anchored) - state = EM_SECURED + state = EMITTER_WRENCHED else - state = EM_UNSECURED + state = EMITTER_UNWRENCHED /obj/machinery/power/emitter/wrench_act(mob/living/user, obj/item/I) default_unfasten_wrench(user, I) @@ -238,26 +243,26 @@ return TRUE switch(state) - if(EM_UNSECURED) + if(EMITTER_UNWRENCHED) to_chat(user, "The [src.name] needs to be wrenched to the floor!") - if(EM_SECURED) + if(EMITTER_WRENCHED) if(!I.tool_start_check(user, amount=0)) return TRUE user.visible_message("[user.name] starts to weld the [name] to the floor.", \ "You start to weld \the [src] to the floor...", \ "You hear welding.") if(I.use_tool(src, user, 20, volume=50)) - state = EM_WELDED + state = EMITTER_WELDED to_chat(user, "You weld \the [src] to the floor.") connect_to_network() - if(EM_WELDED) + if(EMITTER_WELDED) if(!I.tool_start_check(user, amount=0)) return TRUE user.visible_message("[user.name] starts to cut the [name] free from the floor.", \ "You start to cut \the [src] free from the floor...", \ "You hear welding.") if(I.use_tool(src, user, 20, volume=50)) - state = EM_SECURED + state = EMITTER_WRENCHED to_chat(user, "You cut \the [src] free from the floor.") disconnect_from_network() @@ -308,14 +313,14 @@ icon_state = "protoemitter" icon_state_on = "protoemitter_+a" can_buckle = TRUE - buckle_lying = 0 + buckle_lying = FALSE var/view_range = 12 var/datum/action/innate/protoemitter/firing/auto //BUCKLE HOOKS /obj/machinery/power/emitter/prototype/unbuckle_mob(mob/living/buckled_mob,force = 0) - playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE) manual = FALSE for(var/obj/item/I in buckled_mob.held_items) if(istype(I, /obj/item/turret_control)) @@ -336,7 +341,7 @@ return M.forceMove(get_turf(src)) ..() - playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE) M.pixel_y = 14 layer = 4.1 if(M.client) @@ -363,7 +368,7 @@ /datum/action/innate/protoemitter/firing/Activate() if(PE.manual) - playsound(PE,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(PE,'sound/mecha/mechmove01.ogg', 50, TRUE) PE.manual = FALSE name = "Switch to Manual Firing" desc = "The emitter will only fire on your command and at your designated target" @@ -374,7 +379,7 @@ UpdateButtonIcon() return else - playsound(PE,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(PE,'sound/mecha/mechmove01.ogg', 50, TRUE) name = "Switch to Automatic Firing" desc = "Emitters will switch to periodic firing at your last target" button_icon_state = "mech_zoom_off" @@ -395,8 +400,8 @@ name = "turret controls" icon_state = "offhand" w_class = WEIGHT_CLASS_HUGE - flags_1 = ABSTRACT_1 | NODROP_1 - resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF | NOBLUDGEON_1 + item_flags = ABSTRACT | NODROP | NOBLUDGEON + resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF var/delay = 0 /obj/item/turret_control/afterattack(atom/targeted_atom, mob/user, proxflag, clickparams) @@ -445,4 +450,9 @@ E.fire_beam(user) delay = world.time + 10 else if (E.charge < 10) - playsound(get_turf(user),'sound/machines/buzz-sigh.ogg', 50, 1) + playsound(src,'sound/machines/buzz-sigh.ogg', 50, TRUE) + + +#undef EMITTER_UNWRENCHED +#undef EMITTER_WRENCHED +#undef EMITTER_WELDED diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index dcec821a90..6be89b43f4 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -59,6 +59,9 @@ field_generator power level display fields = list() connected_gens = list() +/obj/machinery/field/generator/ComponentInitialize() + . = ..() + AddComponent(/datum/component/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES) /obj/machinery/field/generator/process() if(active == FG_ONLINE) @@ -75,7 +78,7 @@ field_generator power level display "You turn on [src].", \ "You hear heavy droning.") turn_on() - investigate_log("activated by [user.key].", INVESTIGATE_SINGULO) + investigate_log("activated by [key_name(user)].", INVESTIGATE_SINGULO) add_fingerprint(user) else @@ -148,10 +151,6 @@ field_generator power level display if(!anchored) step(src, get_dir(M, src)) -/obj/machinery/field/generator/emp_act() - return 0 - - /obj/machinery/field/generator/blob_act(obj/structure/blob/B) if(active) return 0 @@ -333,9 +332,8 @@ field_generator power level display if((world.time - O.last_warning) > 50) //to stop message-spam temp = 0 var/turf/T = get_turf(src) - var/area/A = get_area(T) - message_admins("A singulo exists and a containment field has failed at [A] [ADMIN_COORDJMP(T)].") - investigate_log("has failed whilst a singulo exists at [A] [COORD(T)].", INVESTIGATE_SINGULO) + message_admins("A singulo exists and a containment field has failed at [ADMIN_VERBOSEJMP(T)].") + investigate_log("has failed whilst a singulo exists at [AREACOORD(T)].", INVESTIGATE_SINGULO) O.last_warning = world.time /obj/machinery/field/generator/shock(mob/living/user) diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 4d4eb73687..66870d73e8 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -119,9 +119,9 @@ strength++ strength_change() - message_admins("PA Control Computer increased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [COORD(src)]") - investigate_log("increased to [strength] by [key_name(usr)]", INVESTIGATE_SINGULO) + message_admins("PA Control Computer increased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_VERBOSEJMP(src)]") + log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [AREACOORD(src)]") + investigate_log("increased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) /obj/machinery/particle_accelerator/control_box/proc/remove_strength(s) @@ -129,9 +129,9 @@ strength-- strength_change() - message_admins("PA Control Computer decreased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [COORD(src)]") - investigate_log("decreased to [strength] by [key_name(usr)]", INVESTIGATE_SINGULO) + message_admins("PA Control Computer decreased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_VERBOSEJMP(src)]") + log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [AREACOORD(src)]") + investigate_log("decreased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) /obj/machinery/particle_accelerator/control_box/power_change() @@ -206,9 +206,9 @@ /obj/machinery/particle_accelerator/control_box/proc/toggle_power() active = !active - investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"]", INVESTIGATE_SINGULO) - message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? key_name_admin(usr) : "outside forces"][ADMIN_QUE(usr)] [ADMIN_FLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? "[key_name(usr)]" : "outside forces"] in [COORD(src)]") + investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"] at [AREACOORD(src)]", INVESTIGATE_SINGULO) + message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? ADMIN_LOOKUPFLW(usr) : "outside forces"] in [ADMIN_VERBOSEJMP(src)]") + log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? "[key_name(usr)]" : "outside forces"] at [AREACOORD(src)]") if(active) use_power = ACTIVE_POWER_USE for(var/CP in connected_parts) diff --git a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm index f9edf59368..fc7cca55e6 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm @@ -1,6 +1,6 @@ /obj/structure/particle_accelerator/particle_emitter name = "EM Containment Grid" - desc = "This launchs the Alpha particles, might not want to stand near this end." + desc = "This launches the Alpha particles, might not want to stand near this end." icon = 'icons/obj/machines/particle_accelerator.dmi' icon_state = "none" var/fire_delay = 50 diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 5df8fb1d13..25623661d6 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -129,12 +129,11 @@ /obj/singularity/proc/admin_investigate_setup() var/turf/T = get_turf(src) - var/area/A = get_area(T) last_warning = world.time var/count = locate(/obj/machinery/field/containment) in urange(30, src, 1) if(!count) - message_admins("A singulo has been created without containment fields active at [A] [ADMIN_COORDJMP(T)].") - investigate_log("was created at [A] [COORD(T)]. [count?"":"No containment fields were active"]", INVESTIGATE_SINGULO) + message_admins("A singulo has been created without containment fields active at [ADMIN_VERBOSEJMP(T)].") + investigate_log("was created at [AREACOORD(T)]. [count?"":"No containment fields were active"]", INVESTIGATE_SINGULO) /obj/singularity/proc/dissipate() if(!dissipate) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index d514a2c4e9..4a8ee61f0f 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -19,7 +19,6 @@ desc = "A high-capacity superconducting magnetic energy storage (SMES) unit." icon_state = "smes" density = TRUE - anchored = TRUE use_power = NO_POWER_USE circuit = /obj/item/circuitboard/machine/smes var/capacity = 5e6 // maximum charge @@ -152,9 +151,9 @@ //crowbarring it ! var/turf/T = get_turf(src) if(default_deconstruction_crowbar(I)) - message_admins("[src] has been deconstructed by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("[src] has been deconstructed by [key_name(user)]") - investigate_log("SMES deconstructed by [key_name(user)]", INVESTIGATE_SINGULO) + message_admins("[src] has been deconstructed by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("[src] has been deconstructed by [key_name(user)] at [AREACOORD(src)]") + investigate_log("SMES deconstructed by [key_name(user)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) return else if(panel_open && istype(I, /obj/item/crowbar)) return @@ -174,11 +173,10 @@ /obj/machinery/power/smes/Destroy() if(SSticker.IsRoundInProgress()) - var/area/A = get_area(src) var/turf/T = get_turf(src) - message_admins("SMES deleted at [A][ADMIN_JMP(T)]") - log_game("SMES deleted at [A][COORD(T)]") - investigate_log("deleted at [A][COORD(T)]", INVESTIGATE_SINGULO) + message_admins("SMES deleted at [ADMIN_VERBOSEJMP(T)]") + log_game("SMES deleted at [AREACOORD(T)]") + investigate_log("deleted at [AREACOORD(T)]", INVESTIGATE_SINGULO) if(terminal) disconnect_terminal() return ..() @@ -350,12 +348,12 @@ switch(action) if("tryinput") input_attempt = !input_attempt - log_smes(usr.ckey) + log_smes(usr) update_icon() . = TRUE if("tryoutput") output_attempt = !output_attempt - log_smes(usr.ckey) + log_smes(usr) update_icon() . = TRUE if("input") @@ -379,7 +377,7 @@ . = TRUE if(.) input_level = CLAMP(target, 0, input_level_max) - log_smes(usr.ckey) + log_smes(usr) if("output") var/target = params["target"] var/adjust = text2num(params["adjust"]) @@ -401,13 +399,16 @@ . = TRUE if(.) output_level = CLAMP(target, 0, output_level_max) - log_smes(usr.ckey) + log_smes(usr) -/obj/machinery/power/smes/proc/log_smes(user = "") - investigate_log("input/output; [input_level>output_level?"":""][input_level]/[output_level] | Charge: [charge] | Output-mode: [output_attempt?"on":"off"] | Input-mode: [input_attempt?"auto":"off"] by [user]", INVESTIGATE_SINGULO) +/obj/machinery/power/smes/proc/log_smes(mob/user) + investigate_log("input/output; [input_level>output_level?"":""][input_level]/[output_level] | Charge: [charge] | Output-mode: [output_attempt?"on":"off"] | Input-mode: [input_attempt?"auto":"off"] by [user ? key_name(user) : "outside forces"]", INVESTIGATE_SINGULO) /obj/machinery/power/smes/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return input_attempt = rand(0,1) inputting = input_attempt output_attempt = rand(0,1) @@ -418,8 +419,7 @@ if (charge < 0) charge = 0 update_icon() - log_smes("an emp") - ..() + log_smes() /obj/machinery/power/smes/engineering charge = 1.5e6 // Engineering starts with some charge for singulo diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index d7e0bc66bc..18cd6d22a6 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -6,7 +6,6 @@ desc = "A solar panel. Generates electricity when in contact with sunlight." icon = 'goon/icons/obj/power.dmi' icon_state = "sp_base" - anchored = TRUE density = TRUE use_power = NO_POWER_USE idle_power_usage = 0 @@ -106,7 +105,7 @@ add_overlay(mutable_appearance(icon, "solar_panel", FLY_LAYER)) src.setDir(angle2dir(adir)) -//calculates the fraction of the sunlight that the panel recieves +//calculates the fraction of the sunlight that the panel receives /obj/machinery/power/solar/proc/update_solar_exposure() if(obscured) sunfrac = 0 @@ -120,7 +119,7 @@ return sunfrac = cos(p_angle) ** 2 - //isn't the power recieved from the incoming light proportionnal to cos(p_angle) (Lambert's cosine law) rather than cos(p_angle)^2 ? + //isn't the power received from the incoming light proportionnal to cos(p_angle) (Lambert's cosine law) rather than cos(p_angle)^2 ? /obj/machinery/power/solar/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY if(stat & BROKEN) @@ -257,7 +256,6 @@ desc = "A controller for solar panel arrays." icon = 'icons/obj/computer.dmi' icon_state = "computer" - anchored = TRUE density = TRUE use_power = IDLE_POWER_USE idle_power_usage = 250 @@ -425,7 +423,7 @@ A.icon_state = "4" A.anchored = TRUE qdel(src) - else if(user.a_intent != INTENT_HARM && !(I.flags_1 & NOBLUDGEON_1)) + else if(user.a_intent != INTENT_HARM && !(I.item_flags & NOBLUDGEON)) attack_hand(user) else return ..() diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 15a40d0876..53140d45e0 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -255,9 +255,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) sleep(10) continue else if(i > 50) - speaking = "[i/10] seconds remain before causality stabilization." + speaking = "[DisplayTimeText(i, TRUE)] remain before causality stabilization." else - speaking = "[i/10]..." + speaking = "[i*0.1]..." radio.talk_into(src, speaking, common_channel, get_spans(), get_default_language()) sleep(10) @@ -279,7 +279,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(M.z == z) SEND_SOUND(M, 'sound/magic/charge.ogg') to_chat(M, "You feel reality distort for a moment...") - M.SendSignal(COMSIG_ADD_MOOD_EVENT, "delam", /datum/mood_event/delam) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "delam", /datum/mood_event/delam) if(combined_gas > MOLE_PENALTY_THRESHOLD) investigate_log("has collapsed into a singularity.", INVESTIGATE_SUPERMATTER) if(T) @@ -480,7 +480,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(!istype(L)) return FALSE if(!istype(Proj.firer, /obj/machinery/power/emitter)) - investigate_log("has been hit by [Proj] fired by [Proj.firer]", INVESTIGATE_SUPERMATTER) + investigate_log("has been hit by [Proj] fired by [key_name(Proj.firer)]", INVESTIGATE_SUPERMATTER) if(Proj.flag != "bullet") power += Proj.damage * config_bullet_energy if(!has_been_powered) @@ -563,12 +563,12 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(!cause) cause = "contact" nom.visible_message(vis_msg, mob_msg, "You hear an unearthly noise as a wave of heat washes over you.") - investigate_log("has been attacked ([cause]) by [nom]", INVESTIGATE_SUPERMATTER) + investigate_log("has been attacked ([cause]) by [key_name(nom)]", INVESTIGATE_SUPERMATTER) playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1) Consume(nom) /obj/machinery/power/supermatter_crystal/attackby(obj/item/W, mob/living/user, params) - if(!istype(W) || (W.flags_1 & ABSTRACT_1) || !istype(user)) + if(!istype(W) || (W.item_flags & ABSTRACT) || !istype(user)) return if (istype(W, /obj/item/melee/roastingstick)) return ..() @@ -582,7 +582,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) user.visible_message("As [user] touches \the [src] with \a [W], silence fills the room...",\ "You touch \the [src] with \the [W], and everything suddenly goes silent.\n\The [W] flashes into dust as you flinch away from \the [src].",\ "Everything suddenly goes silent.") - investigate_log("has been attacked ([W]) by [user]", INVESTIGATE_SUPERMATTER) + investigate_log("has been attacked ([W]) by [key_name(user)]", INVESTIGATE_SUPERMATTER) Consume(W) playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1) @@ -629,7 +629,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Some poor sod got eaten, go ahead and irradiate people nearby. radiation_pulse(src, 3000, 2, TRUE) for(var/mob/living/L in range(10)) - investigate_log("has irradiated [L] after consuming [AM].", INVESTIGATE_SUPERMATTER) + investigate_log("has irradiated [key_name(L)] after consuming [AM].", INVESTIGATE_SUPERMATTER) if(L in view()) L.show_message("As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.", 1,\ "The unearthly ringing subsides and you notice you have new radiation burns.", 2) @@ -650,14 +650,24 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) moveable = TRUE /obj/machinery/power/supermatter_crystal/shard/engine + name = "anchored supermatter shard" is_main_engine = TRUE + anchored = TRUE + moveable = FALSE // When you wanna make a supermatter shard for the dramatic effect, but // don't want it exploding suddenly /obj/machinery/power/supermatter_crystal/shard/hugbox + name = "anchored supermatter shard" takes_damage = FALSE produces_gas = FALSE moveable = FALSE + anchored = TRUE + +/obj/machinery/power/supermatter_crystal/shard/hugbox/fakecrystal //Hugbox shard with crystal visuals, used in the Supermatter/Hyperfractal shuttle + name = "supermatter crystal" + base_icon_state = "darkmatter" + icon_state = "darkmatter" /obj/machinery/power/supermatter_crystal/proc/supermatter_pull(turf/center, pull_range = 10) playsound(src.loc, 'sound/weapons/marauder.ogg', 100, 1, extrarange = 7) diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm index d82189e520..3fa815bf99 100644 --- a/code/modules/power/terminal.dm +++ b/code/modules/power/terminal.dm @@ -8,9 +8,8 @@ icon_state = "term" desc = "It's an underfloor wiring terminal for power equipment." level = 1 - var/obj/machinery/power/master = null - anchored = TRUE layer = WIRE_TERMINAL_LAYER //a bit above wires + var/obj/machinery/power/master = null /obj/machinery/power/terminal/Initialize() diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index b2714ad7ca..5ee0b91b2b 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -25,7 +25,7 @@ /obj/machinery/power/tesla_coil/Initialize() . = ..() - // wires = new /datum/wires/tesla_coil(src) //CITADEL EDIT, Kevinz you cheaty fuccboi. + wires = new /datum/wires/tesla_coil(src) //CITADEL EDIT, Kevinz you cheaty fuccboi. linked_techweb = SSresearch.science_tech /obj/machinery/power/tesla_coil/RefreshParts() @@ -62,9 +62,9 @@ if(default_deconstruction_crowbar(W)) return - /*if(is_wire_tool(W) && panel_open) CITADEL EDIT - They removed the wires because they don't like my cheating + if(is_wire_tool(W) && panel_open) wires.interact(user) - return*/ + return return ..() @@ -73,7 +73,7 @@ if(user.a_intent == INTENT_GRAB && user_buckle_mob(user.pulling, user, check_loc = 0)) return ..() -/obj/machinery/power/tesla_coil/tesla_act(var/power) +/obj/machinery/power/tesla_coil/tesla_act(power, tesla_flags, shocked_targets) if(anchored && !panel_open) obj_flags |= BEING_SHOCKED //don't lose arc power when it's not connected to anything @@ -82,7 +82,7 @@ add_avail(power_produced*input_power_multiplier) flick("coilhit", src) playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 5, power_produced) + tesla_zap(src, 5, power_produced, tesla_flags, shocked_targets) if(istype(linked_techweb)) linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 1)) // x4 coils = ~240/m point bonus for R&D addtimer(CALLBACK(src, .proc/reset_shocked), 10) @@ -110,14 +110,14 @@ circuit = /obj/item/circuitboard/machine/tesla_coil/research power_loss = 20 // something something, high voltage + resistance -/obj/machinery/power/tesla_coil/research/tesla_act(var/power) +/obj/machinery/power/tesla_coil/research/tesla_act(power, tesla_flags, shocked_things) if(anchored && !panel_open) obj_flags |= BEING_SHOCKED var/power_produced = powernet ? power / power_loss : power add_avail(power_produced*input_power_multiplier) flick("rpcoilhit", src) playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 5, power_produced) + tesla_zap(src, 5, power_produced, tesla_flags, shocked_things) if(istype(linked_techweb)) linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 3)) // x4 coils with a pulse per second or so = ~720/m point bonus for R&D addtimer(CALLBACK(src, .proc/reset_shocked), 10) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 9cdcd08810..470b6e789c 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -66,7 +66,7 @@ pixel_y = -32 for (var/ball in orbiting_balls) var/range = rand(1, CLAMP(orbiting_balls.len, 3, 7)) - tesla_zap(ball, range, TESLA_MINI_POWER/7*range, TRUE) + tesla_zap(ball, range, TESLA_MINI_POWER/7*range) else energy = 0 // ensure we dont have miniballs of miniballs @@ -159,7 +159,7 @@ var/mob/living/carbon/C = A C.dust() -/proc/tesla_zap(atom/source, zap_range = 3, power, explosive = FALSE, stun_mobs = TRUE) +/proc/tesla_zap(atom/source, zap_range = 3, power, tesla_flags = TESLA_DEFAULT_FLAGS, list/shocked_targets) . = source.dir if(power < 1000) return @@ -186,6 +186,9 @@ /obj/structure/particle_accelerator/end_cap, /obj/machinery/field/containment, /obj/structure/disposalpipe, + /obj/structure/disposaloutlet, + /obj/machinery/disposal/deliveryChute, + /obj/machinery/camera, /obj/structure/sign, /obj/machinery/gateway, /obj/structure/lattice, @@ -193,6 +196,9 @@ /obj/machinery/the_singularitygen/tesla)) for(var/A in typecache_filter_multi_list_exclusion(oview(source, zap_range+2), things_to_shock, blacklisted_tesla_types)) + if(!(tesla_flags & TESLA_ALLOW_DUPLICATES) && LAZYACCESS(shocked_targets, A)) + continue + if(istype(A, /obj/machinery/power/tesla_coil)) var/dist = get_dist(source, A) var/obj/machinery/power/tesla_coil/C = A @@ -263,33 +269,35 @@ if(closest_atom) //common stuff source.Beam(closest_atom, icon_state="lightning[rand(1,12)]", time=5, maxdistance = INFINITY) + if(!(tesla_flags & TESLA_ALLOW_DUPLICATES)) + LAZYSET(shocked_targets, closest_atom, TRUE) var/zapdir = get_dir(source, closest_atom) if(zapdir) . = zapdir //per type stuff: if(closest_tesla_coil) - closest_tesla_coil.tesla_act(power, explosive, stun_mobs) + closest_tesla_coil.tesla_act(power, tesla_flags, shocked_targets) else if(closest_grounding_rod) - closest_grounding_rod.tesla_act(power, explosive, stun_mobs) + closest_grounding_rod.tesla_act(power, tesla_flags, shocked_targets) else if(closest_mob) - var/shock_damage = CLAMP(round(power/400), 10, 90) + rand(-5, 5) - closest_mob.electrocute_act(shock_damage, source, 1, tesla_shock = 1, stun = stun_mobs) + var/shock_damage = (tesla_flags & TESLA_MOB_DAMAGE)? (min(round(power/600), 90) + rand(-5, 5)) : 0 + closest_mob.electrocute_act(shock_damage, source, 1, tesla_shock = 1, stun = (tesla_flags & TESLA_MOB_STUN)) if(issilicon(closest_mob)) var/mob/living/silicon/S = closest_mob - if(stun_mobs) + if((tesla_flags & TESLA_MOB_STUN) && (tesla_flags & TESLA_MOB_DAMAGE)) S.emp_act(EMP_LIGHT) - tesla_zap(S, 7, power / 1.5, explosive, stun_mobs) // metallic folks bounce it further + tesla_zap(S, 7, power / 1.5, tesla_flags, shocked_targets) // metallic folks bounce it further else - tesla_zap(closest_mob, 5, power / 1.5, explosive, stun_mobs) + tesla_zap(closest_mob, 5, power / 1.5, tesla_flags, shocked_targets) else if(closest_machine) - closest_machine.tesla_act(power, explosive, stun_mobs) + closest_machine.tesla_act(power, tesla_flags, shocked_targets) else if(closest_blob) - closest_blob.tesla_act(power, explosive, stun_mobs) + closest_blob.tesla_act(power, tesla_flags, shocked_targets) else if(closest_structure) - closest_structure.tesla_act(power, explosive, stun_mobs) + closest_structure.tesla_act(power, tesla_flags, shocked_targets) diff --git a/code/modules/power/tesla/generator.dm b/code/modules/power/tesla/generator.dm index 63bce099fa..53d7010806 100644 --- a/code/modules/power/tesla/generator.dm +++ b/code/modules/power/tesla/generator.dm @@ -5,6 +5,6 @@ icon_state = "TheSingGen" creation_type = /obj/singularity/energy_ball -/obj/machinery/the_singularitygen/tesla/tesla_act(power, explosive = FALSE) - if(explosive) +/obj/machinery/the_singularitygen/tesla/tesla_act(power, tesla_flags) + if(tesla_flags & TESLA_MACHINE_EXPLOSIVE) energy += power diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index c999554d87..cc5b1d6322 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -8,7 +8,6 @@ desc = "A solar directional tracker." icon = 'goon/icons/obj/power.dmi' icon_state = "tracker" - anchored = TRUE density = TRUE use_power = NO_POWER_USE max_integrity = 250 diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 22777e4fcf..85ee7589b9 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -27,7 +27,6 @@ desc = "The compressor stage of a gas turbine generator." icon = 'icons/obj/atmospherics/pipes/simple.dmi' icon_state = "compressor" - anchored = TRUE density = TRUE resistance_flags = FIRE_PROOF CanAtmosPass = ATMOS_PASS_DENSITY @@ -48,7 +47,6 @@ desc = "A gas turbine used for backup power generation." icon = 'icons/obj/atmospherics/pipes/simple.dmi' icon_state = "turbine" - anchored = TRUE density = TRUE resistance_flags = FIRE_PROOF CanAtmosPass = ATMOS_PASS_DENSITY diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index de0d03da3b..4c66939e53 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -7,11 +7,6 @@ caliber = "shotgun" projectile_type = /obj/item/projectile/bullet/shotgun_slug materials = list(MAT_METAL=4000) - -/obj/item/ammo_casing/shotgun/tengauge - name = "10g shotgun slug" - desc = "A 10 gauge lead slug." - projectile_type = /obj/item/projectile/bullet/shotgun_slug/tengauge /obj/item/ammo_casing/shotgun/beanbag name = "beanbag slug" @@ -118,7 +113,7 @@ /obj/item/ammo_casing/shotgun/dart/noreact name = "cryostasis shotgun dart" - desc = "A dart for use in shotguns, using similar technolgoy as cryostatis beakers to keep internal reagents from reacting. Can be injected with up to 10 units of any chemical." + desc = "A dart for use in shotguns, using similar technology as cryostatis beakers to keep internal reagents from reacting. Can be injected with up to 10 units of any chemical." icon_state = "cnrshell" reagent_amount = 10 reagent_react = FALSE diff --git a/code/modules/projectiles/ammunition/energy/gravity.dm b/code/modules/projectiles/ammunition/energy/gravity.dm index f549a5b5e4..be3a4494cd 100644 --- a/code/modules/projectiles/ammunition/energy/gravity.dm +++ b/code/modules/projectiles/ammunition/energy/gravity.dm @@ -7,8 +7,8 @@ var/obj/item/gun/energy/gravity_gun/gun /obj/item/ammo_casing/energy/gravityrepulse/Initialize(mapload, obj/item/gun/energy/gravity_gun/G) - . = ..() gun = G + . = ..() /obj/item/ammo_casing/energy/gravityattract projectile_type = /obj/item/projectile/gravityattract @@ -20,8 +20,8 @@ /obj/item/ammo_casing/energy/gravityattract/Initialize(mapload, obj/item/gun/energy/gravity_gun/G) - . = ..() gun = G + . = ..() /obj/item/ammo_casing/energy/gravitychaos projectile_type = /obj/item/projectile/gravitychaos @@ -32,5 +32,5 @@ var/obj/item/gun/energy/gravity_gun/gun /obj/item/ammo_casing/energy/gravitychaos/Initialize(mapload, obj/item/gun/energy/gravity_gun/G) - . = ..() gun = G + . = ..() diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 5ab3146a91..476240a852 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -131,4 +131,8 @@ var/turf_mag = get_turf(src) for(var/obj/item/ammo in stored_ammo) ammo.forceMove(turf_mag) - stored_ammo -= ammo \ No newline at end of file + stored_ammo -= ammo + +/obj/item/ammo_box/magazine/handle_atom_del(atom/A) + stored_ammo -= A + update_icon() diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index c6dc004879..65724e503a 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -19,7 +19,7 @@ icon_state = "46x30mmtA-[round(ammo_count(),4)]" /obj/item/ammo_box/magazine/wt550m9/wtic - name = "wt550 magazine (Incindiary 4.6x30mm)" + name = "wt550 magazine (Incendiary 4.6x30mm)" icon_state = "46x30mmtI-20" ammo_type = /obj/item/ammo_casing/c46x30mm/inc @@ -54,7 +54,7 @@ ammo_type = /obj/item/ammo_casing/c9mm/ap /obj/item/ammo_box/magazine/smgm9mm/fire - name = "SMG Magazine (Incindiary 9mm)" + name = "SMG Magazine (Incendiary 9mm)" ammo_type = /obj/item/ammo_casing/c9mm/inc /obj/item/ammo_box/magazine/smgm45 diff --git a/code/modules/projectiles/boxes_magazines/internal/_internal.dm b/code/modules/projectiles/boxes_magazines/internal/_internal.dm index e21cb5ce61..c6ee7ec0cb 100644 --- a/code/modules/projectiles/boxes_magazines/internal/_internal.dm +++ b/code/modules/projectiles/boxes_magazines/internal/_internal.dm @@ -1,6 +1,7 @@ /obj/item/ammo_box/magazine/internal desc = "Oh god, this shouldn't be here" - flags_1 = CONDUCT_1|ABSTRACT_1 + flags_1 = CONDUCT_1 + item_flags = ABSTRACT //internals magazines are accessible, so replace spent ammo if full when trying to put a live one in /obj/item/ammo_box/magazine/internal/give_round(obj/item/ammo_casing/R) diff --git a/code/modules/projectiles/boxes_magazines/internal/revolver.dm b/code/modules/projectiles/boxes_magazines/internal/revolver.dm index 976f80f437..a98fd29e99 100644 --- a/code/modules/projectiles/boxes_magazines/internal/revolver.dm +++ b/code/modules/projectiles/boxes_magazines/internal/revolver.dm @@ -5,13 +5,13 @@ max_ammo = 6 /obj/item/ammo_box/magazine/internal/cylinder/rev762 - name = "nagant revolver cylinder" + name = "\improper Nagant revolver cylinder" ammo_type = /obj/item/ammo_casing/n762 caliber = "n762" max_ammo = 7 /obj/item/ammo_box/magazine/internal/cylinder/rus357 - name = "russian revolver cylinder" + name = "\improper Russian revolver cylinder" ammo_type = /obj/item/ammo_casing/a357 caliber = "357" max_ammo = 6 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 28cf2408ca..569f886ec2 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -127,9 +127,10 @@ user.visible_message("[user] fires [src]!", null, null, COMBAT_MESSAGE_RANGE) /obj/item/gun/emp_act(severity) - for(var/obj/O in contents) - O.emp_act(severity) - + . = ..() + if(!(. & EMP_PROTECT_CONTENTS)) + for(var/obj/O in contents) + O.emp_act(severity) /obj/item/gun/afterattack(atom/target, mob/living/user, flag, params) if(firing_burst) @@ -347,7 +348,7 @@ var/state = "bayonet" //Generic state. if(bayonet.icon_state in icon_states('icons/obj/guns/bayonets.dmi')) //Snowflake state? state = bayonet.icon_state - var/icon/bayonet_icons = 'icons/obj/guns/bayonets.dmi' + var/icon/bayonet_icons = 'icons/obj/guns/bayonets.dmi' knife_overlay = mutable_appearance(bayonet_icons, state) knife_overlay.pixel_x = knife_x_offset knife_overlay.pixel_y = knife_y_offset @@ -527,3 +528,8 @@ if(zoomable) azoom = new() azoom.gun = src + +/obj/item/gun/handle_atom_del(atom/A) + if(A == chambered) + chambered = null + update_icon() diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index a4fcdd0266..24ef2a2604 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -27,7 +27,7 @@ can_suppress = FALSE /obj/item/gun/ballistic/automatic/pistol/deagle - name = "desert eagle" + name = "\improper Desert Eagle" desc = "A robust .50 AE handgun." icon_state = "deagle" force = 14 @@ -44,7 +44,7 @@ icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" /obj/item/gun/ballistic/automatic/pistol/deagle/gold - desc = "A gold plated desert eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo." + desc = "A gold plated Desert Eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo." icon_state = "deagleg" item_state = "deagleg" @@ -55,7 +55,7 @@ /obj/item/gun/ballistic/automatic/pistol/APS name = "stechkin APS pistol" - desc = "The original russian version of a widely used Syndicate sidearm. Uses 9mm ammo." + desc = "The original Russian version of a widely used Syndicate sidearm. Uses 9mm ammo." icon_state = "aps" w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/pistolm9mm diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index b359d00602..cd11522342 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -151,7 +151,7 @@ pin = /obj/item/firing_pin /obj/item/gun/ballistic/revolver/nagant - name = "nagant revolver" + name = "\improper Nagant revolver" desc = "An old model of revolver that originated in Russia. Able to be suppressed. Uses 7.62x38mmR ammo." icon_state = "nagant" can_suppress = TRUE @@ -163,7 +163,7 @@ // You can spin the chamber to randomize the position of the bullet. /obj/item/gun/ballistic/revolver/russian - name = "\improper russian revolver" + name = "\improper Russian revolver" desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism requiring you to spin the chamber before each trigger pull." mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357 var/spun = FALSE @@ -233,7 +233,7 @@ user.visible_message("[user.name] fires [src] at [user.p_their()] head!", "You fire [src] at your head!", "You hear a gunshot!") /obj/item/gun/ballistic/revolver/russian/soul - name = "cursed russian revolver" + name = "cursed Russian revolver" desc = "To play with this revolver requires wagering your very soul." /obj/item/gun/ballistic/revolver/russian/soul/shoot_self(mob/living/user) diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index e3b638f051..54ca03f872 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -151,7 +151,8 @@ item_state = "arcane_barrage" can_bayonet = FALSE - flags_1 = DROPDEL_1 + item_flags = NEEDS_PERMIT | DROPDEL + flags_1 = NONE mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index c990e491a8..be25a13734 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -22,10 +22,12 @@ var/dead_cell = FALSE //set to true so the gun is given an empty cell /obj/item/gun/energy/emp_act(severity) - cell.use(round(cell.charge / severity)) - chambered = null //we empty the chamber - recharge_newshot() //and try to charge a new shot - update_icon() + . = ..() + if(!(. & EMP_PROTECT_CONTENTS)) + cell.use(round(cell.charge / severity)) + chambered = null //we empty the chamber + recharge_newshot() //and try to charge a new shot + update_icon() /obj/item/gun/energy/get_cell() return cell @@ -128,6 +130,8 @@ return /obj/item/gun/energy/update_icon(force_update) + if(QDELETED(src)) + return ..() if(!automatic_charge_overlays) return @@ -164,8 +168,8 @@ /obj/item/gun/energy/ui_action_click() toggle_gunlight() -/obj/item/gun/energy/suicide_act(mob/user) - if (can_shoot() && can_trigger_gun(user)) +/obj/item/gun/energy/suicide_act(mob/living/user) + if (istype(user) && can_shoot() && can_trigger_gun(user) && user.get_bodypart(BODY_ZONE_HEAD)) user.visible_message("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!") sleep(25) if(user.is_holding(src)) @@ -179,7 +183,7 @@ user.visible_message("[user] panics and starts choking to death!") return(OXYLOSS) else - user.visible_message("[user] is pretending to blow [user.p_their()] brains out with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message("[user] is pretending to melt [user.p_their()] face off with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(src, "gun_dry_fire", 30, 1) return (OXYLOSS) diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index d2ea2ab5f5..99f8166297 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -127,7 +127,9 @@ to_chat(M, "Your [name]'s reactor overloads!") /obj/item/gun/energy/e_gun/nuclear/emp_act(severity) - ..() + . = ..() + if(. & EMP_PROTECT_SELF) + return fail_chance = min(fail_chance + round(15/severity), 100) /obj/item/gun/energy/e_gun/nuclear/update_icon() diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 5275e63c3f..c766d1c94e 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -101,8 +101,8 @@ transform *= 1 + ((damage/7) * 0.2)//20% larger per tile /obj/item/gun/energy/xray - name = "x-ray laser gun" - desc = "A high-power laser gun capable of expelling concentrated x-ray blasts that pass through multiple soft targets and heavier materials." + name = "\improper X-ray laser gun" + desc = "A high-power laser gun capable of expelling concentrated X-ray blasts that pass through multiple soft targets and heavier materials." icon_state = "xray" item_state = null ammo_type = list(/obj/item/ammo_casing/energy/xray) diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 9a6d8ed3af..cf9b697d00 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -21,7 +21,7 @@ . = ..() GLOB.poi_list += src var/turf/T = get_turf(src) - var/msg = "A pulse rifle prize has been created at [ADMIN_COORDJMP(T)]" + var/msg = "A pulse rifle prize has been created at [ADMIN_VERBOSEJMP(T)]" message_admins(msg) log_game(msg) diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index bf3ade0748..9c9d253439 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -96,6 +96,10 @@ charges-- ..() +/obj/item/gun/magic/wand/resurrection/debug //for testing + name = "debug wand of healing" + max_charges = 500 + ///////////////////////////////////// //WAND OF POLYMORPH ///////////////////////////////////// diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index 80c5a0e2e7..e00d5263e0 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -10,7 +10,7 @@ /obj/item/gun/energy/beam_rifle name = "particle acceleration rifle" - desc = "An energy-based anti material marksman rifle that uses highly charged particle beams moving at extreme velocities to decimate whatever is unfortunate enough to be targetted by one. \ + desc = "An energy-based anti material marksman rifle that uses highly charged particle beams moving at extreme velocities to decimate whatever is unfortunate enough to be targeted by one. \ Hold down left click while scoped to aim, when weapon is fully aimed (Tracer goes from red to green as it charges), release to fire. Moving while aiming or \ changing where you're pointing at while aiming will delay the aiming process depending on how much you changed." icon = 'icons/obj/guns/energy.dmi' @@ -195,6 +195,9 @@ return ..() /obj/item/gun/energy/beam_rifle/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return chambered = null recharge_newshot() @@ -510,8 +513,6 @@ return 0.4 if(istype(target, /obj/structure/window)) return 0.5 - if(istype(target, /obj/structure/blob)) //CIT CHANGE - Blobs are getting ggnore'd too hard and people need to GIT GUD - return 0.2 return 1 /obj/item/projectile/beam/beam_rifle/proc/handle_impact(atom/target) diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index 7c7af4e27b..df1f9fdfbd 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -11,8 +11,21 @@ clumsy_check = FALSE randomspread = FALSE + var/hugbox = TRUE + var/max_power = INFINITY + var/reaction_volume_mod = 0 + var/reaction_cycles = 3 //How many times gases react() before calculation. Very finnicky value, do not mess with without good reason. + var/prereaction = TRUE + + var/bombcheck = TRUE + var/debug_power = 0 + var/obj/item/transfer_valve/bomb +/obj/item/gun/blastcannon/debug + debug_power = 80 + bombcheck = FALSE + /obj/item/gun/blastcannon/Initialize() . = ..() if(!pin) @@ -56,38 +69,45 @@ return TRUE return ..() +//returns the third value of a bomb blast /obj/item/gun/blastcannon/proc/calculate_bomb() if(!istype(bomb) || !istype(bomb.tank_one) || !istype(bomb.tank_two)) return 0 - var/datum/gas_mixture/temp = new(60) //directional buff. - temp.merge(bomb.tank_one.air_contents.remove_ratio(1)) - temp.merge(bomb.tank_two.air_contents.remove_ratio(2)) - for(var/i in 1 to 6) + var/datum/gas_mixture/temp = new(max(reaction_volume_mod, 0)) + bomb.merge_gases(temp) + if(prereaction) + temp.react(src) + var/prereaction_pressure = temp.return_pressure() + if(prereaction_pressure < TANK_FRAGMENT_PRESSURE) + return 0 + for(var/i in 1 to reaction_cycles) temp.react(src) var/pressure = temp.return_pressure() qdel(temp) if(pressure < TANK_FRAGMENT_PRESSURE) return 0 - return (pressure / TANK_FRAGMENT_SCALE) + return ((pressure - TANK_FRAGMENT_PRESSURE) / TANK_FRAGMENT_SCALE) /obj/item/gun/blastcannon/afterattack(atom/target, mob/user, flag, params) - if((!bomb) || (!target) || (get_dist(get_turf(target), get_turf(user)) <= 2)) + if((!bomb && bombcheck) || (!target) || (get_dist(get_turf(target), get_turf(user)) <= 2)) return ..() - var/power = calculate_bomb() + var/power = bomb? calculate_bomb() : debug_power + power = min(power, max_power) QDEL_NULL(bomb) update_icon() - var/heavy = power * 0.2 + var/heavy = power * 0.25 var/medium = power * 0.5 var/light = power user.visible_message("[user] opens [bomb] on [user.p_their()] [name] and fires a blast wave at [target]!","You open [bomb] on your [name] and fire a blast wave at [target]!") playsound(user, "explosion", 100, 1) var/turf/starting = get_turf(user) var/turf/targturf = get_turf(target) - var/log_str = "Blast wave fired from [ADMIN_COORDJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_COORDJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]." + var/log_str = "Blast wave fired from [ADMIN_VERBOSEJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_VERBOSEJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]." message_admins(log_str) log_game(log_str) var/obj/item/projectile/blastwave/BW = new(loc, heavy, medium, light) - BW.preparePixelProjectile(target, get_turf(target), user, params, 0) + BW.hugbox = hugbox + BW.preparePixelProjectile(target, get_turf(src), params, 0) BW.fire() /obj/item/projectile/blastwave @@ -99,6 +119,7 @@ var/heavyr = 0 var/mediumr = 0 var/lightr = 0 + var/hugbox = TRUE range = 150 /obj/item/projectile/blastwave/Initialize(mapload, _h, _m, _l) @@ -110,14 +131,25 @@ /obj/item/projectile/blastwave/Range() ..() var/amount_destruction = EXPLODE_NONE + var/wallbreak_chance = 0 if(heavyr) amount_destruction = EXPLODE_DEVASTATE + wallbreak_chance = 99 else if(mediumr) amount_destruction = EXPLODE_HEAVY + wallbreak_chance = 66 else if(lightr) amount_destruction = EXPLODE_LIGHT + wallbreak_chance = 33 if(amount_destruction) - loc.ex_act(amount_destruction) + if(hugbox) + loc.contents_explosion(EXPLODE_HEAVY, loc) + if(istype(loc, /turf/closed/wall)) + var/turf/closed/wall/W = loc + if(prob(wallbreak_chance)) + W.dismantle_wall(TRUE, TRUE) + else + loc.ex_act(amount_destruction) else qdel(src) diff --git a/code/modules/projectiles/guns/misc/grenade_launcher.dm b/code/modules/projectiles/guns/misc/grenade_launcher.dm index e57d77bdf9..e51c3573e3 100644 --- a/code/modules/projectiles/guns/misc/grenade_launcher.dm +++ b/code/modules/projectiles/guns/misc/grenade_launcher.dm @@ -44,8 +44,8 @@ grenades -= F F.forceMove(user.loc) F.throw_at(target, 30, 2, user) - message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") - log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") + message_admins("[ADMIN_LOOKUPFLW(user)] fired a grenade ([F.name]) from a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].") + log_game("[key_name(user)] fired a grenade ([F.name]) with a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].") F.active = 1 F.icon_state = initial(F.icon_state) + "_active" playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index b5cd9b70a7..f132d62b27 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -147,7 +147,7 @@ // DNA-keyed pin. -// When you want to keep your toys for youself. +// When you want to keep your toys for yourself. /obj/item/firing_pin/dna name = "DNA-keyed firing pin" desc = "This is a DNA-locked firing pin which only authorizes one user. Attempt to fire once to DNA-link." diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index f47fbef576..980a79c79c 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -8,7 +8,7 @@ icon_state = "bullet" density = FALSE anchored = TRUE - flags_1 = ABSTRACT_1 + item_flags = ABSTRACT pass_flags = PASSTABLE mouse_opacity = MOUSE_OPACITY_TRANSPARENT hitsound = 'sound/weapons/pierce.ogg' @@ -36,10 +36,6 @@ var/trajectory_ignore_forcemove = FALSE //instructs forceMove to NOT reset our trajectory to the new location! var/speed = 0.8 //Amount of deciseconds it takes for projectile to travel -<<<<<<< ours - var/pixel_speed = 33 //pixels per move - DO NOT FUCK WITH THIS UNLESS YOU ABSOLUTELY KNOW WHAT YOU ARE DOING OR UNEXPECTED THINGS /WILL/ HAPPEN! -======= ->>>>>>> theirs var/Angle = 0 var/original_angle = 0 //Angle at firing var/nondirectional_sprite = FALSE //Set TRUE to prevent projectiles from having their sprites rotated based on firing angle @@ -370,7 +366,7 @@ fired = TRUE if(hitscan) process_hitscan() - if(!isprocessing) + if(!(datum_flags & DF_ISPROCESSING)) START_PROCESSING(SSprojectiles, src) pixel_move(1, FALSE) //move it now! diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 3ba0d092c5..d2245531fe 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -51,7 +51,7 @@ damage = 5 /obj/item/projectile/beam/xray - name = "xray beam" + name = "\improper X-ray beam" icon_state = "xray" damage = 15 irradiate = 30 @@ -90,7 +90,7 @@ /obj/item/projectile/beam/pulse/on_hit(atom/target, blocked = FALSE) . = ..() - if(isturf(target) || istype(target, /obj/structure/)) + if (!QDELETED(target) && (isturf(target) || istype(target, /obj/structure/))) target.ex_act(EXPLODE_HEAVY) /obj/item/projectile/beam/pulse/shotgun diff --git a/code/modules/projectiles/projectile/bullets/_incendiary.dm b/code/modules/projectiles/projectile/bullets/_incendiary.dm index d0cf74421c..b6cca4a31a 100644 --- a/code/modules/projectiles/projectile/bullets/_incendiary.dm +++ b/code/modules/projectiles/projectile/bullets/_incendiary.dm @@ -14,4 +14,4 @@ var/turf/location = get_turf(src) if(location) new /obj/effect/hotspot(location) - location.hotspot_expose(700, 50, 1) + location.hotspot_expose(700, 5, 1) diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index 41a819dd16..457ec78e9b 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -2,10 +2,6 @@ name = "12g shotgun slug" damage = 60 -/obj/item/projectile/bullet/shotgun_slug/tengauge - name = "10g shotgun slug" - damage = 72.5 - /obj/item/projectile/bullet/shotgun_beanbag name = "beanbag slug" damage = 5 diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm index 50532a5977..4044a9629c 100644 --- a/code/modules/projectiles/projectile/bullets/smg.dm +++ b/code/modules/projectiles/projectile/bullets/smg.dm @@ -23,4 +23,4 @@ /obj/item/projectile/bullet/incendiary/c46x30mm name = "4.6x30mm incendiary bullet" damage = 10 - fire_stacks = 1 + fire_stacks = 1 \ No newline at end of file diff --git a/code/modules/projectiles/projectile/energy/net_snare.dm b/code/modules/projectiles/projectile/energy/net_snare.dm index afe9a2e31d..f5d0607341 100644 --- a/code/modules/projectiles/projectile/energy/net_snare.dm +++ b/code/modules/projectiles/projectile/energy/net_snare.dm @@ -1,98 +1,98 @@ -/obj/item/projectile/energy/net - name = "energy netting" - icon_state = "e_netting" - damage = 10 - damage_type = STAMINA - hitsound = 'sound/weapons/taserhit.ogg' - range = 10 - -/obj/item/projectile/energy/net/Initialize() - . = ..() - SpinAnimation() - -/obj/item/projectile/energy/net/on_hit(atom/target, blocked = FALSE) - if(isliving(target)) - var/turf/Tloc = get_turf(target) - if(!locate(/obj/effect/nettingportal) in Tloc) - new /obj/effect/nettingportal(Tloc) - ..() - -/obj/item/projectile/energy/net/on_range() - do_sparks(1, TRUE, src) - ..() - -/obj/effect/nettingportal - name = "DRAGnet teleportation field" - desc = "A field of bluespace energy, locking on to teleport a target." - icon = 'icons/effects/effects.dmi' - icon_state = "dragnetfield" - light_range = 3 - anchored = TRUE - -/obj/effect/nettingportal/Initialize() - . = ..() - var/obj/item/beacon/teletarget = null - 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) - teletarget = com.target - - addtimer(CALLBACK(src, .proc/pop, teletarget), 30) - -/obj/effect/nettingportal/proc/pop(teletarget) - if(teletarget) - for(var/mob/living/L in get_turf(src)) - do_teleport(L, teletarget, 2)//teleport what's in the tile to the beacon - else - for(var/mob/living/L in get_turf(src)) - do_teleport(L, L, 15) //Otherwise it just warps you off somewhere. - - qdel(src) - -/obj/effect/nettingportal/singularity_act() - return - -/obj/effect/nettingportal/singularity_pull() - return - -/obj/item/projectile/energy/trap - name = "energy snare" - icon_state = "e_snare" - nodamage = 1 - knockdown = 20 - hitsound = 'sound/weapons/taserhit.ogg' - range = 4 - -/obj/item/projectile/energy/trap/on_hit(atom/target, blocked = FALSE) - if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - drop a trap - new/obj/item/restraints/legcuffs/beartrap/energy(get_turf(loc)) - else if(iscarbon(target)) - var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy(get_turf(target)) - B.Crossed(target) - ..() - -/obj/item/projectile/energy/trap/on_range() - new /obj/item/restraints/legcuffs/beartrap/energy(loc) - ..() - -/obj/item/projectile/energy/trap/cyborg - name = "Energy Bola" - icon_state = "e_snare" - nodamage = 1 - knockdown = 0 - hitsound = 'sound/weapons/taserhit.ogg' - range = 10 - -/obj/item/projectile/energy/trap/cyborg/on_hit(atom/target, blocked = FALSE) - if(!ismob(target) || blocked >= 100) - do_sparks(1, TRUE, src) - qdel(src) - if(iscarbon(target)) - var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(target)) - B.Crossed(target) - QDEL_IN(src, 10) - ..() - -/obj/item/projectile/energy/trap/cyborg/on_range() - do_sparks(1, TRUE, src) - qdel(src) +/obj/item/projectile/energy/net + name = "energy netting" + icon_state = "e_netting" + damage = 10 + damage_type = STAMINA + hitsound = 'sound/weapons/taserhit.ogg' + range = 10 + +/obj/item/projectile/energy/net/Initialize() + . = ..() + SpinAnimation() + +/obj/item/projectile/energy/net/on_hit(atom/target, blocked = FALSE) + if(isliving(target)) + var/turf/Tloc = get_turf(target) + if(!locate(/obj/effect/nettingportal) in Tloc) + new /obj/effect/nettingportal(Tloc) + ..() + +/obj/item/projectile/energy/net/on_range() + do_sparks(1, TRUE, src) + ..() + +/obj/effect/nettingportal + name = "DRAGnet teleportation field" + desc = "A field of bluespace energy, locking on to teleport a target." + icon = 'icons/effects/effects.dmi' + icon_state = "dragnetfield" + light_range = 3 + anchored = TRUE + +/obj/effect/nettingportal/Initialize() + . = ..() + var/obj/item/beacon/teletarget = null + 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) + teletarget = com.target + + addtimer(CALLBACK(src, .proc/pop, teletarget), 30) + +/obj/effect/nettingportal/proc/pop(teletarget) + if(teletarget) + for(var/mob/living/L in get_turf(src)) + do_teleport(L, teletarget, 2)//teleport what's in the tile to the beacon + else + for(var/mob/living/L in get_turf(src)) + do_teleport(L, L, 15) //Otherwise it just warps you off somewhere. + + qdel(src) + +/obj/effect/nettingportal/singularity_act() + return + +/obj/effect/nettingportal/singularity_pull() + return + +/obj/item/projectile/energy/trap + name = "energy snare" + icon_state = "e_snare" + nodamage = 1 + knockdown = 20 + hitsound = 'sound/weapons/taserhit.ogg' + range = 4 + +/obj/item/projectile/energy/trap/on_hit(atom/target, blocked = FALSE) + if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - drop a trap + new/obj/item/restraints/legcuffs/beartrap/energy(get_turf(loc)) + else if(iscarbon(target)) + var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy(get_turf(target)) + B.Crossed(target) + ..() + +/obj/item/projectile/energy/trap/on_range() + new /obj/item/restraints/legcuffs/beartrap/energy(loc) + ..() + +/obj/item/projectile/energy/trap/cyborg + name = "Energy Bola" + icon_state = "e_snare" + nodamage = 1 + knockdown = 0 + hitsound = 'sound/weapons/taserhit.ogg' + range = 10 + +/obj/item/projectile/energy/trap/cyborg/on_hit(atom/target, blocked = FALSE) + if(!ismob(target) || blocked >= 100) + do_sparks(1, TRUE, src) + qdel(src) + if(iscarbon(target)) + var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(target)) + B.Crossed(target) + QDEL_IN(src, 10) + ..() + +/obj/item/projectile/energy/trap/cyborg/on_range() + do_sparks(1, TRUE, src) + qdel(src) diff --git a/code/modules/projectiles/projectile/energy/stun.dm b/code/modules/projectiles/projectile/energy/stun.dm index 1c24d47a9d..de9016a4c4 100644 --- a/code/modules/projectiles/projectile/energy/stun.dm +++ b/code/modules/projectiles/projectile/energy/stun.dm @@ -18,7 +18,7 @@ do_sparks(1, TRUE, src) else if(iscarbon(target)) var/mob/living/carbon/C = target - C.SendSignal(COMSIG_ADD_MOOD_EVENT, "tased", /datum/mood_event/tased) + SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "tased", /datum/mood_event/tased) if(C.dna && C.dna.check_mutation(HULK)) C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) else if((C.status_flags & CANKNOCKDOWN) && !C.has_trait(TRAIT_STUNIMMUNE)) diff --git a/code/modules/projectiles/projectile/energy/tesla.dm b/code/modules/projectiles/projectile/energy/tesla.dm index 6eebd6afbf..7ca2bcb294 100644 --- a/code/modules/projectiles/projectile/energy/tesla.dm +++ b/code/modules/projectiles/projectile/energy/tesla.dm @@ -3,12 +3,20 @@ icon_state = "tesla_projectile" impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser var/chain + var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE + var/zap_range = 3 + var/power = 10000 /obj/item/projectile/energy/tesla/fire(setAngle) if(firer) chain = firer.Beam(src, icon_state = "lightning[rand(1, 12)]", time = INFINITY, maxdistance = INFINITY) ..() +/obj/item/projectile/energy/tesla/on_hit(atom/target) + . = ..() + tesla_zap(target, zap_range, power, tesla_flags) + qdel(src) + /obj/item/projectile/energy/tesla/Destroy() qdel(chain) return ..() @@ -16,16 +24,6 @@ /obj/item/projectile/energy/tesla/revolver name = "energy orb" -/obj/item/projectile/energy/tesla/revolver/on_hit(atom/target) - . = ..() - if(isliving(target)) - tesla_zap(target, 3, 10000) - qdel(src) - /obj/item/projectile/energy/tesla/cannon name = "tesla orb" - -/obj/item/projectile/energy/tesla/cannon/on_hit(atom/target) - . = ..() - tesla_zap(target, 3, 10000, explosive = FALSE, stun_mobs = FALSE) - qdel(src) + power = 20000 diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index d717cbf680..94d4d49ded 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -231,7 +231,6 @@ if(!new_mob) return new_mob.grant_language(/datum/language/common) - new_mob.logging = M.logging // Some forms can still wear some items for(var/obj/item/W in contents) @@ -360,7 +359,7 @@ var/tesla_power = 20000 var/tesla_range = 15 - var/tesla_boom = FALSE + var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_MOB_STUN | TESLA_OBJ_DAMAGE var/chain var/mob/living/caster @@ -377,7 +376,7 @@ visible_message("[src] fizzles on contact with [target]!") qdel(src) return - tesla_zap(src, tesla_range, tesla_power, tesla_boom) + tesla_zap(src, tesla_range, tesla_power, tesla_flags) qdel(src) /obj/item/projectile/magic/aoe/lightning/Destroy() diff --git a/code/modules/projectiles/projectile/special/temperature.dm b/code/modules/projectiles/projectile/special/temperature.dm index 7fb9c6efb2..44c8df6c00 100644 --- a/code/modules/projectiles/projectile/special/temperature.dm +++ b/code/modules/projectiles/projectile/special/temperature.dm @@ -7,12 +7,11 @@ flag = "energy" var/temperature = 100 -/obj/item/projectile/temp/on_hit(atom/target, blocked = FALSE)//These two could likely check temp protection on the mob - ..() +/obj/item/projectile/temp/on_hit(atom/target, blocked = 0) + . = ..() if(isliving(target)) - var/mob/M = target - M.bodytemperature = temperature - return TRUE + var/mob/living/L = target + L.adjust_bodytemperature(((100-blocked)/100)*(temperature - L.bodytemperature)) // the new body temperature is adjusted by 100-blocked % of the delta between body temperature and the bullet's effect temperature /obj/item/projectile/temp/hot name = "heat beam" diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index afa73fcd4a..2def04cc66 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -303,7 +303,7 @@ need_mob_update += R.addiction_act_stage4(C) if(40 to INFINITY) to_chat(C, "You feel like you've gotten over your need for [R.name].") - C.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction") + SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction") cached_addictions.Remove(R) addiction_tick++ if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates. @@ -406,10 +406,10 @@ for(var/V in possible_reactions) var/datum/chemical_reaction/competitor = V if(selected_reaction.is_cold_recipe) //if there are no recipe conflicts, everything in possible_reactions will have this same value for is_cold_reaction. warranty void if assumption not met. - if(competitor.required_temp < selected_reaction.required_temp) + if(competitor.required_temp <= selected_reaction.required_temp) selected_reaction = competitor else - if(competitor.required_temp > selected_reaction.required_temp) + if(competitor.required_temp >= selected_reaction.required_temp) selected_reaction = competitor var/list/cached_required_reagents = selected_reaction.required_reagents var/list/cached_results = selected_reaction.results @@ -526,19 +526,54 @@ return TRUE return FALSE +//Returns the average specific heat for all reagents currently in this holder. +/datum/reagents/proc/specific_heat() + . = 0 + var/cached_amount = total_volume //cache amount + var/list/cached_reagents = reagent_list //cache reagents + for(var/I in cached_reagents) + var/datum/reagent/R = I + . += R.specific_heat * (R.volume / cached_amount) + +/datum/reagents/proc/adjust_thermal_energy(J, min_temp = 2.7, max_temp = 1000) + var/S = specific_heat() + chem_temp = CLAMP(chem_temp + (J / (S * total_volume)), 2.7, 1000) + /datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = 300, no_react = 0) if(!isnum(amount) || !amount) return FALSE - if(amount < 0) + if(amount <= 0) return FALSE - var/list/cached_reagents = reagent_list - update_total() - if(total_volume + amount > maximum_volume) - amount = (maximum_volume - total_volume) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen. - chem_temp = round(((amount * reagtemp) + (total_volume * chem_temp)) / (total_volume + amount)) //equalize with new chems + var/datum/reagent/D = GLOB.chemical_reagents_list[reagent] + if(!D) + WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])") + return FALSE + update_total() + var/cached_total = total_volume + if(cached_total + amount > maximum_volume) + amount = (maximum_volume - cached_total) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen. + if(amount <= 0) + return FALSE + var/new_total = cached_total + amount + var/cached_temp = chem_temp + var/list/cached_reagents = reagent_list + + //Equalize temperature - Not using specific_heat() because the new chemical isn't in yet. + var/specific_heat = 0 + var/thermal_energy = 0 + for(var/i in cached_reagents) + var/datum/reagent/R = i + specific_heat += R.specific_heat * (R.volume / new_total) + thermal_energy += R.specific_heat * R.volume * cached_temp + specific_heat += D.specific_heat * (amount / new_total) + thermal_energy += D.specific_heat * amount * reagtemp + chem_temp = thermal_energy / (specific_heat * new_total) + //// + + //add the reagent to the existing if it exists for(var/A in cached_reagents) var/datum/reagent/R = A if (R.id == reagent) @@ -551,29 +586,23 @@ handle_reactions() return TRUE - var/datum/reagent/D = GLOB.chemical_reagents_list[reagent] - if(D) + //otherwise make a new one + var/datum/reagent/R = new D.type(data) + cached_reagents += R + R.holder = src + R.volume = amount + if(data) + R.data = data + R.on_new(data) - var/datum/reagent/R = new D.type(data) - cached_reagents += R - R.holder = src - R.volume = amount - if(data) - R.data = data - R.on_new(data) - - update_total() - if(my_atom) - my_atom.on_reagent_change(ADD_REAGENT) - if(!no_react) - handle_reactions() - if(isliving(my_atom)) - R.on_mob_add(my_atom) - return TRUE - - else - WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])") - return FALSE + update_total() + if(my_atom) + my_atom.on_reagent_change(ADD_REAGENT) + if(!no_react) + handle_reactions() + if(isliving(my_atom)) + R.on_mob_add(my_atom) + return TRUE /datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15) for(var/r_id in list_reagents) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 170b3a3a65..80e4453c7d 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -2,7 +2,6 @@ name = "chem dispenser" desc = "Creates and dispenses chemicals." density = TRUE - anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "dispenser" use_power = IDLE_POWER_USE @@ -94,7 +93,7 @@ b_o.pixel_x = -7 return b_o -obj/machinery/chem_dispenser/proc/work_animation() +/obj/machinery/chem_dispenser/proc/work_animation() if(working_state) flick(working_state,src) @@ -294,7 +293,7 @@ obj/machinery/chem_dispenser/proc/work_animation() if(default_deconstruction_crowbar(I)) return - if(istype(I, /obj/item/reagent_containers) && !(I.flags_1 & ABSTRACT_1) && I.is_open_container()) + if(istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container()) var/obj/item/reagent_containers/B = I . = 1 //no afterattack if(beaker) @@ -315,6 +314,9 @@ obj/machinery/chem_dispenser/proc/work_animation() return cell /obj/machinery/chem_dispenser/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return var/list/datum/reagents/R = list() var/total = min(rand(7,15), FLOOR(cell.charge*powerefficiency, 1)) var/datum/reagents/Q = new(total*10) @@ -330,7 +332,6 @@ obj/machinery/chem_dispenser/proc/work_animation() cell.emp_act(severity) work_animation() visible_message("[src] malfunctions, spraying chemicals everywhere!") - ..() /obj/machinery/chem_dispenser/RefreshParts() @@ -403,7 +404,6 @@ obj/machinery/chem_dispenser/proc/work_animation() /obj/machinery/chem_dispenser/drinks name = "soda dispenser" desc = "Contains a large reservoir of soft drinks." - anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "soda_dispenser" has_panel_overlay = FALSE @@ -447,7 +447,6 @@ obj/machinery/chem_dispenser/proc/work_animation() /obj/machinery/chem_dispenser/drinks/beer name = "booze dispenser" desc = "Contains a large reservoir of the good stuff." - anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "booze_dispenser" circuit = /obj/item/circuitboard/machine/chem_dispenser/drinks/beer @@ -468,14 +467,14 @@ obj/machinery/chem_dispenser/proc/work_animation() "creme_de_menthe", "creme_de_cacao", "triple_sec", - "sake", - "fernet" + "sake" ) emagged_reagents = list( "ethanol", "iron", "minttoxin", - "atomicbomb" + "atomicbomb", + "fernet" ) @@ -505,7 +504,7 @@ obj/machinery/chem_dispenser/proc/work_animation() "diethylamine") /obj/machinery/chem_dispenser/fullupgrade //fully upgraded stock parts - + /obj/machinery/chem_dispenser/fullupgrade/Initialize() . = ..() component_parts = list() diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 73413a5e7b..e4c6966cff 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -1,7 +1,6 @@ /obj/machinery/chem_heater name = "chemical heater" density = TRUE - anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "mixer0b" use_power = IDLE_POWER_USE @@ -47,13 +46,8 @@ if(stat & NOPOWER) return if(on) - if(beaker) - if(beaker.reagents.chem_temp > target_temperature) - beaker.reagents.chem_temp += min(-1, (target_temperature - beaker.reagents.chem_temp) * heater_coefficient) - if(beaker.reagents.chem_temp < target_temperature) - beaker.reagents.chem_temp += max(1, (target_temperature - beaker.reagents.chem_temp) * heater_coefficient) - - beaker.reagents.chem_temp = round(beaker.reagents.chem_temp) + if(beaker && beaker.reagents.total_volume) + beaker.reagents.adjust_thermal_energy((target_temperature - beaker.reagents.chem_temp) * heater_coefficient * SPECIFIC_HEAT_DEFAULT * beaker.reagents.total_volume) beaker.reagents.handle_reactions() /obj/machinery/chem_heater/attackby(obj/item/I, mob/user, params) @@ -63,7 +57,7 @@ if(default_deconstruction_crowbar(I)) return - if(istype(I, /obj/item/reagent_containers) && !(I.flags_1 & ABSTRACT_1) && I.is_open_container()) + if(istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container()) . = 1 //no afterattack if(beaker) to_chat(user, "A container is already loaded into [src]!") diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 89b63f4ee5..6327c5ba3a 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -2,7 +2,6 @@ name = "ChemMaster 3000" desc = "Used to separate chemicals and distribute them in a variety of forms." density = TRUE - anchored = TRUE layer = BELOW_OBJ_LAYER icon = 'icons/obj/chemical.dmi' icon_state = "mixer0" @@ -85,7 +84,7 @@ if(default_unfasten_wrench(user, I)) return - if(istype(I, /obj/item/reagent_containers) && !(I.flags_1 & ABSTRACT_1) && I.is_open_container()) + if(istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container()) . = 1 // no afterattack if(panel_open) to_chat(user, "You can't use the [src.name] while its panel is opened!") diff --git a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm index 4c57eb3524..daac5a5d1c 100644 --- a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm +++ b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm @@ -5,44 +5,23 @@ icon_state = "dispenser" amount = 10 resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF - working_state = null - nopower_state = null flags_1 = NODECONSTRUCT_1 + use_power = NO_POWER_USE var/static/list/shortcuts = list( "meth" = "methamphetamine", "tricord" = "tricordrazine" ) - var/mutable_appearance/top_overlay - -/obj/machinery/chem_dispenser/chem_synthesizer/Initialize() - . = ..() - GLOB.poi_list += src - top_overlay = mutable_appearance(icon, "disp_beaker", layer = ABOVE_ALL_MOB_LAYER) - update_icon() - -/obj/machinery/chem_dispenser/chem_synthesizer/update_icon() - cut_overlays() - add_overlay(top_overlay) - -/obj/machinery/chem_dispenser/chem_synthesizer/Destroy() - . = ..() - GLOB.poi_list -= src - QDEL_NULL(top_overlay) - -/obj/machinery/chem_dispenser/chem_synthesizer/display_beaker() - return /obj/machinery/chem_dispenser/chem_synthesizer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "chem_synthesizer", name, 390, 315, master_ui, state) + ui = new(user, src, ui_key, "chem_synthesizer", name, 390, 330, master_ui, state) ui.open() /obj/machinery/chem_dispenser/chem_synthesizer/ui_act(action, params) if(..()) return - update_icon() switch(action) if("ejectBeaker") if(beaker) @@ -71,15 +50,18 @@ return beaker = new /obj/item/reagent_containers/glass/beaker/bluespace(src) visible_message("[src] dispenses a bluespace beaker.") + if("amount") + var/input = input("Units to dispense", "Units") as num|null + if(input) + amount = input + update_icon() /obj/machinery/chem_dispenser/chem_synthesizer/proc/find_reagent(input) . = FALSE if(GLOB.chemical_reagents_list[input]) //prefer IDs! - var/datum/reagent/R = GLOB.chemical_reagents_list[input] - if(R.can_synth_debug) - return input + return input else for(var/X in GLOB.chemical_reagents_list) var/datum/reagent/R = GLOB.chemical_reagents_list[X] - if(R.can_synth_debug && input == replacetext(lowertext(R.name), " ", "")) + if(input == replacetext(lowertext(R.name), " ", "")) return X diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 5a9efe56d1..25385ca2ff 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -5,7 +5,6 @@ name = "PanD.E.M.I.C 2200" desc = "Used to work with viruses." density = TRUE - anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "mixer0" circuit = /obj/item/circuitboard/computer/pandemic @@ -229,7 +228,7 @@ /obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/reagent_containers) && !(I.flags_1 & ABSTRACT_1) && I.is_open_container()) + if(istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container()) . = TRUE //no afterattack if(stat & (NOPOWER|BROKEN)) return diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index a4d9829aa6..3ee971bc9f 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -7,7 +7,6 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "juicer1" layer = BELOW_OBJ_LAYER - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 @@ -82,7 +81,7 @@ if(panel_open) //Can't insert objects when its screwed open return TRUE - if (istype(I, /obj/item/reagent_containers) && !(I.flags_1 & ABSTRACT_1) && I.is_open_container()) + if (istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container()) if (!beaker) if(!user.transferItemToLoc(I, src)) to_chat(user, "[I] is stuck to your hand!") @@ -102,7 +101,7 @@ //Fill machine with a bag! if(istype(I, /obj/item/storage/bag)) var/list/inserted = list() - if(I.SendSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/grown, src, limit - length(holdingitems), null, null, user, inserted)) + if(SEND_SIGNAL(I, COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/grown, src, limit - length(holdingitems), null, null, user, inserted)) for(var/i in inserted) holdingitems[i] = TRUE if(!I.contents.len) diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm index 56cec26dd3..a8b0919906 100644 --- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm +++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/chemical.dmi' icon_state = "smoke0" density = TRUE - anchored = TRUE circuit = /obj/item/circuitboard/machine/smoke_machine var/efficiency = 10 var/on = FALSE @@ -143,9 +142,9 @@ on = !on update_icon() if(on) - message_admins("[key_name_admin(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(src)].") - log_game("[key_name(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [COORD(src)].") - add_logs(usr, src, "has activated [src] which contains [english_list(reagents.reagent_list)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [ADMIN_VERBOSEJMP(src)].") + log_game("[key_name(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].") + add_logs(usr, src, "has activated [src] which contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].") if("goScreen") screen = params["screen"] . = TRUE diff --git a/code/modules/reagents/chemistry/readme.md b/code/modules/reagents/chemistry/readme.md index f070d36067..9a9be7c5a6 100644 --- a/code/modules/reagents/chemistry/readme.md +++ b/code/modules/reagents/chemistry/readme.md @@ -38,7 +38,7 @@ The holder (reagents datum) is the datum that holds a list of all reagents curre If the specified amount is greater than what is available, it will use the amount of the reagent that is available. If no reagent exists, returns null. - metabolize(var/mob/M) + metabolize(var/mob/living/carbon/C) This proc is called by the mobs life proc. It simply calls on_mob_life for all contained reagents. You shouldnt have to use this one directly. @@ -116,7 +116,7 @@ The holder (reagents datum) is the datum that holds a list of all reagents curre # About Reagents: Reagents are all the things you can mix and fille in bottles etc. This can be anything from rejuvs over water to ... iron. Each reagent also has a few procs - i'll explain those below. ``` - reaction_mob(var/mob/M, var/method=TOUCH) + reaction_mob(var/mob/living/L, var/method=TOUCH) This is called by the holder's reation proc. This version is only called when the reagent reacts with a mob. The method var can be either @@ -135,7 +135,7 @@ Reagents are all the things you can mix and fille in bottles etc. This can be an with a turf. You'll want to put stuff like extra slippery floors for lube or something in here. - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/L) This proc is called everytime the mobs life proc executes. This is the place where you put damage for toxins , drowsyness for sleep toxins etc etc. @@ -241,7 +241,7 @@ By default, all atom have a reagents var - but its empty. if you want to use an Checks if something can be injected to. If this returns 1, you can use syringes and droppers to draw from and add to the contents of this object. - + atom/proc/is_drawable() Checks if something can be drawn from. If this returns 1, you can use syringes and droppers @@ -255,4 +255,4 @@ Credit goes to Cogwerks, and all the other goonstation coders for the original i - Any of the Secret Chems - Goon in-joke chems (Eg. Cat Drugs, Hairgrownium) - Liquid Electricity -- Rajajajah \ No newline at end of file +- Rajajajah diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index f61644db0c..6f65c33ea1 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -8,6 +8,7 @@ var/name = "Reagent" var/id = "reagent" var/description = "" + var/specific_heat = SPECIFIC_HEAT_DEFAULT //J/(K*mol) var/taste_description = "metaphorical salt" var/taste_mult = 1 //how this taste compares to others. Higher values means it is more noticable var/glass_name = "glass of ...what?" // use for specialty drinks. @@ -18,10 +19,9 @@ var/reagent_state = LIQUID var/list/data var/current_cycle = 0 - var/volume = 0 + var/volume = 0 //pretend this is moles var/color = "#000000" // rgb: 0, 0, 0 var/can_synth = TRUE // can this reagent be synthesized? (for example: odysseus syringe gun) - var/can_synth_debug = TRUE // can this reagent be synthesized by the debug chem synthesizer? var/metabolization_rate = REAGENTS_METABOLISM //how fast the reagent is metabolized by the mob var/overrides_metab = 0 var/overdose_threshold = 0 @@ -51,17 +51,17 @@ /datum/reagent/proc/reaction_turf(turf/T, volume) return -/datum/reagent/proc/on_mob_life(mob/living/M) +/datum/reagent/proc/on_mob_life(mob/living/carbon/M) current_cycle++ holder.remove_reagent(src.id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. return // Called when this reagent is first added to a mob -/datum/reagent/proc/on_mob_add(mob/M) +/datum/reagent/proc/on_mob_add(mob/living/L) return // Called when this reagent is removed while inside a mob -/datum/reagent/proc/on_mob_delete(mob/M) +/datum/reagent/proc/on_mob_delete(mob/living/L) return /datum/reagent/proc/on_move(mob/M) @@ -88,37 +88,37 @@ /datum/reagent/proc/overdose_start(mob/living/M) to_chat(M, "You feel like you took too much of [name]!") - M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/overdose, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/overdose, name) return /datum/reagent/proc/addiction_act_stage1(mob/living/M) - M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_light, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_light, name) if(prob(30)) to_chat(M, "You feel like having some [name] right about now.") return /datum/reagent/proc/addiction_act_stage2(mob/living/M) - M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_medium, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_medium, name) if(prob(30)) to_chat(M, "You feel like you need [name]. You just can't get enough.") return /datum/reagent/proc/addiction_act_stage3(mob/living/M) - M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_severe, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_severe, name) if(prob(30)) to_chat(M, "You have an intense craving for [name].") return /datum/reagent/proc/addiction_act_stage4(mob/living/M) - M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_critical, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_critical, name) if(prob(30)) to_chat(M, "You're not feeling good at all! You really need some [name].") return -/proc/pretty_string_from_reagent_list(var/list/reagent_list) +/proc/pretty_string_from_reagent_list(list/reagent_list) //Convert reagent list to a printable string for logging etc - var/result = "| " + var/list/rs = list() for (var/datum/reagent/R in reagent_list) - result += "[R.name], [R.volume] | " + rs += "[R.name], [R.volume]" - return result + return rs.Join(" | ") diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 6875aa6fc3..3e3282fb89 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -34,17 +34,16 @@ All effects don't start immediately, but rather get worse over time; the rate is 91-100: Dangerously toxic - swift death */ -/datum/reagent/consumable/ethanol/on_mob_life(mob/living/M) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.drunkenness < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER) - var/booze_power = boozepwr - if(H.has_trait(TRAIT_ALCOHOL_TOLERANCE)) //we're an accomplished drinker - booze_power *= 0.7 - H.drunkenness = max((H.drunkenness + (sqrt(volume) * booze_power * ALCOHOL_RATE)), 0) //Volume, power, and server alcohol rate effect how quickly one gets drunk - var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) - H.applyLiverDamage((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * L.alcohol_tolerance, 0))/150) - return ..() || . +/datum/reagent/consumable/ethanol/on_mob_life(mob/living/carbon/C) + if(C.drunkenness < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER) + var/booze_power = boozepwr + if(C.has_trait(TRAIT_ALCOHOL_TOLERANCE)) //we're an accomplished drinker + booze_power *= 0.7 + C.drunkenness = max((C.drunkenness + (sqrt(volume) * booze_power * ALCOHOL_RATE)), 0) //Volume, power, and server alcohol rate effect how quickly one gets drunk + var/obj/item/organ/liver/L = C.getorganslot(ORGAN_SLOT_LIVER) + if (istype(L)) + C.applyLiverDamage((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * L.alcohol_tolerance, 0))/150) + return ..() /datum/reagent/consumable/ethanol/reaction_obj(obj/O, reac_volume) if(istype(O, /obj/item/paper)) @@ -88,6 +87,15 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of beer" glass_desc = "A freezing pint of beer." +/datum/reagent/consumable/ethanol/beer/light + name = "Light Beer" + id = "light_beer" + description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety has reduced calorie and alcohol content." + boozepwr = 5 //Space Europeans hate it + taste_description = "dish water" + glass_name = "glass of light beer" + glass_desc = "A freezing pint of watery light beer." + /datum/reagent/consumable/ethanol/beer/green name = "Green Beer" id = "greenbeer" @@ -98,7 +106,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of green beer" glass_desc = "A freezing pint of green beer. Festive." -/datum/reagent/consumable/ethanol/beer/green/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/beer/green/on_mob_life(mob/living/carbon/M) if(M.color != color) M.add_atom_colour(color, TEMPORARY_COLOUR_PRIORITY) return ..() @@ -117,7 +125,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "DAMN, THIS THING LOOKS ROBUST!" shot_glass_icon_state = "shotglasscream" -/datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40, FALSE) @@ -152,7 +160,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of Thirteen Loko" glass_desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass." -/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-7) M.AdjustSleeping(-40) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -213,7 +221,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "The glass contain wodka. Xynta." shot_glass_icon_state = "shotglassclear" -/datum/reagent/consumable/ethanol/vodka/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/vodka/on_mob_life(mob/living/carbon/M) M.radiation = max(M.radiation-2,0) return ..() @@ -229,7 +237,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of bilk" glass_desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis." -/datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(10)) M.heal_bodypart_damage(1) . = 1 @@ -246,7 +254,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Three Mile Island Ice Tea" glass_desc = "A glass of this is sure to prevent a meltdown." -/datum/reagent/consumable/ethanol/threemileisland/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/threemileisland/on_mob_life(mob/living/carbon/M) M.set_drugginess(50) return ..() @@ -352,7 +360,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "It's as strong as it smells." shot_glass_icon_state = "shotglassgreen" -/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/carbon/M) if(prob(10) && !M.has_trait(TRAIT_ALCOHOL_TOLERANCE)) M.hallucination += 4 //Reference to the urban myth ..() @@ -437,7 +445,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Cuba Libre" glass_desc = "A classic mix of rum, cola, and lime. A favorite of revolutionaries everywhere!" -/datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/carbon/M) if(M.mind && M.mind.has_antag_datum(/datum/antagonist/rev)) //Cuba Libre, the traditional drink of revolutions! Heals revolutionaries. M.adjustBruteLoss(-1, 0) M.adjustFireLoss(-1, 0) @@ -501,7 +509,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Screwdriver" glass_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer." -/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/M) if(M.mind && M.mind.assigned_role in list("Station Engineer", "Atmospheric Technician", "Chief Engineer")) //Engineers lose radiation poisoning at a massive rate. M.radiation = max(M.radiation - 25, 0) return ..() @@ -528,11 +536,9 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Bloody Mary" glass_desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder." -/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/M) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(C.blood_volume < BLOOD_VOLUME_NORMAL) - C.blood_volume = min(BLOOD_VOLUME_NORMAL, C.blood_volume + 3) //Bloody Mary quickly restores blood loss. +/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/C) + if(C.blood_volume < BLOOD_VOLUME_NORMAL) + C.blood_volume = min(BLOOD_VOLUME_NORMAL, C.blood_volume + 3) //Bloody Mary quickly restores blood loss. ..() /datum/reagent/consumable/ethanol/brave_bull @@ -575,7 +581,7 @@ All effects don't start immediately, but rather get worse over time; the rate is light_holder = new(M) light_holder.set_light(3, 0.7, "#FFCC00") //Tequila Sunrise makes you radiate dim light, like a sunrise! -/datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/carbon/M) if(QDELETED(light_holder)) M.reagents.del_reagent("tequilasunrise") //If we lost our light object somehow, remove the reagent else if(light_holder.loc != M) @@ -598,7 +604,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "Whoah, this thing is on FIRE!" shot_glass_icon_state = "toxinsspecialglass" -/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(var/mob/living/M as mob) +/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(var/mob/living/M) M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 20) //310.15 is the normal bodytemp. return ..() @@ -614,7 +620,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Beepsky Smash" glass_desc = "Heavy, hot and strong. Just like the Iron fist of the LAW." -/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/carbon/M) if(M.has_trait(TRAIT_ALCOHOL_TOLERANCE)) M.Stun(30, 0) //this realistically does nothing to prevent chainstunning but will cause them to recover faster once it's out of their system else @@ -652,7 +658,7 @@ All effects don't start immediately, but rather get worse over time; the rate is boozepwr = 5 //We've had worse in the mines dorf_mode = TRUE -/datum/reagent/consumable/ethanol/manly_dorf/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/manly_dorf/on_mob_life(mob/living/carbon/M) if(dorf_mode) M.adjustBruteLoss(-2) M.adjustFireLoss(-2) @@ -754,7 +760,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "A scientist's drink of choice, for thinking how to blow up the station." -/datum/reagent/consumable/ethanol/manhattan_proj/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/manhattan_proj/on_mob_life(mob/living/carbon/M) M.set_drugginess(30) return ..() @@ -780,7 +786,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Anti-freeze" glass_desc = "The ultimate refreshment." -/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 20) //310.15 is the normal bodytemp. return ..() @@ -795,7 +801,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Barefoot" glass_desc = "Barefoot and pregnant." -/datum/reagent/consumable/ethanol/barefoot/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/barefoot/on_mob_life(mob/living/carbon/M) if(ishuman(M)) //Barefoot causes the imbiber to quickly regenerate brute trauma if they're not wearing shoes. var/mob/living/carbon/human/H = M if(!H.shoes) @@ -893,7 +899,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Sbiten" glass_desc = "A spicy mix of Vodka and Spice. Very hot." -/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(50 * TEMPERATURE_DAMAGE_COEFFICIENT, 0 ,BODYTEMP_HEAT_DAMAGE_LIMIT) //310.15 is the normal bodytemp. return ..() @@ -931,7 +937,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "iced beer" glass_desc = "A beer so frosty, the air around it freezes." -/datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) //310.15 is the normal bodytemp. return ..() @@ -1013,7 +1019,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Changeling Sting" glass_desc = "A stingy drink." -/datum/reagent/consumable/ethanol/changelingsting/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/changelingsting/on_mob_life(mob/living/carbon/M) if(M.mind) //Changeling Sting assists in the recharging of changeling chemicals. var/datum/antagonist/changeling/changeling = M.mind.has_antag_datum(/datum/antagonist/changeling) if(changeling) @@ -1043,7 +1049,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Syndicate Bomb" glass_desc = "A syndicate bomb." -/datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/carbon/M) if(prob(5)) playsound(get_turf(M), 'sound/effects/explosionfar.ogg', 100, 1) return ..() @@ -1083,8 +1089,8 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Banana Honk" glass_desc = "A drink from Clown Heaven." -/datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/M) - if((ishuman(M) && M.job in list("Clown") ) || ismonkey(M)) +/datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/M) + if((ishuman(M) && M.job == "Clown") || ismonkey(M)) M.heal_bodypart_damage(1,1) . = 1 return ..() || . @@ -1101,8 +1107,8 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Silencer" glass_desc = "A drink from Mime Heaven." -/datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/M) - if(ishuman(M) && M.job in list("Mime")) +/datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/carbon/M) + if(ishuman(M) && M.job == "Mime") M.heal_bodypart_damage(1,1) . = 1 return ..() || . @@ -1156,7 +1162,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "Induces magnetism in the imbiber. Started as a barroom prank but evolved to become popular with miners and scrappers. Metallic aftertaste." -/datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/carbon/M) for(var/obj/item/stack/ore/O in orange(3, M)) step_towards(O, get_turf(M)) return ..() @@ -1174,7 +1180,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Hearty Punch" glass_desc = "Aromatic beverage served piping hot. According to folk tales it can almost wake the dead." -/datum/reagent/consumable/ethanol/hearty_punch/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/hearty_punch/on_mob_life(mob/living/carbon/M) if(M.health <= 0) M.adjustBruteLoss(-3, 0) M.adjustFireLoss(-3, 0) @@ -1208,7 +1214,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Atomic Bomb" glass_desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing." -/datum/reagent/consumable/ethanol/atomicbomb/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/atomicbomb/on_mob_life(mob/living/carbon/M) M.set_drugginess(50) if(!M.has_trait(TRAIT_ALCOHOL_TOLERANCE)) M.confused = max(M.confused+2,0) @@ -1237,7 +1243,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Pan-Galactic Gargle Blaster" glass_desc = "Like having your brain smashed out by a slice of lemon wrapped around a large gold brick." -/datum/reagent/consumable/ethanol/gargle_blaster/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/gargle_blaster/on_mob_life(mob/living/carbon/M) M.dizziness +=1.5 switch(current_cycle) if(15 to 45) @@ -1296,7 +1302,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Hippie's Delight" glass_desc = "A drink enjoyed by people during the 1960's." -/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/M) if (!M.slurring) M.slurring = 1 switch(current_cycle) @@ -1352,7 +1358,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Nar'Sour" glass_desc = "A new hit cocktail inspired by THE ARM Breweries will have you shouting Fuu ma'jin in no time!" -/datum/reagent/consumable/ethanol/narsour/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/narsour/on_mob_life(mob/living/carbon/M) M.cultslurring = min(M.cultslurring + 3, 3) M.stuttering = min(M.stuttering + 3, 3) ..() @@ -1401,7 +1407,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Quadruple Sec" glass_desc = "An intimidating and lawful beverage dares you to violate the law and make its day. Still can't drink it on duty, though." -/datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/M) if(M.mind && M.mind.assigned_role in list("Security Officer", "Detective", "Head of Security", "Warden", "Lawyer")) //Securidrink in line with the screwderiver for engineers or nothing for mimes. M.heal_bodypart_damage(1, 1) M.adjustBruteLoss(-2,0) @@ -1419,7 +1425,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Quintuple Sec" glass_desc = "Now you are become law, destroyer of clowns." -/datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/M) if(M.mind && M.mind.assigned_role in list("Security Officer", "Detective", "Head of Security", "Warden", "Lawyer")) //Securidrink in line with the screwderiver for engineers or nothing for mimes but STRONG.. M.heal_bodypart_damage(2,2,2) M.adjustBruteLoss(-5,0) @@ -1501,7 +1507,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "Squirt cider will toughen you right up. Too bad about the musty aftertaste." shot_glass_icon_state = "shotglassgreen" -/datum/reagent/consumable/ethanol/squirt_cider/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/squirt_cider/on_mob_life(mob/living/carbon/M) M.satiety += 5 //for context, vitamins give 30 satiety per tick ..() . = TRUE @@ -1529,7 +1535,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Sugar Rush" glass_desc = "If you can't mix a Sugar Rush, you can't tend bar." -/datum/reagent/consumable/ethanol/sugar_rush/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/sugar_rush/on_mob_life(mob/living/carbon/M) M.satiety -= 10 //junky as hell! a whole glass will keep you from being able to eat junk food ..() . = TRUE @@ -1559,38 +1565,87 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "cup of sake" glass_desc = "A traditional cup of sake." +/datum/reagent/consumable/ethanol/peppermint_patty + name = "Peppermint Patty" + id = "peppermint_patty" + description = "This lightly alcoholic drink combines the benefits of menthol and cocoa." + color = "#45ca7a" + taste_description = "mint and chocolate" + boozepwr = 25 + glass_icon_state = "peppermint_patty" + glass_name = "Peppermint Patty" + glass_desc = "A boozy minty hot cocoa that warms your belly on a cold night." + +/datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/M) + M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + ..() + /datum/reagent/consumable/ethanol/alexander name = "Alexander" id = "alexander" - description = "A creamy, indulgent delight that is stronger than it seems." + description = "Named after a Greek hero, this mix is said to embolden a user's shield as if they were in a phalanx." color = "#F5E9D3" boozepwr = 80 taste_description = "bitter, creamy cacao" glass_icon_state = "alexander" glass_name = "Alexander" glass_desc = "A creamy, indulgent delight that is stronger than it seems." + var/obj/item/shield/mighty_shield + +/datum/reagent/consumable/ethanol/alexander/on_mob_add(mob/living/L) + if(ishuman(L)) + var/mob/living/carbon/human/thehuman = L + for(var/obj/item/shield/theshield in thehuman.contents) + mighty_shield = theshield + mighty_shield.block_chance += 10 + to_chat(thehuman, "[theshield] appears polished, although you don't recall polishing it.") + return TRUE + +/datum/reagent/consumable/ethanol/alexander/on_mob_life(mob/living/L) + ..() + if(mighty_shield && !(mighty_shield in L.contents)) //If you had a shield and lose it, you lose the reagent as well. Otherwise this is just a normal drink. + L.reagents.del_reagent("alexander") + +/datum/reagent/consumable/ethanol/alexander/on_mob_delete(mob/living/L) + if(mighty_shield) + mighty_shield.block_chance -= 10 + to_chat(L,"You notice [mighty_shield] looks worn again. Weird.") + ..() /datum/reagent/consumable/ethanol/sidecar name = "Sidecar" id = "sidecar" - description = "The one ride you’ll gladly give up the wheel for." + description = "The one ride you'll gladly give up the wheel for." color = "#FFC55B" boozepwr = 80 taste_description = "delicious freedom" glass_icon_state = "sidecar" glass_name = "Sidecar" - glass_desc = "The one ride you’ll gladly give up the wheel for." + glass_desc = "The one ride you'll gladly give up the wheel for." /datum/reagent/consumable/ethanol/between_the_sheets name = "Between the Sheets" id = "between_the_sheets" - description = "A provocatively named classic." + description = "A provocatively named classic. Funny enough, doctors recommend drinking it before taking a nap." color = "#F4C35A" boozepwr = 80 taste_description = "seduction" glass_icon_state = "between_the_sheets" glass_name = "Between the Sheets" - glass_desc = "A provocatively named classic." + glass_desc = "The only drink that comes with a label reminding you of Nanotrasen's zero-tolerance promiscuity policy." + +/datum/reagent/consumable/ethanol/between_the_sheets/on_mob_life(mob/living/L) + ..() + if(L.IsSleeping()) + if(L.bruteloss && L.fireloss) //If you are damaged by both types, slightly increased healing but it only heals one. The more the merrier wink wink. + if(prob(50)) + L.adjustBruteLoss(-0.25) + else + L.adjustFireLoss(-0.25) + else if(L.bruteloss && !L.fireloss) //If you have only one, it still heals but not as well. + L.adjustBruteLoss(-0.2) + else if(!L.bruteloss && L.fireloss) + L.adjustFireLoss(-0.2) /datum/reagent/consumable/ethanol/kamikaze name = "Kamikaze" @@ -1613,7 +1668,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "mojito" glass_name = "Mojito" glass_desc = "A drink that looks as refreshing as it tastes." - + /datum/reagent/consumable/ethanol/fernet name = "Fernet" id = "fernet" @@ -1624,8 +1679,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of fernet" glass_desc = "A glass of pure Fernet. Only an absolute madman would drink this alone." //Hi Kevum -/datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/M) - +/datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/carbon/M) if(M.nutrition <= NUTRITION_LEVEL_STARVING) M.adjustToxLoss(1*REM, 0) M.nutrition = max(M.nutrition - 5, 0) @@ -1643,8 +1697,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of fernet cola" glass_desc = "A sawed-off cola bottle filled with Fernet Cola. Nothing better after eating like a lardass." -/datum/reagent/consumable/ethanol/fernetcola/on_mob_life(mob/living/M) - +/datum/reagent/consumable/ethanol/fernetcola/on_mob_life(mob/living/carbon/M) if(M.nutrition <= NUTRITION_LEVEL_STARVING) M.adjustToxLoss(0.5*REM, 0) M.nutrition = max(M.nutrition - 3, 0) @@ -1662,9 +1715,8 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "fanciulli" glass_name = "glass of fanciulli" glass_desc = "A glass of Fanciulli. It's just Manhattan with Fernet." - -/datum/reagent/consumable/ethanol/fanciulli/on_mob_life(mob/living/M) - + +/datum/reagent/consumable/ethanol/fanciulli/on_mob_life(mob/living/carbon/M) M.nutrition = max(M.nutrition - 5, 0) M.overeatduration = 0 return ..() @@ -1688,12 +1740,8 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "A glass of Branca Menta, perfect for those lazy and hot sunday summer afternoons." //Get lazy literally by drinking this -/datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/M) +/datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) - if(M.nutrition <= NUTRITION_LEVEL_STARVING) - M.adjustToxLoss(1*REM, 0) - M.nutrition = max(M.nutrition - 5, 0) - M.overeatduration = 0 return ..() /datum/reagent/consumable/ethanol/branca_menta/on_mob_add(mob/living/M) diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 0d5c8218ea..8ee9449468 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -199,11 +199,9 @@ M.reagents.add_reagent("spore", 0.2*reac_volume) M.apply_damage(0.7*reac_volume, TOX) -/datum/reagent/blob/regenerative_materia/on_mob_life(mob/living/M) - M.adjustToxLoss(1*REM) - if(iscarbon(M)) - var/mob/living/carbon/N = M - N.hal_screwyhud = SCREWYHUD_HEALTHY //fully healed, honest +/datum/reagent/blob/regenerative_materia/on_mob_life(mob/living/carbon/C) + C.adjustToxLoss(1*REM) + C.hal_screwyhud = SCREWYHUD_HEALTHY //fully healed, honest ..() /datum/reagent/blob/regenerative_materia/on_mob_delete(mob/living/M) @@ -346,7 +344,7 @@ M.reagents.add_reagent("cryogenic_poison", 0.3*reac_volume) M.apply_damage(0.2*reac_volume, BRUTE) -/datum/reagent/blob/cryogenic_poison/on_mob_life(mob/living/M) +/datum/reagent/blob/cryogenic_poison/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(0.3*REM, 0) M.adjustFireLoss(0.3*REM, 0) M.adjustToxLoss(0.3*REM, 0) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 67b3d3c280..4d2dba4659 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -14,7 +14,7 @@ glass_name = "glass of orange juice" glass_desc = "Vitamins! Yay!" -/datum/reagent/consumable/orangejuice/on_mob_life(mob/living/M) +/datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/M) if(M.getOxyLoss() && prob(30)) M.adjustOxyLoss(-1, 0) . = 1 @@ -30,7 +30,7 @@ glass_name = "glass of tomato juice" glass_desc = "Are you sure this is tomato juice?" -/datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/M) +/datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/carbon/M) if(M.getFireLoss() && prob(20)) M.heal_bodypart_damage(0,1, 0) . = 1 @@ -46,7 +46,7 @@ glass_name = "glass of lime juice" glass_desc = "A glass of sweet-sour lime juice." -/datum/reagent/consumable/limejuice/on_mob_life(mob/living/M) +/datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/M) if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1*REM, 0) . = 1 @@ -62,7 +62,7 @@ glass_name = "glass of carrot juice" glass_desc = "It's just like a carrot but without crunching." -/datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/M) +/datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/carbon/M) M.adjust_blurriness(-1) M.adjust_blindness(-1) switch(current_cycle) @@ -101,7 +101,7 @@ glass_name = "glass of berry juice" glass_desc = "Berry juice. Or maybe it's poison. Who cares?" -/datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/M) +/datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(1, 0) . = 1 ..() @@ -136,8 +136,8 @@ glass_name = "glass of banana juice" glass_desc = "The raw essence of a banana. HONK." -/datum/reagent/consumable/banana/on_mob_life(mob/living/M) - if((ishuman(M) && M.job in list("Clown") ) || ismonkey(M)) +/datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/M) + if((ishuman(M) && M.job == "Clown") || ismonkey(M)) M.heal_bodypart_damage(1,1, 0) . = 1 ..() @@ -152,8 +152,8 @@ glass_desc = "Absolutely nothing." shot_glass_icon_state = "shotglass" -/datum/reagent/consumable/nothing/on_mob_life(mob/living/M) - if(ishuman(M) && M.job in list("Mime")) +/datum/reagent/consumable/nothing/on_mob_life(mob/living/carbon/M) + if(ishuman(M) && M.job == "Mime") M.heal_bodypart_damage(1,1, 0) . = 1 ..() @@ -167,8 +167,6 @@ taste_description = "laughter" /datum/reagent/consumable/laughter/on_mob_life(mob/living/carbon/M) - if(!iscarbon(M)) - return M.emote("laugh") ..() @@ -181,8 +179,6 @@ taste_description = "laughter" /datum/reagent/consumable/superlaughter/on_mob_life(mob/living/carbon/M) - if(!iscarbon(M)) - return if(prob(30)) M.visible_message("[M] bursts out into a fit of uncontrollable laughter!", "You burst out in a fit of uncontrollable laughter!") M.Stun(5) @@ -216,7 +212,7 @@ glass_name = "glass of milk" glass_desc = "White and nutritious goodness!" -/datum/reagent/consumable/milk/on_mob_life(mob/living/M) +/datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(20)) M.heal_bodypart_damage(1,0, 0) . = 1 @@ -238,7 +234,7 @@ glass_name = "glass of soy milk" glass_desc = "White and nutritious soy goodness!" -/datum/reagent/consumable/soymilk/on_mob_life(mob/living/M) +/datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(20)) M.heal_bodypart_damage(1,0, 0) . = 1 @@ -254,7 +250,7 @@ glass_name = "glass of cream" glass_desc = "Ewwww..." -/datum/reagent/consumable/cream/on_mob_life(mob/living/M) +/datum/reagent/consumable/cream/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(20)) M.heal_bodypart_damage(1,0, 0) . = 1 @@ -276,7 +272,7 @@ M.Jitter(5) ..() -/datum/reagent/consumable/coffee/on_mob_life(mob/living/M) +/datum/reagent/consumable/coffee/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40, FALSE) @@ -298,7 +294,7 @@ glass_name = "glass of tea" glass_desc = "Drinking it from here would not seem right." -/datum/reagent/consumable/tea/on_mob_life(mob/living/M) +/datum/reagent/consumable/tea/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-2) M.drowsyness = max(0,M.drowsyness-1) M.jitteriness = max(0,M.jitteriness-3) @@ -320,7 +316,7 @@ glass_name = "Arnold Palmer" glass_desc = "You feel like taking a few golf swings after a few swigs of this." -/datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/M) +/datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/carbon/M) if(prob(5)) to_chat(M, "[pick("You remember to square your shoulders.","You remember to keep your head down.","You can't decide between squaring your shoulders and keeping your head down.","You remember to relax.","You think about how someday you'll get two strokes off your golf game.")]") ..() @@ -337,7 +333,7 @@ glass_name = "iced coffee" glass_desc = "A drink to perk you up and refresh you!" -/datum/reagent/consumable/icecoffee/on_mob_life(mob/living/M) +/datum/reagent/consumable/icecoffee/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40, FALSE) @@ -357,7 +353,7 @@ glass_name = "iced tea" glass_desc = "All natural, antioxidant-rich flavour sensation." -/datum/reagent/consumable/icetea/on_mob_life(mob/living/M) +/datum/reagent/consumable/icetea/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-2) M.drowsyness = max(0,M.drowsyness-1) M.AdjustSleeping(-40, FALSE) @@ -377,7 +373,7 @@ glass_name = "glass of Space Cola" glass_desc = "A glass of refreshing Space Cola." -/datum/reagent/consumable/space_cola/on_mob_life(mob/living/M) +/datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-5) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) ..() @@ -392,19 +388,15 @@ glass_name = "glass of Nuka Cola" glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland." -/datum/reagent/consumable/nuka_cola/on_mob_add(mob/M) +/datum/reagent/consumable/nuka_cola/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_GOTTAGOFAST, id) + L.add_trait(TRAIT_GOTTAGOFAST, id) -/datum/reagent/consumable/nuka_cola/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_GOTTAGOFAST, id) +/datum/reagent/consumable/nuka_cola/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_GOTTAGOFAST, id) ..() -/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/M) +/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M) M.Jitter(20) M.set_drugginess(30) M.dizziness +=1.5 @@ -424,7 +416,7 @@ glass_name = "glass of Space Mountain Wind" glass_desc = "Space Mountain Wind. As you know, there are no mountains in space, only wind." -/datum/reagent/consumable/spacemountainwind/on_mob_life(mob/living/M) +/datum/reagent/consumable/spacemountainwind/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-7) M.AdjustSleeping(-20, FALSE) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -442,7 +434,7 @@ glass_name = "glass of Dr. Gibb" glass_desc = "Dr. Gibb. Not as dangerous as the glass_name might imply." -/datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/M) +/datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-6) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) ..() @@ -458,7 +450,7 @@ glass_desc = "Space-up. It helps you keep your cool." -/datum/reagent/consumable/space_up/on_mob_life(mob/living/M) +/datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) ..() @@ -473,7 +465,7 @@ glass_desc = "You're pretty certain a real fruit has never actually touched this." -/datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/M) +/datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) ..() @@ -487,7 +479,7 @@ glass_name = "glass of Pwr Game" glass_desc = "Goes well with a Vlad's salad." -/datum/reagent/consumable/pwr_game/on_mob_life(mob/living/M) +/datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) ..() @@ -501,7 +493,7 @@ glass_name = "glass of Shambler's juice" glass_desc = "Mmm mm, shambly." -/datum/reagent/consumable/shamblers/on_mob_life(mob/living/M) +/datum/reagent/consumable/shamblers/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) ..() /datum/reagent/consumable/sodawater @@ -514,7 +506,7 @@ glass_name = "glass of soda water" glass_desc = "Soda water. Why not make a scotch and soda?" -/datum/reagent/consumable/sodawater/on_mob_life(mob/living/M) +/datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -530,7 +522,7 @@ glass_name = "glass of tonic water" glass_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." -/datum/reagent/consumable/tonic/on_mob_life(mob/living/M) +/datum/reagent/consumable/tonic/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40, FALSE) @@ -549,7 +541,7 @@ glass_name = "glass of ice" glass_desc = "Generally, you're supposed to put something else in there too..." -/datum/reagent/consumable/ice/on_mob_life(mob/living/M) +/datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) ..() @@ -563,7 +555,7 @@ glass_name = "soy latte" glass_desc = "A nice and refreshing beverage while you're reading." -/datum/reagent/consumable/soy_latte/on_mob_life(mob/living/M) +/datum/reagent/consumable/soy_latte/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.SetSleeping(0, FALSE) @@ -584,7 +576,7 @@ glass_name = "cafe latte" glass_desc = "A nice, strong and refreshing beverage while you're reading." -/datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/M) +/datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.SetSleeping(0, FALSE) @@ -605,7 +597,7 @@ glass_name = "Doctor's Delight" glass_desc = "The space doctor's favorite. Guaranteed to restore bodily injury; side effects include cravings and hunger." -/datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/M) +/datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(-0.5, 0) M.adjustFireLoss(-0.5, 0) M.adjustToxLoss(-0.5, 0) @@ -721,11 +713,11 @@ description = "Milk for cool kids." color = "#7D4E29" taste_description = "chocolate milk" - + /datum/reagent/consumable/menthol name = "Menthol" id = "menthol" - description = "Tastes naturally minty, and imparts a very mild numbing sensation." + description = "Alleviates coughing symptoms one might have." color = "#80AF9C" taste_description = "mint" glass_icon_state = "glass_green" diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 377ddc47fd..33511c8905 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -7,7 +7,7 @@ /datum/reagent/drug/on_mob_delete(mob/living/M) if(trippy) - M.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "[id]_high") + SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[id]_high") /datum/reagent/drug/space_drugs name = "Space drugs" @@ -16,7 +16,7 @@ color = "#60A584" // rgb: 96, 165, 132 overdose_threshold = 30 -/datum/reagent/drug/space_drugs/on_mob_life(mob/living/M) +/datum/reagent/drug/space_drugs/on_mob_life(mob/living/carbon/M) M.set_drugginess(15) if(isturf(M.loc) && !isspaceturf(M.loc)) if(M.canmove) @@ -28,7 +28,7 @@ /datum/reagent/drug/space_drugs/overdose_start(mob/living/M) to_chat(M, "You start tripping hard!") - M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/overdose, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/overdose, name) /datum/reagent/drug/space_drugs/overdose_process(mob/living/M) if(M.hallucination < volume && prob(20)) @@ -45,11 +45,11 @@ taste_description = "smoke" trippy = FALSE -/datum/reagent/drug/nicotine/on_mob_life(mob/living/M) +/datum/reagent/drug/nicotine/on_mob_life(mob/living/carbon/M) if(prob(1)) var/smoke_message = pick("You feel relaxed.", "You feel calmed.","You feel alert.","You feel rugged.") to_chat(M, "[smoke_message]") - M.SendSignal(COMSIG_ADD_MOOD_EVENT, "smoked", /datum/mood_event/drugs/smoked, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smoked", /datum/mood_event/drugs/smoked, name) M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.AdjustUnconscious(-20, 0) @@ -66,7 +66,7 @@ overdose_threshold = 20 addiction_threshold = 10 -/datum/reagent/drug/crank/on_mob_life(mob/living/M) +/datum/reagent/drug/crank/on_mob_life(mob/living/carbon/M) if(prob(5)) var/high_message = pick("You feel jittery.", "You feel like you gotta go fast.", "You feel like you need to step it up.") to_chat(M, "[high_message]") @@ -114,7 +114,7 @@ addiction_threshold = 15 -/datum/reagent/drug/krokodil/on_mob_life(mob/living/M) +/datum/reagent/drug/krokodil/on_mob_life(mob/living/carbon/M) var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.") if(prob(5)) to_chat(M, "[high_message]") @@ -165,19 +165,15 @@ addiction_threshold = 10 metabolization_rate = 0.75 * REAGENTS_METABOLISM -/datum/reagent/drug/methamphetamine/on_mob_add(mob/M) +/datum/reagent/drug/methamphetamine/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_GOTTAGOREALLYFAST, id) + L.add_trait(TRAIT_GOTTAGOREALLYFAST, id) -/datum/reagent/drug/methamphetamine/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_GOTTAGOREALLYFAST, id) +/datum/reagent/drug/methamphetamine/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_GOTTAGOREALLYFAST, id) ..() -/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/M) +/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M) var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.") if(prob(5)) to_chat(M, "[high_message]") @@ -252,27 +248,23 @@ taste_description = "salt" // because they're bathsalts? var/datum/brain_trauma/special/psychotic_brawling/bath_salts/rage -/datum/reagent/drug/bath_salts/on_mob_add(mob/M) +/datum/reagent/drug/bath_salts/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_STUNIMMUNE, id) - L.add_trait(TRAIT_SLEEPIMMUNE, id) - if(iscarbon(L)) - var/mob/living/carbon/C = L - rage = new() - C.gain_trauma(rage, TRAUMA_RESILIENCE_ABSOLUTE) + L.add_trait(TRAIT_STUNIMMUNE, id) + L.add_trait(TRAIT_SLEEPIMMUNE, id) + if(iscarbon(L)) + var/mob/living/carbon/C = L + rage = new() + C.gain_trauma(rage, TRAUMA_RESILIENCE_ABSOLUTE) -/datum/reagent/drug/bath_salts/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_STUNIMMUNE, id) - L.remove_trait(TRAIT_SLEEPIMMUNE, id) - if(rage) - QDEL_NULL(rage) +/datum/reagent/drug/bath_salts/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_STUNIMMUNE, id) + L.remove_trait(TRAIT_SLEEPIMMUNE, id) + if(rage) + QDEL_NULL(rage) ..() -/datum/reagent/drug/bath_salts/on_mob_life(mob/living/M) +/datum/reagent/drug/bath_salts/on_mob_life(mob/living/carbon/M) var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.") if(prob(5)) to_chat(M, "[high_message]") @@ -352,7 +344,7 @@ reagent_state = LIQUID color = "#78FFF0" -/datum/reagent/drug/aranesp/on_mob_life(mob/living/M) +/datum/reagent/drug/aranesp/on_mob_life(mob/living/carbon/M) var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.") if(prob(5)) to_chat(M, "[high_message]") diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index b98f3c0760..459cbefaa2 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -14,7 +14,7 @@ taste_mult = 4 var/nutriment_factor = 1 * REAGENTS_METABOLISM -/datum/reagent/consumable/on_mob_life(mob/living/M) +/datum/reagent/consumable/on_mob_life(mob/living/carbon/M) current_cycle++ M.nutrition += nutriment_factor holder.remove_reagent(src.id, metabolization_rate) @@ -30,7 +30,7 @@ var/brute_heal = 1 var/burn_heal = 0 -/datum/reagent/consumable/nutriment/on_mob_life(mob/living/M) +/datum/reagent/consumable/nutriment/on_mob_life(mob/living/carbon/M) if(prob(50)) M.heal_bodypart_damage(brute_heal,burn_heal, 0) . = 1 @@ -78,7 +78,7 @@ brute_heal = 1 burn_heal = 1 -/datum/reagent/consumable/nutriment/vitamin/on_mob_life(mob/living/M) +/datum/reagent/consumable/nutriment/vitamin/on_mob_life(mob/living/carbon/M) if(M.satiety < 600) M.satiety += 30 . = ..() @@ -183,7 +183,7 @@ taste_description = "hot peppers" taste_mult = 1.5 -/datum/reagent/consumable/capsaicin/on_mob_life(mob/living/M) +/datum/reagent/consumable/capsaicin/on_mob_life(mob/living/carbon/M) var/heating = 0 switch(current_cycle) if(1 to 15) @@ -214,7 +214,7 @@ color = "#8BA6E9" // rgb: 139, 166, 233 taste_description = "mint" -/datum/reagent/consumable/frostoil/on_mob_life(mob/living/M) +/datum/reagent/consumable/frostoil/on_mob_life(mob/living/carbon/M) var/cooling = 0 switch(current_cycle) if(1 to 15) @@ -283,10 +283,10 @@ if(ishuman(victim)) var/mob/living/carbon/human/H = victim if( H.head ) - if ( H.head.flags_cover & MASKCOVERSEYES ) + if ( H.head.flags_cover & HEADCOVERSEYES ) eyes_covered = 1 safe_thing = H.head - if ( H.head.flags_cover & MASKCOVERSMOUTH ) + if ( H.head.flags_cover & HEADCOVERSMOUTH ) mouth_covered = 1 safe_thing = H.head if(H.glasses) @@ -320,7 +320,7 @@ victim.Knockdown(100) victim.update_damage_hud() -/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/M) +/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/carbon/M) if(prob(5)) M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]") ..() @@ -374,7 +374,7 @@ glass_name = "glass of chocolate" glass_desc = "Tasty." -/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/M) +/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) ..() @@ -386,7 +386,7 @@ metabolization_rate = 0.2 * REAGENTS_METABOLISM taste_description = "mushroom" -/datum/reagent/mushroomhallucinogen/on_mob_life(mob/living/M) +/datum/reagent/mushroomhallucinogen/on_mob_life(mob/living/carbon/M) if(!M.slurring) M.slurring = 1 switch(current_cycle) @@ -416,7 +416,7 @@ color = "#FF00FF" // rgb: 255, 0, 255 taste_description = "childhood whimsy" -/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/M) +/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/carbon/M) if(ishuman(M) && M.job in list("Security Officer", "Head of Security", "Detective", "Warden")) M.heal_bodypart_damage(1,1, 0) . = 1 @@ -465,7 +465,7 @@ color = "#302000" // rgb: 48, 32, 0 taste_description = "wet and cheap noodles" -/datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/M) +/datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) ..() @@ -477,7 +477,7 @@ color = "#302000" // rgb: 48, 32, 0 taste_description = "wet and cheap noodles on fire" -/datum/reagent/consumable/hell_ramen/on_mob_life(mob/living/M) +/datum/reagent/consumable/hell_ramen/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT) ..() @@ -549,20 +549,20 @@ metabolization_rate = 3 * REAGENTS_METABOLISM taste_description = "sweet slime" -/datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/M) +/datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/carbon/M) holder.add_reagent("sugar", 3) ..() /datum/reagent/consumable/honey name = "honey" id = "honey" - description = "Sweet sweet honey, decays into sugar and has natural healing properties." + description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties." color = "#d3a308" nutriment_factor = 15 * REAGENTS_METABOLISM metabolization_rate = 1 * REAGENTS_METABOLISM taste_description = "sweetness" -/datum/reagent/consumable/honey/on_mob_life(mob/living/M) +/datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M) M.reagents.add_reagent("sugar",3) if(prob(55)) M.adjustBruteLoss(-1*REM, 0) @@ -571,6 +571,14 @@ M.adjustToxLoss(-1*REM, 0) ..() +/datum/reagent/consumable/honey/reaction_mob(mob/living/M, method=TOUCH, reac_volume) + if(iscarbon(M) && (method in list(TOUCH, VAPOR, PATCH))) + var/mob/living/carbon/C = M + for(var/s in C.surgeries) + var/datum/surgery/S = s + S.success_multiplier = max(0.6, S.success_multiplier) // +60% success probability on each step, compared to bacchus' blessing's ~46% + ..() + /datum/reagent/consumable/mayonnaise name = "Mayonnaise" id = "mayonnaise" @@ -607,7 +615,7 @@ M.blur_eyes(5) ..() -/datum/reagent/consumable/tearjuice/on_mob_life(mob/living/M) +/datum/reagent/consumable/tearjuice/on_mob_life(mob/living/carbon/M) ..() if(M.eye_blurry) //Don't worsen vision if it was otherwise fine M.blur_eyes(4) @@ -624,7 +632,7 @@ nutriment_factor = 15 * REAGENTS_METABOLISM color = "#664330" // rgb: 102, 67, 48 -/datum/reagent/consumable/nutriment/stabilized/on_mob_life(mob/living/M) +/datum/reagent/consumable/nutriment/stabilized/on_mob_life(mob/living/carbon/M) if(M.nutrition > NUTRITION_LEVEL_FULL - 25) M.nutrition -= 3*nutriment_factor ..() @@ -639,7 +647,7 @@ color = "#1d043d" taste_description = "bitter mushroom" -/datum/reagent/consumable/entpoly/on_mob_life(mob/living/M) +/datum/reagent/consumable/entpoly/on_mob_life(mob/living/carbon/M) if(current_cycle >= 10) M.Unconscious(40, 0) . = 1 @@ -673,7 +681,7 @@ nutriment_factor = 3 * REAGENTS_METABOLISM taste_description = "fruity mushroom" -/datum/reagent/consumable/vitfro/on_mob_life(mob/living/M) +/datum/reagent/consumable/vitfro/on_mob_life(mob/living/carbon/M) if(prob(80)) M.adjustBruteLoss(-1*REM, 0) M.adjustFireLoss(-1*REM, 0) @@ -686,4 +694,4 @@ description = "The sorrow and melancholy of a thousand bereaved clowns, forever denied their Honkmechs." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#eef442" // rgb: 238, 244, 66 - taste_description = "mournful honking" \ No newline at end of file + taste_description = "mournful honking" diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index ddc9878546..474e24f5a5 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -10,7 +10,7 @@ id = "medicine" taste_description = "bitterness" -/datum/reagent/medicine/on_mob_life(mob/living/M) +/datum/reagent/medicine/on_mob_life(mob/living/carbon/M) current_cycle++ holder.remove_reagent(src.id, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism @@ -20,7 +20,7 @@ description = "Leporazine will effectively regulate a patient's body temperature, ensuring it never leaves safe levels." color = "#C8A5DC" // rgb: 200, 165, 220 -/datum/reagent/medicine/leporazine/on_mob_life(mob/living/M) +/datum/reagent/medicine/leporazine/on_mob_life(mob/living/carbon/M) if(M.bodytemperature > BODYTEMP_NORMAL) M.adjust_bodytemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) else if(M.bodytemperature < (BODYTEMP_NORMAL + 1)) @@ -80,7 +80,7 @@ description = "Increases resistance to stuns as well as reducing drowsiness and hallucinations." color = "#FF00FF" -/datum/reagent/medicine/synaptizine/on_mob_life(mob/living/M) +/datum/reagent/medicine/synaptizine/on_mob_life(mob/living/carbon/M) M.drowsyness = max(M.drowsyness-5, 0) M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) @@ -99,7 +99,7 @@ description = "Reduces drowsiness, hallucinations, and Histamine from body." color = "#EC536D" // rgb: 236, 83, 109 -/datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/M) +/datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/carbon/M) M.drowsyness = max(M.drowsyness-5, 0) if(holder.has_reagent("mindbreaker")) holder.remove_reagent("mindbreaker", 5) @@ -117,7 +117,7 @@ description = "Instantly restores all hearing to the patient, but does not cure deafness." color = "#6600FF" // rgb: 100, 165, 255 -/datum/reagent/medicine/inacusiate/on_mob_life(mob/living/M) +/datum/reagent/medicine/inacusiate/on_mob_life(mob/living/carbon/M) M.restoreEars() ..() @@ -128,7 +128,7 @@ color = "#0000C8" taste_description = "sludge" -/datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/M) +/datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/carbon/M) var/power = -0.00003 * (M.bodytemperature ** 2) + 3 if(M.bodytemperature < T0C) M.adjustOxyLoss(-3 * power, 0) @@ -149,7 +149,7 @@ taste_description = "muscle" metabolization_rate = 1.5 * REAGENTS_METABOLISM -/datum/reagent/medicine/clonexadone/on_mob_life(mob/living/M) +/datum/reagent/medicine/clonexadone/on_mob_life(mob/living/carbon/M) if(M.bodytemperature < T0C) M.adjustCloneLoss(0.00006 * (M.bodytemperature ** 2) - 6, 0) M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) @@ -164,7 +164,7 @@ color = "#f7832a" taste_description = "spicy jelly" -/datum/reagent/medicine/pyroxadone/on_mob_life(mob/living/M) +/datum/reagent/medicine/pyroxadone/on_mob_life(mob/living/carbon/M) if(M.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT) var/power = 0 switch(M.bodytemperature) @@ -195,7 +195,7 @@ overdose_threshold = 30 taste_description = "fish" -/datum/reagent/medicine/rezadone/on_mob_life(mob/living/M) +/datum/reagent/medicine/rezadone/on_mob_life(mob/living/carbon/M) M.setCloneLoss(0) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that. M.heal_bodypart_damage(1,1) M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) @@ -237,7 +237,7 @@ M.emote("scream") ..() -/datum/reagent/medicine/silver_sulfadiazine/on_mob_life(mob/living/M) +/datum/reagent/medicine/silver_sulfadiazine/on_mob_life(mob/living/carbon/M) M.adjustFireLoss(-2*REM, 0) ..() . = 1 @@ -251,7 +251,7 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 25 -/datum/reagent/medicine/oxandrolone/on_mob_life(mob/living/M) +/datum/reagent/medicine/oxandrolone/on_mob_life(mob/living/carbon/M) if(M.getFireLoss() > 50) M.adjustFireLoss(-4*REM, 0) //Twice as effective as silver sulfadiazine for severe burns else @@ -286,7 +286,7 @@ ..() -/datum/reagent/medicine/styptic_powder/on_mob_life(mob/living/M) +/datum/reagent/medicine/styptic_powder/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(-2*REM, 0) ..() . = 1 @@ -303,7 +303,7 @@ var/last_added = 0 var/maximum_reachable = BLOOD_VOLUME_NORMAL - 10 //So that normal blood regeneration can continue with salglu active -/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/M) +/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/M) if(last_added) M.blood_volume -= last_added last_added = 0 @@ -315,7 +315,7 @@ if(prob(33)) M.adjustBruteLoss(-0.5*REM, 0) M.adjustFireLoss(-0.5*REM, 0) - . = 1 + . = TRUE ..() /datum/reagent/medicine/salglu_solution/overdose_process(mob/living/M) @@ -330,7 +330,7 @@ if(prob(33)) M.adjustBruteLoss(0.5*REM, 0) M.adjustFireLoss(0.5*REM, 0) - . = 1 + . = TRUE ..() /datum/reagent/medicine/mine_salve @@ -341,14 +341,12 @@ color = "#6D6374" metabolization_rate = 0.4 * REAGENTS_METABOLISM -/datum/reagent/medicine/mine_salve/on_mob_life(mob/living/M) - if(iscarbon(M)) - var/mob/living/carbon/N = M - N.hal_screwyhud = SCREWYHUD_HEALTHY - M.adjustBruteLoss(-0.25*REM, 0) - M.adjustFireLoss(-0.25*REM, 0) +/datum/reagent/medicine/mine_salve/on_mob_life(mob/living/carbon/C) + C.hal_screwyhud = SCREWYHUD_HEALTHY + C.adjustBruteLoss(-0.25*REM, 0) + C.adjustFireLoss(-0.25*REM, 0) ..() - . = 1 + return TRUE /datum/reagent/medicine/mine_salve/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1) if(iscarbon(M) && M.stat != DEAD) @@ -400,7 +398,7 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "ash" -/datum/reagent/medicine/charcoal/on_mob_life(mob/living/M) +/datum/reagent/medicine/charcoal/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-2*REM, 0) . = 1 for(var/datum/reagent/R in M.reagents.reagent_list) @@ -417,7 +415,7 @@ metabolization_rate = 0.25 * REAGENTS_METABOLISM overdose_threshold = 30 -/datum/reagent/medicine/omnizine/on_mob_life(mob/living/M) +/datum/reagent/medicine/omnizine/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-0.5*REM, 0) M.adjustOxyLoss(-0.5*REM, 0) M.adjustBruteLoss(-0.5*REM, 0) @@ -442,7 +440,7 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "acid" -/datum/reagent/medicine/calomel/on_mob_life(mob/living/M) +/datum/reagent/medicine/calomel/on_mob_life(mob/living/carbon/M) for(var/datum/reagent/R in M.reagents.reagent_list) if(R != src) M.reagents.remove_reagent(R.id,2.5) @@ -459,7 +457,7 @@ color = "#14FF3C" metabolization_rate = 2 * REAGENTS_METABOLISM -/datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/M) +/datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/carbon/M) if(M.radiation > 0) M.radiation -= min(M.radiation, 8) ..() @@ -472,7 +470,7 @@ color = "#E6FFF0" metabolization_rate = 0.5 * REAGENTS_METABOLISM -/datum/reagent/medicine/pen_acid/on_mob_life(mob/living/M) +/datum/reagent/medicine/pen_acid/on_mob_life(mob/living/carbon/M) M.radiation -= max(M.radiation-RAD_MOB_SAFE, 0)/50 M.adjustToxLoss(-2*REM, 0) for(var/datum/reagent/R in M.reagents.reagent_list) @@ -491,7 +489,7 @@ overdose_threshold = 25 -/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/M) +/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() > 50) M.adjustBruteLoss(-4*REM, 0) //Twice as effective as styptic powder for severe bruising else @@ -513,7 +511,7 @@ color = "#00FFFF" metabolization_rate = 0.25 * REAGENTS_METABOLISM -/datum/reagent/medicine/salbutamol/on_mob_life(mob/living/M) +/datum/reagent/medicine/salbutamol/on_mob_life(mob/living/carbon/M) M.adjustOxyLoss(-3*REM, 0) if(M.losebreath >= 4) M.losebreath -= 2 @@ -535,7 +533,7 @@ M.adjustBruteLoss(-0.5*REM, 0) M.adjustFireLoss(-0.5*REM, 0) ..() - . = 1 + return TRUE /datum/reagent/medicine/ephedrine name = "Ephedrine" @@ -547,32 +545,28 @@ overdose_threshold = 45 addiction_threshold = 30 -/datum/reagent/medicine/ephedrine/on_mob_add(mob/M) +/datum/reagent/medicine/ephedrine/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_GOTTAGOFAST, id) + L.add_trait(TRAIT_GOTTAGOFAST, id) -/datum/reagent/medicine/ephedrine/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_GOTTAGOFAST, id) +/datum/reagent/medicine/ephedrine/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_GOTTAGOFAST, id) ..() -/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M) +/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/carbon/M) M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.AdjustUnconscious(-20, 0) M.adjustStaminaLoss(-1*REM, 0) ..() - . = 1 + return TRUE /datum/reagent/medicine/ephedrine/overdose_process(mob/living/M) if(prob(33)) M.adjustToxLoss(0.5*REM, 0) M.losebreath++ . = 1 - ..() + return TRUE /datum/reagent/medicine/ephedrine/addiction_act_stage1(mob/living/M) if(prob(33)) @@ -610,7 +604,7 @@ color = "#64FFE6" metabolization_rate = 0.5 * REAGENTS_METABOLISM -/datum/reagent/medicine/diphenhydramine/on_mob_life(mob/living/M) +/datum/reagent/medicine/diphenhydramine/on_mob_life(mob/living/carbon/M) if(prob(10)) M.drowsyness += 1 M.jitteriness -= 1 @@ -627,19 +621,15 @@ overdose_threshold = 30 addiction_threshold = 25 -/datum/reagent/medicine/morphine/on_mob_add(mob/M) +/datum/reagent/medicine/morphine/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_IGNORESLOWDOWN, id) + L.add_trait(TRAIT_IGNORESLOWDOWN, id) -/datum/reagent/medicine/morphine/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_IGNORESLOWDOWN, id) +/datum/reagent/medicine/morphine/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_IGNORESLOWDOWN, id) ..() -/datum/reagent/medicine/morphine/on_mob_life(mob/living/M) +/datum/reagent/medicine/morphine/on_mob_life(mob/living/carbon/M) switch(current_cycle) if(11) to_chat(M, "You start to feel tired..." ) @@ -699,7 +689,7 @@ metabolization_rate = 0.25 * REAGENTS_METABOLISM taste_description = "dull toxin" -/datum/reagent/medicine/oculine/on_mob_life(mob/living/M) +/datum/reagent/medicine/oculine/on_mob_life(mob/living/carbon/M) var/obj/item/organ/eyes/eyes = M.getorganslot(ORGAN_SLOT_EYES) if (!eyes) return @@ -730,7 +720,7 @@ metabolization_rate = 0.25 * REAGENTS_METABOLISM overdose_threshold = 35 -/datum/reagent/medicine/atropine/on_mob_life(mob/living/M) +/datum/reagent/medicine/atropine/on_mob_life(mob/living/carbon/M) if(M.health < 0) M.adjustToxLoss(-2*REM, 0) M.adjustBruteLoss(-2*REM, 0) @@ -759,7 +749,7 @@ metabolization_rate = 0.25 * REAGENTS_METABOLISM overdose_threshold = 30 -/datum/reagent/medicine/epinephrine/on_mob_life(mob/living/M) +/datum/reagent/medicine/epinephrine/on_mob_life(mob/living/carbon/M) if(M.health < 0) M.adjustToxLoss(-0.5*REM, 0) M.adjustBruteLoss(-0.5*REM, 0) @@ -816,7 +806,7 @@ add_logs(M, M, "revived", src) ..() -/datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/M) +/datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(0.5*REM, 0) M.adjustFireLoss(0.5*REM, 0) ..() @@ -828,12 +818,10 @@ description = "Efficiently restores brain damage." color = "#DCDCFF" -/datum/reagent/medicine/mannitol/on_mob_life(mob/living/M) - M.adjustBrainLoss(-2*REM) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(prob(10)) - C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) +/datum/reagent/medicine/mannitol/on_mob_life(mob/living/carbon/C) + C.adjustBrainLoss(-2*REM) + if(prob(10)) + C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) ..() /datum/reagent/medicine/mutadone @@ -843,7 +831,7 @@ color = "#5096C8" taste_description = "acid" -/datum/reagent/medicine/mutadone/on_mob_life(mob/living/carbon/human/M) +/datum/reagent/medicine/mutadone/on_mob_life(mob/living/carbon/M) M.jitteriness = 0 if(M.has_dna()) M.dna.remove_all_mutations() @@ -857,7 +845,7 @@ color = "#00B4C8" taste_description = "raw egg" -/datum/reagent/medicine/antihol/on_mob_life(mob/living/M) +/datum/reagent/medicine/antihol/on_mob_life(mob/living/carbon/M) M.dizziness = 0 M.drowsyness = 0 M.slurring = 0 @@ -878,19 +866,15 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 60 -/datum/reagent/medicine/stimulants/on_mob_add(mob/M) +/datum/reagent/medicine/stimulants/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_GOTTAGOFAST, id) + L.add_trait(TRAIT_GOTTAGOFAST, id) -/datum/reagent/medicine/stimulants/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_GOTTAGOFAST, id) +/datum/reagent/medicine/stimulants/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_GOTTAGOFAST, id) ..() -/datum/reagent/medicine/stimulants/on_mob_life(mob/living/M) +/datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M) if(M.health < 50 && M.health > 0) M.adjustOxyLoss(-1*REM, 0) M.adjustToxLoss(-1*REM, 0) @@ -919,7 +903,7 @@ color = "#FFFFF0" metabolization_rate = 0.5 * REAGENTS_METABOLISM -/datum/reagent/medicine/insulin/on_mob_life(mob/living/M) +/datum/reagent/medicine/insulin/on_mob_life(mob/living/carbon/M) if(M.AdjustSleeping(-20, FALSE)) . = 1 M.reagents.remove_reagent("sugar", 3) @@ -931,10 +915,10 @@ id = "bicaridine" description = "Restores bruising. Overdose causes it instead." reagent_state = LIQUID - color = "#BF0000" + color = "#C8A5DC" overdose_threshold = 30 -/datum/reagent/medicine/bicaridine/on_mob_life(mob/living/M) +/datum/reagent/medicine/bicaridine/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(-2*REM, 0) ..() . = 1 @@ -949,10 +933,10 @@ id = "dexalin" description = "Restores oxygen loss. Overdose causes it instead." reagent_state = LIQUID - color = "#0080FF" + color = "#C8A5DC" overdose_threshold = 30 -/datum/reagent/medicine/dexalin/on_mob_life(mob/living/M) +/datum/reagent/medicine/dexalin/on_mob_life(mob/living/carbon/M) M.adjustOxyLoss(-2*REM, 0) ..() . = 1 @@ -967,10 +951,10 @@ id = "kelotane" description = "Restores fire damage. Overdose causes it instead." reagent_state = LIQUID - color = "#FFA800" + color = "#C8A5DC" overdose_threshold = 30 -/datum/reagent/medicine/kelotane/on_mob_life(mob/living/M) +/datum/reagent/medicine/kelotane/on_mob_life(mob/living/carbon/M) M.adjustFireLoss(-2*REM, 0) ..() . = 1 @@ -985,11 +969,11 @@ id = "antitoxin" description = "Heals toxin damage and removes toxins in the bloodstream. Overdose causes toxin damage." reagent_state = LIQUID - color = "#00A000" + color = "#C8A5DC" overdose_threshold = 30 taste_description = "a roll of gauze" -/datum/reagent/medicine/antitoxin/on_mob_life(mob/living/M) +/datum/reagent/medicine/antitoxin/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-2*REM, 0) for(var/datum/reagent/toxin/R in M.reagents.reagent_list) M.reagents.remove_reagent(R.id,1) @@ -1006,9 +990,9 @@ id = "inaprovaline" description = "Stabilizes the breathing of patients. Good for those in critical condition." reagent_state = LIQUID - color = "#00BFFF" + color = "#C8A5DC" -/datum/reagent/medicine/inaprovaline/on_mob_life(mob/living/M) +/datum/reagent/medicine/inaprovaline/on_mob_life(mob/living/carbon/M) if(M.losebreath >= 5) M.losebreath -= 5 ..() @@ -1018,11 +1002,11 @@ id = "tricordrazine" description = "Has a high chance to heal all types of damage. Overdose instead causes it." reagent_state = LIQUID - color = "#8040FF" + color = "#C8A5DC" overdose_threshold = 30 taste_description = "grossness" -/datum/reagent/medicine/tricordrazine/on_mob_life(mob/living/M) +/datum/reagent/medicine/tricordrazine/on_mob_life(mob/living/carbon/M) if(prob(80)) M.adjustBruteLoss(-1*REM, 0) M.adjustFireLoss(-1*REM, 0) @@ -1047,7 +1031,7 @@ color = "#91D865" taste_description = "jelly" -/datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/M) +/datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(-1.5*REM, 0) M.adjustFireLoss(-1.5*REM, 0) M.adjustOxyLoss(-1.5*REM, 0) @@ -1062,7 +1046,7 @@ reagent_state = SOLID color = "#555555" -/datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M) +/datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(-5*REM, 0) //A ton of healing - this is a 50 telecrystal investment. M.adjustFireLoss(-5*REM, 0) M.adjustOxyLoss(-15, 0) @@ -1079,7 +1063,7 @@ color = rgb(255, 175, 0) overdose_threshold = 25 -/datum/reagent/medicine/earthsblood/on_mob_life(mob/living/M) +/datum/reagent/medicine/earthsblood/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(-3 * REM, 0) M.adjustFireLoss(-3 * REM, 0) M.adjustOxyLoss(-15 * REM, 0) @@ -1106,7 +1090,7 @@ color = "#27870a" metabolization_rate = 0.4 * REAGENTS_METABOLISM -/datum/reagent/medicine/haloperidol/on_mob_life(mob/living/M) +/datum/reagent/medicine/haloperidol/on_mob_life(mob/living/carbon/M) for(var/datum/reagent/drug/R in M.reagents.reagent_list) M.reagents.remove_reagent(R.id,5) M.drowsyness += 2 @@ -1118,7 +1102,7 @@ M.adjustBrainLoss(1*REM, 50) M.adjustStaminaLoss(2.5*REM, 0) ..() - . = 1 + return TRUE /datum/reagent/medicine/miningnanites name = "Nanites" @@ -1128,17 +1112,17 @@ overdose_threshold = 3 //To prevent people stacking massive amounts of a very strong healing reagent can_synth = FALSE -/datum/reagent/medicine/miningnanites/on_mob_life(mob/living/M) +/datum/reagent/medicine/miningnanites/on_mob_life(mob/living/carbon/M) M.heal_bodypart_damage(5,5) ..() - . = 1 + return TRUE /datum/reagent/medicine/miningnanites/overdose_process(mob/living/M) M.adjustBruteLoss(3*REM, 0) M.adjustFireLoss(3*REM, 0) M.adjustToxLoss(3*REM, 0) ..() - . = 1 + return TRUE //used for changeling's adrenaline power /datum/reagent/medicine/changelingadrenaline @@ -1148,18 +1132,18 @@ color = "#C8A5DC" overdose_threshold = 30 -/datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/M as mob) +/datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/M as mob) M.AdjustUnconscious(-20, 0) M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.adjustStaminaLoss(-1, 0) - . = 1 ..() + return TRUE /datum/reagent/medicine/changelingadrenaline/overdose_process(mob/living/M as mob) M.adjustToxLoss(1, 0) - . = 1 ..() + return TRUE /datum/reagent/medicine/changelinghaste name = "Changeling Haste" @@ -1168,22 +1152,18 @@ color = "#C8A5DC" metabolization_rate = 1 -/datum/reagent/medicine/changelinghaste/on_mob_add(mob/M) +/datum/reagent/medicine/changelinghaste/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_GOTTAGOREALLYFAST, id) + L.add_trait(TRAIT_GOTTAGOREALLYFAST, id) -/datum/reagent/medicine/changelinghaste/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_GOTTAGOREALLYFAST, id) +/datum/reagent/medicine/changelinghaste/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_GOTTAGOREALLYFAST, id) ..() -/datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/M as mob) +/datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(2, 0) - . = 1 ..() + return TRUE /datum/reagent/medicine/corazone // Heart attack code will not do damage if corazone is present @@ -1226,7 +1206,7 @@ M.remove_trait(TRAIT_SLEEPIMMUNE, id) ..() -/datum/reagent/medicine/modafinil/on_mob_life(mob/living/M) +/datum/reagent/medicine/modafinil/on_mob_life(mob/living/carbon/M) if(!overdosed) // We do not want any effects on OD overdose_threshold = overdose_threshold + rand(-10,10)/10 // for extra fun M.AdjustStun(-5, 0) @@ -1235,7 +1215,7 @@ M.adjustStaminaLoss(-0.5*REM, 0) M.Jitter(1) metabolization_rate = 0.01 * REAGENTS_METABOLISM * rand(5,20) // randomizes metabolism between 0.02 and 0.08 per tick - . = 1 + . = TRUE ..() /datum/reagent/medicine/modafinil/overdose_start(mob/living/M) @@ -1272,5 +1252,4 @@ M.adjustOxyLoss(1.5*REM, 0) M.adjustStaminaLoss(1.5*REM, 0) ..() - . = 1 - + return TRUE diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 81d55830d2..039f41a471 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -11,7 +11,7 @@ glass_desc = "Are you sure this is tomato juice?" shot_glass_icon_state = "shotglassred" -/datum/reagent/blood/reaction_mob(mob/M, method=TOUCH, reac_volume) +/datum/reagent/blood/reaction_mob(mob/living/L, method=TOUCH, reac_volume) if(data && data["viruses"]) for(var/thing in data["viruses"]) var/datum/disease/D = thing @@ -19,15 +19,13 @@ if((D.spread_flags & DISEASE_SPREAD_SPECIAL) || (D.spread_flags & DISEASE_SPREAD_NON_CONTAGIOUS)) continue - if(isliving(M)) - var/mob/living/L = M - if((method == TOUCH || method == VAPOR) && (D.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS)) - L.ContactContractDisease(D) - else //ingest, patch or inject - L.ForceContractDisease(D) + if((method == TOUCH || method == VAPOR) && (D.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS)) + L.ContactContractDisease(D) + else //ingest, patch or inject + L.ForceContractDisease(D) - if(iscarbon(M)) - var/mob/living/carbon/C = M + if(iscarbon(L)) + var/mob/living/carbon/C = L if(C.get_blood_id() == "blood" && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) C.reagents.add_reagent("toxin", reac_volume * 0.5) @@ -99,10 +97,7 @@ color = "#C81040" // rgb: 200, 16, 64 taste_description = "slime" -/datum/reagent/vaccine/reaction_mob(mob/M, method=TOUCH, reac_volume) - if(!isliving(M)) - return - var/mob/living/L = M +/datum/reagent/vaccine/reaction_mob(mob/living/L, method=TOUCH, reac_volume) if(islist(data) && (method == INGEST || method == INJECT)) for(var/thing in L.diseases) var/datum/disease/D = thing @@ -195,16 +190,12 @@ glass_name = "glass of holy water" glass_desc = "A glass of holy water." -/datum/reagent/water/holywater/on_mob_add(mob/M) +/datum/reagent/water/holywater/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_HOLY, id) + L.add_trait(TRAIT_HOLY, id) -/datum/reagent/water/holywater/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_HOLY, id) +/datum/reagent/water/holywater/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_HOLY, id) ..() /datum/reagent/water/holywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume) @@ -212,7 +203,7 @@ to_chat(M, "A darkness begins to spread its unholy tendrils through your mind, purging the Justiciar's influence!") ..() -/datum/reagent/water/holywater/on_mob_life(mob/living/M) +/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M) if(!data) data = 1 data++ @@ -276,7 +267,7 @@ return return ..() -/datum/reagent/fuel/unholywater/on_mob_life(mob/living/M) +/datum/reagent/fuel/unholywater/on_mob_life(mob/living/carbon/M) if(iscultist(M)) M.drowsyness = max(M.drowsyness-5, 0) M.AdjustUnconscious(-20, 0) @@ -296,7 +287,7 @@ M.adjustOxyLoss(2, 0) M.adjustBruteLoss(2, 0) holder.remove_reagent(id, 1) - . = 1 + return TRUE /datum/reagent/hellwater //if someone has this in their system they've really pissed off an eldrich god name = "Hell Water" @@ -304,13 +295,13 @@ description = "YOUR FLESH! IT BURNS!" taste_description = "burning" -/datum/reagent/hellwater/on_mob_life(mob/living/M) +/datum/reagent/hellwater/on_mob_life(mob/living/carbon/M) M.fire_stacks = min(5,M.fire_stacks + 3) M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire M.adjustToxLoss(1, 0) M.adjustFireLoss(1, 0) //Hence the other damages... ain't I a bastard? M.adjustBrainLoss(5, 150) - holder.remove_reagent(src.id, 1) + holder.remove_reagent(id, 1) /datum/reagent/medicine/omnizine/godblood name = "Godblood" @@ -620,10 +611,12 @@ taste_description = "slime" /datum/reagent/mulligan/on_mob_life(mob/living/carbon/human/H) + ..() + if (!istype(H)) + return to_chat(H, "You grit your teeth in pain as your body rapidly mutates!") H.visible_message("[H] suddenly transforms!") randomize_human(H) - ..() /datum/reagent/aslimetoxin name = "Advanced Mutation Toxin" @@ -632,10 +625,7 @@ color = "#13BC5E" // rgb: 19, 188, 94 taste_description = "slime" -/datum/reagent/aslimetoxin/reaction_mob(mob/M, method=TOUCH, reac_volume) - if(!isliving(M)) - return - var/mob/living/L = M +/datum/reagent/aslimetoxin/reaction_mob(mob/living/L, method=TOUCH, reac_volume) if(method != TOUCH) L.ForceContractDisease(new /datum/disease/transformation/slime(), FALSE, TRUE) @@ -647,10 +637,7 @@ can_synth = FALSE taste_description = "decay" -/datum/reagent/gluttonytoxin/reaction_mob(mob/M, method=TOUCH, reac_volume) - if(!isliving(M)) - return - var/mob/living/L = M +/datum/reagent/gluttonytoxin/reaction_mob(mob/living/L, method=TOUCH, reac_volume) L.ForceContractDisease(new /datum/disease/transformation/morph(), FALSE, TRUE) /datum/reagent/serotrotium @@ -661,7 +648,7 @@ metabolization_rate = 0.25 * REAGENTS_METABOLISM taste_description = "bitterness" -/datum/reagent/serotrotium/on_mob_life(mob/living/M) +/datum/reagent/serotrotium/on_mob_life(mob/living/carbon/M) if(ishuman(M)) if(prob(7)) M.emote(pick("twitch","drool","moan","gasp")) @@ -745,7 +732,7 @@ color = "#484848" // rgb: 72, 72, 72A taste_mult = 0 // apparently tasteless. -/datum/reagent/mercury/on_mob_life(mob/living/M) +/datum/reagent/mercury/on_mob_life(mob/living/carbon/M) if(M.canmove && !isspaceturf(M.loc)) step(M, pick(GLOB.cardinals)) if(prob(5)) @@ -783,7 +770,7 @@ color = "#808080" // rgb: 128, 128, 128 taste_description = "chlorine" -/datum/reagent/chlorine/on_mob_life(mob/living/M) +/datum/reagent/chlorine/on_mob_life(mob/living/carbon/M) M.take_bodypart_damage(1*REM, 0, 0, 0) . = 1 ..() @@ -796,7 +783,7 @@ color = "#808080" // rgb: 128, 128, 128 taste_description = "acid" -/datum/reagent/fluorine/on_mob_life(mob/living/M) +/datum/reagent/fluorine/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(1*REM, 0) . = 1 ..() @@ -825,7 +812,7 @@ color = "#808080" // rgb: 128, 128, 128 taste_description = "metal" -/datum/reagent/lithium/on_mob_life(mob/living/M) +/datum/reagent/lithium/on_mob_life(mob/living/carbon/M) if(M.canmove && !isspaceturf(M.loc)) step(M, pick(GLOB.cardinals)) if(prob(5)) @@ -847,7 +834,7 @@ color = "#C7C7C7" // rgb: 199,199,199 taste_description = "the colour blue and regret" -/datum/reagent/radium/on_mob_life(mob/living/M) +/datum/reagent/radium/on_mob_life(mob/living/carbon/M) M.apply_effect(2*REM/M.metabolism_efficiency,EFFECT_IRRADIATE,0) ..() @@ -866,9 +853,8 @@ color = "#C8A5DC" // rgb: 200, 165, 220 taste_description = "bitterness" -/datum/reagent/space_cleaner/sterilizine/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - if(iscarbon(M) && (method in list(TOUCH, VAPOR, PATCH))) - var/mob/living/carbon/C = M +/datum/reagent/space_cleaner/sterilizine/reaction_mob(mob/living/carbon/C, method=TOUCH, reac_volume) + if(method in list(TOUCH, VAPOR, PATCH)) for(var/s in C.surgeries) var/datum/surgery/S = s S.success_multiplier = max(0.2, S.success_multiplier) @@ -884,16 +870,12 @@ color = "#C8A5DC" // rgb: 200, 165, 220 -/datum/reagent/iron/on_mob_life(mob/living/M) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(C.blood_volume < BLOOD_VOLUME_NORMAL) - C.blood_volume += 0.5 +/datum/reagent/iron/on_mob_life(mob/living/carbon/C) + if(C.blood_volume < BLOOD_VOLUME_NORMAL) + C.blood_volume += 0.5 ..() /datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - if(!isliving(M)) - return if(M.has_bane(BANE_IRON)) //If the target is weak to cold iron, then poison them. if(holder && holder.chem_temp < 100) // COLD iron. M.reagents.add_reagent("toxin", reac_volume) @@ -916,8 +898,6 @@ taste_description = "expensive yet reasonable metal" /datum/reagent/silver/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - if(!isliving(M)) - return if(M.has_bane(BANE_SILVER)) M.reagents.add_reagent("toxin", reac_volume) ..() @@ -930,7 +910,7 @@ color = "#B8B8C0" // rgb: 184, 184, 192 taste_description = "the inside of a reactor" -/datum/reagent/uranium/on_mob_life(mob/living/M) +/datum/reagent/uranium/on_mob_life(mob/living/carbon/M) M.apply_effect(1/M.metabolism_efficiency,EFFECT_IRRADIATE,0) ..() @@ -955,14 +935,17 @@ do_teleport(M, get_turf(M), (reac_volume / 5), asoundin = 'sound/effects/phasein.ogg') //4 tiles per crystal ..() -/datum/reagent/bluespace/on_mob_life(mob/living/M) +/datum/reagent/bluespace/on_mob_life(mob/living/carbon/M) if(current_cycle > 10 && prob(15)) to_chat(M, "You feel unstable...") M.Jitter(2) current_cycle = 1 - addtimer(CALLBACK(GLOBAL_PROC, .proc/do_teleport, M, get_turf(M), 5, null, null, null, 'sound/effects/phasein.ogg'), 30) + addtimer(CALLBACK(M, /mob/living/proc/bluespace_shuffle), 30) ..() +/mob/living/proc/bluespace_shuffle() + do_teleport(src, get_turf(src), 5, asoundin = 'sound/effects/phasein.ogg') + /datum/reagent/aluminium name = "Aluminium" id = "aluminium" @@ -990,17 +973,15 @@ glass_desc = "Unless you're an industrial tool, this is probably not safe for consumption." /datum/reagent/fuel/reaction_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with welding fuel to make them easy to ignite! - if(!isliving(M)) - return if(method == TOUCH || method == VAPOR) M.adjust_fire_stacks(reac_volume / 10) return ..() -/datum/reagent/fuel/on_mob_life(mob/living/M) +/datum/reagent/fuel/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(1, 0) - . = 1 ..() + return TRUE /datum/reagent/space_cleaner name = "Space cleaner" @@ -1015,19 +996,19 @@ else if(O) O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - O.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) /datum/reagent/space_cleaner/reaction_turf(turf/T, reac_volume) if(reac_volume >= 1) T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - T.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) for(var/obj/effect/decal/cleanable/C in T) qdel(C) for(var/mob/living/simple_animal/slime/M in T) M.adjustToxLoss(rand(5,10)) -/datum/reagent/space_cleaner/reaction_mob(mob/M, method=TOUCH, reac_volume) +/datum/reagent/space_cleaner/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) M.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) if(iscarbon(M)) @@ -1038,26 +1019,26 @@ H.lip_style = null H.update_body() for(var/obj/item/I in C.held_items) - I.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) if(C.wear_mask) - if(C.wear_mask.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(SEND_SIGNAL(C.wear_mask, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) C.update_inv_wear_mask() if(ishuman(M)) var/mob/living/carbon/human/H = C if(H.head) - if(H.head.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(SEND_SIGNAL(H.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) H.update_inv_head() if(H.wear_suit) - if(H.wear_suit.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(SEND_SIGNAL(H.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) H.update_inv_wear_suit() else if(H.w_uniform) - if(H.w_uniform.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(SEND_SIGNAL(H.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) H.update_inv_w_uniform() if(H.shoes) - if(H.shoes.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) + if(SEND_SIGNAL(H.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)) H.update_inv_shoes() H.wash_cream() - M.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) + SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) /datum/reagent/space_cleaner/ez_clean name = "EZ Clean" @@ -1066,7 +1047,7 @@ metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "acid" -/datum/reagent/space_cleaner/ez_clean/on_mob_life(mob/living/M) +/datum/reagent/space_cleaner/ez_clean/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(3.33) M.adjustFireLoss(3.33) M.adjustToxLoss(3.33) @@ -1086,7 +1067,7 @@ metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "sourness" -/datum/reagent/cryptobiolin/on_mob_life(mob/living/M) +/datum/reagent/cryptobiolin/on_mob_life(mob/living/carbon/M) M.Dizzy(1) if(!M.confused) M.confused = 1 @@ -1100,7 +1081,7 @@ color = "#C8A5DC" // rgb: 200, 165, 220A taste_description = "numbness" -/datum/reagent/impedrezene/on_mob_life(mob/living/M) +/datum/reagent/impedrezene/on_mob_life(mob/living/carbon/M) M.jitteriness = max(M.jitteriness-5,0) if(prob(80)) M.adjustBrainLoss(2*REM) @@ -1118,10 +1099,7 @@ can_synth = FALSE taste_description = "sludge" -/datum/reagent/nanites/reaction_mob(mob/M, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) - if(!isliving(M)) - return - var/mob/living/L = M +/datum/reagent/nanites/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection)))) L.ForceContractDisease(new /datum/disease/transformation/robot(), FALSE, TRUE) @@ -1133,10 +1111,7 @@ can_synth = FALSE taste_description = "sludge" -/datum/reagent/xenomicrobes/reaction_mob(mob/M, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) - if(!isliving(M)) - return - var/mob/living/L = M +/datum/reagent/xenomicrobes/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection)))) L.ForceContractDisease(new /datum/disease/transformation/xeno(), FALSE, TRUE) @@ -1148,10 +1123,7 @@ can_synth = FALSE taste_description = "slime" -/datum/reagent/fungalspores/reaction_mob(mob/M, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) - if(!isliving(M)) - return - var/mob/living/L = M +/datum/reagent/fungalspores/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection)))) L.ForceContractDisease(new /datum/disease/tuberculosis(), FALSE, TRUE) @@ -1233,11 +1205,11 @@ var/temp = holder ? holder.chem_temp : T20C T.atmos_spawn_air("n2o=[reac_volume/5];TEMP=[temp]") -/datum/reagent/nitrous_oxide/reaction_mob(mob/M, method=TOUCH, reac_volume) +/datum/reagent/nitrous_oxide/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == VAPOR) M.drowsyness += max(round(reac_volume, 1), 2) -/datum/reagent/nitrous_oxide/on_mob_life(mob/living/M) +/datum/reagent/nitrous_oxide/on_mob_life(mob/living/carbon/M) M.drowsyness += 2 if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -1256,19 +1228,15 @@ color = "E1A116" taste_description = "sourness" -/datum/reagent/stimulum/on_mob_add(mob/M) +/datum/reagent/stimulum/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_GOTTAGOFAST, id) + L.add_trait(TRAIT_GOTTAGOFAST, id) -/datum/reagent/stimulum/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_GOTTAGOFAST, id) +/datum/reagent/stimulum/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_GOTTAGOFAST, id) ..() -/datum/reagent/stimulum/on_mob_life(mob/living/M) // Has a speedup, and the anti-stun effects of nicotine. +/datum/reagent/stimulum/on_mob_life(mob/living/carbon/M) // Has a speedup, and the anti-stun effects of nicotine. M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.AdjustUnconscious(-20, 0) @@ -1286,16 +1254,12 @@ color = "90560B" taste_description = "burning" -/datum/reagent/nitryl/on_mob_add(mob/M) +/datum/reagent/nitryl/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_GOTTAGOFAST, id) + L.add_trait(TRAIT_GOTTAGOFAST, id) -/datum/reagent/nitryl/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_GOTTAGOFAST, id) +/datum/reagent/nitryl/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_GOTTAGOFAST, id) ..() /////////////////////////Coloured Crayon Powder//////////////////////////// @@ -1391,7 +1355,7 @@ var/tox_prob = 0 taste_description = "plant food" -/datum/reagent/plantnutriment/on_mob_life(mob/living/M) +/datum/reagent/plantnutriment/on_mob_life(mob/living/carbon/M) if(prob(tox_prob)) M.adjustToxLoss(1*REM, 0) . = 1 @@ -1445,12 +1409,9 @@ taste_description = "bitterness" taste_mult = 1.5 -/datum/reagent/stable_plasma/on_mob_life(mob/living/M) - if(iscarbon(M)) - var/mob/living/carbon/C = M - C.adjustPlasma(10) +/datum/reagent/stable_plasma/on_mob_life(mob/living/carbon/C) + C.adjustPlasma(10) ..() - return /datum/reagent/iodine name = "Iodine" @@ -1473,7 +1434,6 @@ var/turf/open/floor/F = T F.PlaceOnTop(/turf/open/floor/carpet) ..() - return /datum/reagent/bromine name = "Bromine" @@ -1517,14 +1477,12 @@ taste_description = "rainbows" -/datum/reagent/colorful_reagent/on_mob_life(mob/living/M) - if(M && isliving(M)) - M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY) +/datum/reagent/colorful_reagent/on_mob_life(mob/living/carbon/M) + M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY) ..() /datum/reagent/colorful_reagent/reaction_mob(mob/living/M, reac_volume) - if(M && isliving(M)) - M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY) + M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY) ..() /datum/reagent/colorful_reagent/reaction_obj(obj/O, reac_volume) @@ -1683,7 +1641,7 @@ color = "#00ff80" taste_description = "strange honey" -/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/M) +/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/carbon/M) if(prob(2)) M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz...")) ..() @@ -1804,16 +1762,12 @@ taste_description = "water" metabolization_rate = 0.25 * REAGENTS_METABOLISM -/datum/reagent/pax/on_mob_add(mob/M) +/datum/reagent/pax/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.add_trait(TRAIT_PACIFISM, id) + L.add_trait(TRAIT_PACIFISM, id) -/datum/reagent/pax/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.remove_trait(TRAIT_PACIFISM, id) +/datum/reagent/pax/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_PACIFISM, id) ..() /datum/reagent/bz_metabolites @@ -1852,7 +1806,7 @@ metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "dizziness" -/datum/reagent/peaceborg/confuse/on_mob_life(mob/living/M) +/datum/reagent/peaceborg/confuse/on_mob_life(mob/living/carbon/M) if(M.confused < 6) M.confused = CLAMP(M.confused + 3, 0, 5) if(M.dizziness < 6) @@ -1868,7 +1822,7 @@ metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "tiredness" -/datum/reagent/peaceborg/tire/on_mob_life(mob/living/M) +/datum/reagent/peaceborg/tire/on_mob_life(mob/living/carbon/M) var/healthcomp = (100 - M.health) //DOES NOT ACCOUNT FOR ADMINBUS THINGS THAT MAKE YOU HAVE MORE THAN 200/210 HEALTH, OR SOMETHING OTHER THAN A HUMAN PROCESSING THIS. if(M.getStaminaLoss() < (45 - healthcomp)) //At 50 health you would have 200 - 150 health meaning 50 compensation. 60 - 50 = 10, so would only do 10-19 stamina.) M.adjustStaminaLoss(10) diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 07f19a8462..90cb732a1f 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -11,10 +11,10 @@ if(reac_volume >= 1) T.AddComponent(/datum/component/thermite, reac_volume) -/datum/reagent/thermite/on_mob_life(mob/living/M) +/datum/reagent/thermite/on_mob_life(mob/living/carbon/M) M.adjustFireLoss(1, 0) ..() - . = 1 + return TRUE /datum/reagent/nitroglycerin name = "Nitroglycerin" @@ -40,12 +40,12 @@ metabolization_rate = 4 taste_description = "burning" -/datum/reagent/clf3/on_mob_life(mob/living/M) +/datum/reagent/clf3/on_mob_life(mob/living/carbon/M) M.adjust_fire_stacks(2) var/burndmg = max(0.3*M.fire_stacks, 0.3) M.adjustFireLoss(burndmg, 0) ..() - . = 1 + return TRUE /datum/reagent/clf3/reaction_turf(turf/T, reac_volume) if(isplatingturf(T)) @@ -100,7 +100,7 @@ metabolization_rate = 0.05 taste_description = "salt" -/datum/reagent/blackpowder/on_mob_life(mob/living/M) +/datum/reagent/blackpowder/on_mob_life(mob/living/carbon/M) ..() if(isplasmaman(M)) M.hallucination += 5 @@ -151,12 +151,12 @@ M.IgniteMob() ..() -/datum/reagent/phlogiston/on_mob_life(mob/living/M) +/datum/reagent/phlogiston/on_mob_life(mob/living/carbon/M) M.adjust_fire_stacks(1) var/burndmg = max(0.3*M.fire_stacks, 0.3) M.adjustFireLoss(burndmg, 0) ..() - . = 1 + return TRUE /datum/reagent/napalm name = "Napalm" @@ -166,7 +166,7 @@ color = "#FA00AF" taste_description = "burning" -/datum/reagent/napalm/on_mob_life(mob/living/M) +/datum/reagent/napalm/on_mob_life(mob/living/carbon/M) M.adjust_fire_stacks(1) ..() @@ -184,7 +184,7 @@ taste_description = "bitterness" -/datum/reagent/cryostylane/on_mob_life(mob/living/M) //TODO: code freezing into an ice cube +/datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube if(M.reagents.has_reagent("oxygen")) M.reagents.remove_reagent("oxygen", 0.5) M.adjust_bodytemperature(-15) @@ -203,7 +203,7 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "bitterness" -/datum/reagent/pyrosium/on_mob_life(mob/living/M) +/datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M) if(M.reagents.has_reagent("oxygen")) M.reagents.remove_reagent("oxygen", 0.5) M.adjust_bodytemperature(15) @@ -219,7 +219,7 @@ taste_description = "charged metal" var/shock_timer = 0 -/datum/reagent/teslium/on_mob_life(mob/living/M) +/datum/reagent/teslium/on_mob_life(mob/living/carbon/M) shock_timer++ if(shock_timer >= rand(5,30)) //Random shocks are wildly unpredictable shock_timer = 0 @@ -235,7 +235,7 @@ color = "#CAFF43" taste_description = "jelly" -/datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/M) +/datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/carbon/M) if(isjellyperson(M)) shock_timer = 0 //immune to shocks M.AdjustStun(-40, 0) @@ -280,9 +280,7 @@ O.extinguish() /datum/reagent/firefighting_foam/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - if(!istype(M)) - return if(method in list(VAPOR, TOUCH)) M.adjust_fire_stacks(-reac_volume) M.ExtinguishMob() - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 74ef9167c9..0700aeb799 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -10,10 +10,10 @@ taste_mult = 1.2 var/toxpwr = 1.5 -/datum/reagent/toxin/on_mob_life(mob/living/M) +/datum/reagent/toxin/on_mob_life(mob/living/carbon/M) if(toxpwr) M.adjustToxLoss(toxpwr*REM, 0) - . = 1 + . = TRUE ..() /datum/reagent/toxin/amatoxin @@ -48,9 +48,8 @@ M.domutcheck() ..() -/datum/reagent/toxin/mutagen/on_mob_life(mob/living/carbon/M) - if(istype(M)) - M.apply_effect(5,EFFECT_IRRADIATE,0) +/datum/reagent/toxin/mutagen/on_mob_life(mob/living/carbon/C) + C.apply_effect(5,EFFECT_IRRADIATE,0) return ..() /datum/reagent/toxin/plasma @@ -58,16 +57,15 @@ id = "plasma" description = "Plasma in its liquid form." taste_description = "bitterness" + specific_heat = SPECIFIC_HEAT_PLASMA taste_mult = 1.5 color = "#8228A0" toxpwr = 3 -/datum/reagent/toxin/plasma/on_mob_life(mob/living/M) +/datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C) if(holder.has_reagent("epinephrine")) holder.remove_reagent("epinephrine", 2*REM) - if(iscarbon(M)) - var/mob/living/carbon/C = M - C.adjustPlasma(20) + C.adjustPlasma(20) return ..() /datum/reagent/toxin/plasma/reaction_obj(obj/O, reac_volume) @@ -83,8 +81,6 @@ return /datum/reagent/toxin/plasma/reaction_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with plasma is stronger than fuel! - if(!isliving(M)) - return if(method == TOUCH || method == VAPOR) M.adjust_fire_stacks(reac_volume / 5) return @@ -98,19 +94,17 @@ toxpwr = 0 taste_description = "acid" -/datum/reagent/toxin/lexorin/on_mob_life(mob/living/M) +/datum/reagent/toxin/lexorin/on_mob_life(mob/living/carbon/C) . = TRUE - if(M.has_trait(TRAIT_NOBREATH)) + if(C.has_trait(TRAIT_NOBREATH)) . = FALSE if(.) - M.adjustOxyLoss(5, 0) - if(iscarbon(M)) - var/mob/living/carbon/C = M - C.losebreath += 2 + C.adjustOxyLoss(5, 0) + C.losebreath += 2 if(prob(20)) - M.emote("gasp") + C.emote("gasp") ..() /datum/reagent/toxin/slimejelly @@ -122,7 +116,7 @@ taste_description = "slime" taste_mult = 1.3 -/datum/reagent/toxin/slimejelly/on_mob_life(mob/living/M) +/datum/reagent/toxin/slimejelly/on_mob_life(mob/living/carbon/M) if(prob(10)) to_chat(M, "Your insides are burning!") M.adjustToxLoss(rand(20,60)*REM, 0) @@ -140,7 +134,7 @@ toxpwr = 0 taste_description = "mint" -/datum/reagent/toxin/minttoxin/on_mob_life(mob/living/M) +/datum/reagent/toxin/minttoxin/on_mob_life(mob/living/carbon/M) if(M.has_trait(TRAIT_FAT)) M.gib() return ..() @@ -162,16 +156,12 @@ toxpwr = 0.5 taste_description = "death" -/datum/reagent/toxin/zombiepowder/on_mob_add(mob/M) +/datum/reagent/toxin/zombiepowder/on_mob_add(mob/living/L) ..() - if(isliving(M)) - var/mob/living/L = M - L.fakedeath(id) + L.fakedeath(id) -/datum/reagent/toxin/zombiepowder/on_mob_delete(mob/M) - if(isliving(M)) - var/mob/living/L = M - L.cure_fakedeath(id) +/datum/reagent/toxin/zombiepowder/on_mob_delete(mob/living/L) + L.cure_fakedeath(id) ..() /datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M) @@ -187,7 +177,7 @@ toxpwr = 0 taste_description = "sourness" -/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/M) +/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/M) M.hallucination += 5 return ..() @@ -243,12 +233,10 @@ color = "#9ACD32" toxpwr = 1 -/datum/reagent/toxin/spore/on_mob_life(mob/living/M) - if(iscarbon(M)) - var/mob/living/carbon/C = M - C.damageoverlaytemp = 60 - C.update_damage_hud() - M.blur_eyes(3) +/datum/reagent/toxin/spore/on_mob_life(mob/living/carbon/C) + C.damageoverlaytemp = 60 + C.update_damage_hud() + C.blur_eyes(3) return ..() /datum/reagent/toxin/spore_burning @@ -259,7 +247,7 @@ toxpwr = 0.5 taste_description = "burning" -/datum/reagent/toxin/spore_burning/on_mob_life(mob/living/M) +/datum/reagent/toxin/spore_burning/on_mob_life(mob/living/carbon/M) M.adjust_fire_stacks(2) M.IgniteMob() return ..() @@ -273,7 +261,7 @@ toxpwr = 0 metabolization_rate = 1.5 * REAGENTS_METABOLISM -/datum/reagent/toxin/chloralhydrate/on_mob_life(mob/living/M) +/datum/reagent/toxin/chloralhydrate/on_mob_life(mob/living/carbon/M) switch(current_cycle) if(1 to 10) M.confused += 2 @@ -296,7 +284,7 @@ toxpwr = 0 metabolization_rate = 1.5 * REAGENTS_METABOLISM -/datum/reagent/toxin/chloralhydratedelayed/on_mob_life(mob/living/M) +/datum/reagent/toxin/chloralhydratedelayed/on_mob_life(mob/living/carbon/M) switch(current_cycle) if(10 to 20) M.confused += 1 @@ -316,7 +304,7 @@ glass_name = "glass of beer" glass_desc = "A freezing pint of beer." -/datum/reagent/toxin/fakebeer/on_mob_life(mob/living/M) +/datum/reagent/toxin/fakebeer/on_mob_life(mob/living/carbon/M) switch(current_cycle) if(1 to 50) M.Sleeping(40, 0) @@ -376,7 +364,7 @@ metabolization_rate = 0.125 * REAGENTS_METABOLISM toxpwr = 0 -/datum/reagent/toxin/polonium/on_mob_life(mob/living/M) +/datum/reagent/toxin/polonium/on_mob_life(mob/living/carbon/M) M.radiation += 4 ..() @@ -390,7 +378,7 @@ overdose_threshold = 30 toxpwr = 0 -/datum/reagent/toxin/histamine/on_mob_life(mob/living/M) +/datum/reagent/toxin/histamine/on_mob_life(mob/living/carbon/M) if(prob(50)) switch(pick(1, 2, 3, 4)) if(1) @@ -423,7 +411,7 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM toxpwr = 1 -/datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/M) +/datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/M) if(prob(5)) holder.add_reagent("histamine", pick(5,15)) holder.remove_reagent("formaldehyde", 1.2) @@ -439,7 +427,7 @@ metabolization_rate = 0.25 * REAGENTS_METABOLISM toxpwr = 0 -/datum/reagent/toxin/venom/on_mob_life(mob/living/M) +/datum/reagent/toxin/venom/on_mob_life(mob/living/carbon/M) toxpwr = 0.2*volume M.adjustBruteLoss((0.3*volume)*REM, 0) . = 1 @@ -458,14 +446,14 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM toxpwr = 0 -/datum/reagent/toxin/fentanyl/on_mob_life(mob/living/M) +/datum/reagent/toxin/fentanyl/on_mob_life(mob/living/carbon/M) M.adjustBrainLoss(3*REM, 150) - . = 1 if(M.toxloss <= 60) M.adjustToxLoss(1*REM, 0) if(current_cycle >= 18) M.Sleeping(40, 0) ..() + return TRUE /datum/reagent/toxin/cyanide name = "Cyanide" @@ -476,7 +464,7 @@ metabolization_rate = 0.125 * REAGENTS_METABOLISM toxpwr = 1.25 -/datum/reagent/toxin/cyanide/on_mob_life(mob/living/M) +/datum/reagent/toxin/cyanide/on_mob_life(mob/living/carbon/M) if(prob(5)) M.losebreath += 1 if(prob(8)) @@ -508,7 +496,7 @@ if(method == TOUCH || method == VAPOR) M.reagents.add_reagent("itching_powder", reac_volume) -/datum/reagent/toxin/itching_powder/on_mob_life(mob/living/M) +/datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M) if(prob(15)) to_chat(M, "You scratch at your head.") M.adjustBruteLoss(0.2*REM, 0) @@ -536,28 +524,26 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM toxpwr = 2.5 -/datum/reagent/toxin/initropidril/on_mob_life(mob/living/M) +/datum/reagent/toxin/initropidril/on_mob_life(mob/living/carbon/C) if(prob(25)) var/picked_option = rand(1,3) switch(picked_option) if(1) - M.Knockdown(60, 0) - . = 1 + C.Knockdown(60, 0) + . = TRUE if(2) - M.losebreath += 10 - M.adjustOxyLoss(rand(5,25), 0) - . = 1 + C.losebreath += 10 + C.adjustOxyLoss(rand(5,25), 0) + . = TRUE if(3) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.undergoing_cardiac_arrest() && H.can_heartattack()) - H.set_heartattack(TRUE) - if(H.stat == CONSCIOUS) - H.visible_message("[H] clutches at [H.p_their()] chest as if [H.p_their()] heart stopped!") - else - H.losebreath += 10 - H.adjustOxyLoss(rand(5,25), 0) - . = 1 + if(!C.undergoing_cardiac_arrest() && C.can_heartattack()) + C.set_heartattack(TRUE) + if(C.stat == CONSCIOUS) + C.visible_message("[C] clutches at [C.p_their()] chest as if [C.p_their()] heart stopped!") + else + C.losebreath += 10 + C.adjustOxyLoss(rand(5,25), 0) + . = TRUE return ..() || . /datum/reagent/toxin/pancuronium @@ -570,10 +556,10 @@ toxpwr = 0 taste_mult = 0 // undetectable, I guess? -/datum/reagent/toxin/pancuronium/on_mob_life(mob/living/M) +/datum/reagent/toxin/pancuronium/on_mob_life(mob/living/carbon/M) if(current_cycle >= 10) M.Stun(40, 0) - . = 1 + . = TRUE if(prob(20)) M.losebreath += 4 ..() @@ -587,12 +573,12 @@ metabolization_rate = 0.75 * REAGENTS_METABOLISM toxpwr = 0 -/datum/reagent/toxin/sodium_thiopental/on_mob_life(mob/living/M) +/datum/reagent/toxin/sodium_thiopental/on_mob_life(mob/living/carbon/M) if(current_cycle >= 10) M.Sleeping(40, 0) M.adjustStaminaLoss(10*REM, 0) ..() - . = 1 + return TRUE /datum/reagent/toxin/sulfonal name = "Sulfonal" @@ -603,7 +589,7 @@ metabolization_rate = 0.125 * REAGENTS_METABOLISM toxpwr = 0.5 -/datum/reagent/toxin/sulfonal/on_mob_life(mob/living/M) +/datum/reagent/toxin/sulfonal/on_mob_life(mob/living/carbon/M) if(current_cycle >= 22) M.Sleeping(40, 0) return ..() @@ -633,7 +619,7 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM toxpwr = 0 -/datum/reagent/toxin/lipolicide/on_mob_life(mob/living/M) +/datum/reagent/toxin/lipolicide/on_mob_life(mob/living/carbon/M) if(M.nutrition <= NUTRITION_LEVEL_STARVING) M.adjustToxLoss(1*REM, 0) M.nutrition = max(M.nutrition - 3, 0) // making the chef more valuable, one meme trap at a time @@ -649,7 +635,7 @@ metabolization_rate = 0.06 * REAGENTS_METABOLISM toxpwr = 1.75 -/datum/reagent/toxin/coniine/on_mob_life(mob/living/M) +/datum/reagent/toxin/coniine/on_mob_life(mob/living/carbon/M) M.losebreath += 5 return ..() @@ -664,22 +650,20 @@ toxpwr = 0 taste_description = "vomit" -/datum/reagent/toxin/spewium/on_mob_life(mob/living/M) +/datum/reagent/toxin/spewium/on_mob_life(mob/living/carbon/C) .=..() - if(current_cycle >=11 && prob(min(50,current_cycle)) && ishuman(M)) - var/mob/living/carbon/human/H = M - H.vomit(10, prob(10), prob(50), rand(0,4), TRUE, prob(30)) - for(var/datum/reagent/toxin/R in M.reagents.reagent_list) + if(current_cycle >=11 && prob(min(50,current_cycle))) + C.vomit(10, prob(10), prob(50), rand(0,4), TRUE, prob(30)) + for(var/datum/reagent/toxin/R in C.reagents.reagent_list) if(R != src) - H.reagents.remove_reagent(R.id,1) + C.reagents.remove_reagent(R.id,1) -/datum/reagent/toxin/spewium/overdose_process(mob/living/M) +/datum/reagent/toxin/spewium/overdose_process(mob/living/carbon/C) . = ..() - if(current_cycle >=33 && prob(15) && ishuman(M)) - var/mob/living/carbon/human/H = M - H.spew_organ() - H.vomit(0, TRUE, TRUE, 4) - to_chat(H, "You feel something lumpy come up as you vomit.") + if(current_cycle >=33 && prob(15)) + C.spew_organ() + C.vomit(0, TRUE, TRUE, 4) + to_chat(C, "You feel something lumpy come up as you vomit.") /datum/reagent/toxin/curare name = "Curare" @@ -690,7 +674,7 @@ metabolization_rate = 0.125 * REAGENTS_METABOLISM toxpwr = 1 -/datum/reagent/toxin/curare/on_mob_life(mob/living/M) +/datum/reagent/toxin/curare/on_mob_life(mob/living/carbon/M) if(current_cycle >= 11) M.Knockdown(60, 0) M.adjustOxyLoss(1*REM, 0) @@ -706,7 +690,7 @@ metabolization_rate = 0.2 * REAGENTS_METABOLISM toxpwr = 0 -/datum/reagent/toxin/heparin/on_mob_life(mob/living/M) +/datum/reagent/toxin/heparin/on_mob_life(mob/living/carbon/M) if(ishuman(M)) var/mob/living/carbon/human/H = M H.bleed_rate = min(H.bleed_rate + 2, 8) @@ -725,7 +709,7 @@ toxpwr = 0.5 taste_description = "spinning" -/datum/reagent/toxin/rotatium/on_mob_life(mob/living/M) +/datum/reagent/toxin/rotatium/on_mob_life(mob/living/carbon/M) if(M.hud_used) if(current_cycle >= 20 && current_cycle%20 == 0) var/list/screens = list(M.hud_used.plane_masters["[FLOOR_PLANE]"], M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"]) @@ -752,7 +736,7 @@ toxpwr = 0.25 taste_description = "skewing" -/datum/reagent/toxin/skewium/on_mob_life(mob/living/M) +/datum/reagent/toxin/skewium/on_mob_life(mob/living/carbon/M) if(M.hud_used) if(current_cycle >= 5 && current_cycle % 3 == 0) var/list/screens = list(M.hud_used.plane_masters["[FLOOR_PLANE]"], M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"]) @@ -787,7 +771,7 @@ metabolization_rate = 0.08 * REAGENTS_METABOLISM toxpwr = 0.15 -/datum/reagent/toxin/anacea/on_mob_life(mob/living/M) +/datum/reagent/toxin/anacea/on_mob_life(mob/living/carbon/M) var/remove_amt = 5 if(holder.has_reagent("calomel") || holder.has_reagent("pen_acid")) remove_amt = 0.5 @@ -840,7 +824,7 @@ toxpwr = 2 acidpwr = 42.0 -/datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/M) +/datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/carbon/M) M.adjustFireLoss(current_cycle/10, 0) . = 1 ..() @@ -856,7 +840,7 @@ var/actual_toxpwr = 5 var/delay = 30 -/datum/reagent/toxin/delayed/on_mob_life(mob/living/M) +/datum/reagent/toxin/delayed/on_mob_life(mob/living/carbon/M) if(current_cycle > delay) holder.remove_reagent(id, actual_metaboliztion_rate * M.metabolism_efficiency) M.adjustToxLoss(actual_toxpwr*REM, 0) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 51fda371c1..e19d2c20d7 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -24,7 +24,7 @@ if(holder && holder.my_atom) var/atom/A = holder.my_atom var/turf/T = get_turf(A) - var/message = "A [reaction_name] reaction has occurred in [get_area_name(T)] [ADMIN_COORDJMP(T)]" + var/message = "A [reaction_name] reaction has occurred in [ADMIN_VERBOSEJMP(T)]" message += " (VV)" var/mob/M = get(A, /mob) @@ -34,7 +34,7 @@ message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]" message_admins(message, 0, 1) - log_game("[reaction_name] chemical mob spawn reaction occuring at [COORD(T)]([get_area_name(T)]) carried by [key_name(M)] with last fingerprint [A.fingerprintslast? A.fingerprintslast : "N/A"]") + log_game("[reaction_name] chemical mob spawn reaction occuring at [AREACOORD(T)] carried by [key_name(M)] with last fingerprint [A.fingerprintslast? A.fingerprintslast : "N/A"]") playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 0fa4ddd479..8b8c009a43 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -6,18 +6,17 @@ /datum/chemical_reaction/reagent_explosion/on_reaction(datum/reagents/holder, created_volume) var/turf/T = get_turf(holder.my_atom) - var/area/A = get_area(T) var/inside_msg if(ismob(holder.my_atom)) var/mob/M = holder.my_atom - inside_msg = " inside [key_name_admin(M)]" + inside_msg = " inside [ADMIN_LOOKUPFLW(M)]" var/lastkey = holder.my_atom.fingerprintslast var/touch_msg = "N/A" if(lastkey) var/mob/toucher = get_mob_by_key(lastkey) touch_msg = "[ADMIN_LOOKUPFLW(toucher)]" - message_admins("Reagent explosion reaction occurred at [A] [ADMIN_COORDJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].") - log_game("Reagent explosion reaction occurred at [A] [COORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." ) + message_admins("Reagent explosion reaction occurred at [ADMIN_VERBOSEJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].") + log_game("Reagent explosion reaction occurred at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." ) var/datum/effect_system/reagents_explosion/e = new() e.set_up(modifier + round(created_volume/strengthdiv, 1), T, 0, 0) e.start() @@ -393,6 +392,7 @@ modifier = -100 mix_message = "The teslium starts to spark as electricity arcs away from it!" mix_sound = 'sound/machines/defib_zap.ogg' + var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE | TESLA_MOB_STUN /datum/chemical_reaction/reagent_explosion/teslium_lightning/on_reaction(datum/reagents/holder, created_volume) var/T1 = created_volume * 20 //100 units : Zap 3 times, with powers 2000/5000/12000. Tesla revolvers have a power of 10000 for comparison. @@ -400,15 +400,15 @@ var/T3 = created_volume * 120 sleep(5) if(created_volume >= 75) - tesla_zap(holder.my_atom, 7, T1) + tesla_zap(holder.my_atom, 7, T1, tesla_flags) playsound(holder.my_atom, 'sound/machines/defib_zap.ogg', 50, 1) sleep(15) if(created_volume >= 40) - tesla_zap(holder.my_atom, 7, T2) + tesla_zap(holder.my_atom, 7, T2, tesla_flags) playsound(holder.my_atom, 'sound/machines/defib_zap.ogg', 50, 1) sleep(15) if(created_volume >= 10) //10 units minimum for lightning, 40 units for secondary blast, 75 units for tertiary blast. - tesla_zap(holder.my_atom, 7, T3) + tesla_zap(holder.my_atom, 7, T3, tesla_flags) playsound(holder.my_atom, 'sound/machines/defib_zap.ogg', 50, 1) ..() diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 0ab98a1f99..c68c0a16b0 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -428,14 +428,13 @@ /datum/chemical_reaction/slime/slimeexplosion/on_reaction(datum/reagents/holder) var/turf/T = get_turf(holder.my_atom) - var/area/A = get_area(T) var/lastkey = holder.my_atom.fingerprintslast var/touch_msg = "N/A" if(lastkey) var/mob/toucher = get_mob_by_key(lastkey) touch_msg = "[ADMIN_LOOKUPFLW(toucher)]." - message_admins("Slime Explosion reaction started at [A] [ADMIN_COORDJMP(T)]. Last Fingerprint: [touch_msg]") - log_game("Slime Explosion reaction started at [A] [COORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].") + message_admins("Slime Explosion reaction started at [ADMIN_VERBOSEJMP(T)]. Last Fingerprint: [touch_msg]") + log_game("Slime Explosion reaction started at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].") T.visible_message("The slime extract begins to vibrate violently !") addtimer(CALLBACK(src, .proc/boom, holder), 50) var/obj/item/slime_extract/M = holder.my_atom diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 054fe077c3..4a40addc5d 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -110,9 +110,9 @@ else if(isturf(target) && reagents.reagent_list.len && thrownby) - add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "at [target][COORD(target)]") - log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] at [COORD(target)].") - message_admins("[key_name_admin(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(target)].") + add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]") + log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].") + message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [ADMIN_VERBOSEJMP(target)].") visible_message("[src] spills its contents all over [target].") reagents.reaction(target, TOUCH) if(QDELETED(src)) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 561dbf2733..911571a3bd 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -180,7 +180,7 @@ Borg Shaker recharge_time = 3 accepts_reagent_upgrades = FALSE - reagent_ids = list("beer", "orangejuice", "grenadine" ,"limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "whiskey", "vodka", "rum", "gin", "tequila", "vermouth", "wine", "kahlua", "cognac", "ale") + reagent_ids = list("beer", "orangejuice", "grenadine", "limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "whiskey", "vodka", "rum", "gin", "tequila", "vermouth", "wine", "kahlua", "cognac", "ale", "milk", "coffee", "banana", "lemonjuice") /obj/item/reagent_containers/borghypo/borgshaker/attack(mob/M, mob/user) return //Can't inject stuff with a shaker, can we? //not with that attitude @@ -235,7 +235,7 @@ Borg Shaker recharge_time = 3 accepts_reagent_upgrades = FALSE - reagent_ids = list("fakebeer") + reagent_ids = list("fakebeer", "fernet") /obj/item/reagent_containers/borghypo/peace name = "Peace Hypospray" diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index 4b797cbd73..4d737657f8 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -226,25 +226,10 @@ desc = "A small bottle of Romerol. The REAL zombie powder." list_reagents = list("romerol" = 30) -/obj/item/reagent_containers/glass/bottle/flu_virion - name = "Flu virion culture bottle" - desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium." - spawned_disease = /datum/disease/advance/flu - -/obj/item/reagent_containers/glass/bottle/epiglottis_virion - name = "Epiglottis virion culture bottle" - desc = "A small bottle. Contains Epiglottis virion culture in synthblood medium." - spawned_disease = /datum/disease/advance/voice_change - -/obj/item/reagent_containers/glass/bottle/liver_enhance_virion - name = "Liver enhancement virion culture bottle" - desc = "A small bottle. Contains liver enhancement virion culture in synthblood medium." - spawned_disease = /datum/disease/advance/heal - -/obj/item/reagent_containers/glass/bottle/hallucigen_virion - name = "Hallucigen virion culture bottle" - desc = "A small bottle. Contains hallucigen virion culture in synthblood medium." - spawned_disease = /datum/disease/advance/hallucigen +/obj/item/reagent_containers/glass/bottle/random_virus + name = "Experimental disease culture bottle" + desc = "A small bottle. Contains an untested viral culture in synthblood medium." + spawned_disease = /datum/disease/advance/random /obj/item/reagent_containers/glass/bottle/pierrot_throat name = "Pierrot's Throat culture bottle" @@ -255,6 +240,11 @@ name = "Rhinovirus culture bottle" desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium." spawned_disease = /datum/disease/advance/cold + +/obj/item/reagent_containers/glass/bottle/flu_virion + name = "Flu virion culture bottle" + desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium." + spawned_disease = /datum/disease/advance/flu /obj/item/reagent_containers/glass/bottle/retrovirus name = "Retrovirus culture bottle" diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 7dfe095a6d..596973a2c4 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -29,9 +29,9 @@ R += A.id + " (" R += num2text(A.volume) + ")," if(isturf(target) && reagents.reagent_list.len && thrownby) - add_logs(thrownby, target, "splashed [english_list(reagents.reagent_list)]", "at [target][COORD(target)]") - log_game("[key_name(thrownby)] splashed [english_list(reagents.reagent_list)] at [COORD(target)].") - message_admins("[key_name_admin(thrownby)] splashed [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(target)].") + add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]") + log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].") + message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].") reagents.reaction(M, TOUCH) add_logs(user, M, "splashed", R) reagents.clear_reagents() @@ -286,10 +286,16 @@ /obj/item/reagent_containers/glass/bucket/equipped(mob/user, slot) ..() - if(slot == SLOT_HEAD && reagents.total_volume) - to_chat(user, "[src]'s contents spill all over you!") - reagents.reaction(user, TOUCH) - reagents.clear_reagents() + if (slot == SLOT_HEAD) + if(reagents.total_volume) + to_chat(user, "[src]'s contents spill all over you!") + reagents.reaction(user, TOUCH) + reagents.clear_reagents() + container_type = NONE + +/obj/item/reagent_containers/glass/bucket/dropped(mob/user) + . = ..() + container_type = initial(container_type) /obj/item/reagent_containers/glass/bucket/equip_to_best_slot(var/mob/M) if(reagents.total_volume) //If there is water in a bucket, don't quick equip it to the head diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm index 2eae912556..fdb6a60894 100644 --- a/code/modules/reagents/reagent_containers/medspray.dm +++ b/code/modules/reagents/reagent_containers/medspray.dm @@ -6,7 +6,7 @@ item_state = "spraycan" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON obj_flags = UNIQUE_RENAME container_type = OPENCONTAINER slot_flags = ITEM_SLOT_BELT diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index f5d46a240e..d2f840cda3 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -151,10 +151,32 @@ icon_state = "pill18" list_reagents = list("insulin" = 50) roundstart = 1 - +///////////////////////////////////////// this pill is used only in a legion mob drop /obj/item/reagent_containers/pill/shadowtoxin name = "black pill" desc = "I wouldn't eat this if I were you." icon_state = "pill9" color = "#454545" - list_reagents = list("shadowmutationtoxin" = 1) \ No newline at end of file + list_reagents = list("shadowmutationtoxin" = 1) +//////////////////////////////////////// drugs +/obj/item/reagent_containers/pill/zoom + name = "zoom pill" + list_reagents = list("synaptizine" = 10, "nicotine" = 10, "methamphetamine" = 1) + + +/obj/item/reagent_containers/pill/happy + name = "happy pill" + list_reagents = list("sugar" = 10, "space_drugs" = 10) + + +/obj/item/reagent_containers/pill/lsd + name = "hallucinogen pill" + list_reagents = list("mushroomhallucinogen" = 15, "mindbreaker" = 15) + + +/obj/item/reagent_containers/pill/aranesp + name = "speedy pill" + list_reagents = list("aranesp" = 10) + + + diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 9a492d9a33..91a22ff1fb 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -6,7 +6,7 @@ item_state = "cleaner" lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON container_type = OPENCONTAINER slot_flags = ITEM_SLOT_BELT throwforce = 0 @@ -50,16 +50,15 @@ user.changeNext_move(CLICK_CD_RANGE*2) user.newtonian_move(get_dir(A, user)) var/turf/T = get_turf(src) - var/area/area = get_area(src) if(reagents.has_reagent("sacid")) - message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [area] [ADMIN_COORDJMP(T)].") - log_game("[key_name(user)] fired sulphuric acid from \a [src] at [area] ([T.x], [T.y], [T.z]).") + message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [ADMIN_VERBOSEJMP(T)].") + log_game("[key_name(user)] fired sulphuric acid from \a [src] at [AREACOORD(T)].") if(reagents.has_reagent("facid")) - message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [area] [ADMIN_COORDJMP(T)].") - log_game("[key_name(user)] fired Fluacid from \a [src] at [area] [COORD(T)].") + message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [ADMIN_VERBOSEJMP(T)].") + log_game("[key_name(user)] fired Fluacid from \a [src] at [AREACOORD(T)].") if(reagents.has_reagent("lube")) - message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [area] [ADMIN_COORDJMP(T)].") - log_game("[key_name(user)] fired Space lube from \a [src] at [area] [COORD(T)].") + message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [ADMIN_VERBOSEJMP(T)].") + log_game("[key_name(user)] fired Space lube from \a [src] at [AREACOORD(T)].") return diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index ddc88301b2..072c1b051f 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -51,6 +51,13 @@ icon_state = "water_high" //I was gonna clean my room... tank_volume = 100000 +/obj/structure/reagent_dispensers/foamtank + name = "firefighting foam tank" + desc = "A tank full of firefighting foam." + icon_state = "foam" + reagent_id = "firefighting_foam" + tank_volume = 500 + /obj/structure/reagent_dispensers/fueltank name = "fuel tank" desc = "A tank full of industrial welding fuel. Do not consume." @@ -78,7 +85,7 @@ ..() if(!QDELETED(src)) //wasn't deleted by the projectile's effects. if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE))) - var/boom_message = "[key_name_admin(P.firer)] triggered a fueltank explosion via projectile." + var/boom_message = "[ADMIN_LOOKUPFLW(P.firer)] triggered a fueltank explosion via projectile." GLOB.bombers += boom_message message_admins(boom_message) var/log_message = "triggered a fueltank explosion via projectile." @@ -102,12 +109,11 @@ W.update_icon() else var/turf/T = get_turf(src) - var/area/A = get_area(T) user.visible_message("[user] catastrophically fails at refilling [user.p_their()] [W.name]!", "That was stupid of you.") - var/message_admins = "[key_name_admin(user)] triggered a fueltank explosion via welding tool at [A] [ADMIN_COORDJMP(T)]." + var/message_admins = "[ADMIN_LOOKUPFLW(user)] triggered a fueltank explosion via welding tool at [ADMIN_VERBOSEJMP(T)]." GLOB.bombers += message_admins message_admins(message_admins) - var/message_log = "triggered a fueltank explosion via welding tool at [A] [COORD(T)]." + var/message_log = "triggered a fueltank explosion via welding tool at [AREACOORD(T)]." user.log_message(message_log, INDIVIDUAL_ATTACK_LOG) log_game("[key_name(user)] [message_log]") log_attack("[key_name(user)] [message_log]") diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 41fbc5092d..8acecf25a1 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -8,7 +8,6 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) icon_state = "conveyor_map" name = "conveyor belt" desc = "A conveyor belt." - anchored = TRUE layer = BELOW_OPEN_DOOR_LAYER var/operating = 0 // 1 if running forward, -1 if backwards, 0 if off var/operable = 1 // true if can operate (no broken segments in this belt run) @@ -32,7 +31,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/machinery/conveyor/inverted/Initialize(mapload) . = ..() if(mapload && !(dir in GLOB.diagonals)) - log_game("### MAPPING ERROR: [src] at [COORD(src)] spawned without using a diagonal dir. Please replace with a normal version.") + log_game("### MAPPING ERROR: [src] at [AREACOORD(src)] spawned without using a diagonal dir. Please replace with a normal version.") // Auto conveyour is always on unless unpowered @@ -215,11 +214,12 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) // /obj/machinery/conveyor_switch - name = "conveyor switch" desc = "A conveyor control switch." icon = 'icons/obj/recycling.dmi' icon_state = "switch-off" + speed_process = TRUE + var/position = 0 // 0 off, -1 reverse, 1 forward var/last_pos = -1 // last direction setting var/operated = 1 // true if just operated @@ -228,11 +228,6 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) var/id = "" // must match conveyor IDs to control them - anchored = TRUE - speed_process = TRUE - - - /obj/machinery/conveyor_switch/Initialize(mapload, newid) . = ..() if (newid) @@ -315,7 +310,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) var/obj/item/conveyor_switch_construct/C = new/obj/item/conveyor_switch_construct(src.loc) C.id = id transfer_fingerprints_to(C) - to_chat(user, "You deattach the conveyor switch.") + to_chat(user, "You detach the conveyor switch.") qdel(src) /obj/machinery/conveyor_switch/oneway diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 6defa464b9..737f50859d 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -4,7 +4,6 @@ /obj/machinery/disposal icon = 'icons/obj/atmospherics/pipes/disposal.dmi' - anchored = TRUE density = TRUE armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30) max_integrity = 200 @@ -97,7 +96,7 @@ return if(user.a_intent != INTENT_HARM) - if((I.flags_1 & ABSTRACT_1) || !user.temporarilyRemoveItemFromInventory(I)) + if((I.item_flags & ABSTRACT) || !user.temporarilyRemoveItemFromInventory(I)) return place_item_in_disposal(I, user) update_icon() diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm index 9b0a0dc21e..624d5e0e05 100644 --- a/code/modules/recycling/disposal/construction.dm +++ b/code/modules/recycling/disposal/construction.dm @@ -52,7 +52,7 @@ layer = initial(layer) else if(ispath(pipe_type, /obj/machinery/disposal/bin)) - // Disposal bins recieve special icon treating + // Disposal bins receive special icon treating if(anchored) icon_state = "disposal" else diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index ba089f6fb2..bc073d5e32 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -62,7 +62,7 @@ return dpdir & (~turn(H.dir, 180)) // transfer the holder through this pipe segment -// overriden for special behaviour +// overridden for special behaviour /obj/structure/disposalpipe/proc/transfer(obj/structure/disposalholder/H) return transfer_to_dir(H, nextdir(H)) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 28609e921d..0a36394bc9 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -423,10 +423,11 @@ /datum/design/healthanalyzer name = "Health Analyzer" id = "healthanalyzer" - build_type = AUTOLATHE + build_type = AUTOLATHE | PROTOLATHE materials = list(MAT_METAL = 500, MAT_GLASS = 50) build_path = /obj/item/healthanalyzer category = list("initial", "Medical") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL /datum/design/pillbottle name = "Pill Bottle" @@ -655,7 +656,7 @@ /datum/design/receiver name = "Modular Receiver" - id = "reciever" + id = "receiver" build_type = AUTOLATHE materials = list(MAT_METAL = 15000) build_path = /obj/item/weaponcrafting/receiver diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index b2d02e9d04..e2d5652a35 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -113,7 +113,15 @@ build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 50) build_path = /obj/item/stack/sheet/cloth - category = list("initial","Leather and Cloth") + category = list("initial","Organic Materials") + +/datum/design/cardboard + name = "Sheet of Cardboard" + id = "cardboard" + build_type = BIOGENERATOR + materials = list(MAT_BIOMASS = 25) + build_path = /obj/item/stack/sheet/cardboard + category = list("initial","Organic Materials") /datum/design/leather name = "Sheet of Leather" @@ -121,7 +129,7 @@ build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 150) build_path = /obj/item/stack/sheet/leather - category = list("initial","Leather and Cloth") + category = list("initial","Organic Materials") /datum/design/secbelt name = "Security Belt" diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 08ffec82ae..0522166f72 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -222,6 +222,14 @@ category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_CARGO +/datum/design/board/bounty + name = "Computer Design (Bounty Console)" + desc = "Allows for the construction of circuit boards used to build a Bounty Console." + id = "bounty" + build_path = /obj/item/circuitboard/computer/bounty + category = list("Computer Boards") + departmental_flags = DEPARTMENTAL_FLAG_CARGO + /datum/design/board/mining name = "Computer Design (Outpost Status Display)" desc = "Allows for the construction of circuit boards used to build an outpost status display console." diff --git a/code/modules/research/designs/electronics_designs.dm b/code/modules/research/designs/electronics_designs.dm index 68bfbfc42e..29ed3505d8 100644 --- a/code/modules/research/designs/electronics_designs.dm +++ b/code/modules/research/designs/electronics_designs.dm @@ -58,7 +58,7 @@ /datum/design/integrated_printer name = "Integrated circuit printer" - desc = "This machine provides all neccesary things for circuitry." + desc = "This machine provides all necessary things for circuitry." id = "icprinter" build_type = PROTOLATHE materials = list(MAT_GLASS = 5000, MAT_METAL = 10000) diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 5771ff9891..89f1eb85b9 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -10,6 +10,22 @@ category = list ("Engineering Machinery") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING +/datum/design/board/circulator + name = "Machine Design (Circulator Board)" + desc = "The circuit board for a circulator." + id = "circulator" + build_path = /obj/item/circuitboard/machine/circulator + category = list ("Engineering Machinery") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/board/teg + name = "Machine Design (TEG Board)" + desc = "The circuit board for a TEG." + id = "teg" + build_path = /obj/item/circuitboard/machine/generator + category = list ("Engineering Machinery") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + /datum/design/board/announcement_system name = "Machine Design (Automated Announcement System Board)" desc = "The circuit board for an automated announcement system." @@ -122,6 +138,14 @@ departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL category = list ("Medical Machinery") +/datum/design/board/vr_sleeper + name = "Machine Design (VR Sleeper Board)" + desc = "The circuit board for a VR sleeper." + id = "vr_sleeper" + build_path = /obj/item/circuitboard/machine/vr_sleeper + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + category = list ("Medical Machinery") + /datum/design/board/cryotube name = "Machine Design (Cryotube Board)" desc = "The circuit board for a cryotube." @@ -324,7 +348,7 @@ /datum/design/board/processor name = "Machine Design (Food/Slime Processor Board)" - desc = "The circuit board for a processing unit. Screwdrive the circuit to switch between food (default) or slime processing." + desc = "The circuit board for a processing unit. Screwdriver the circuit to switch between food (default) or slime processing." id = "processor" build_path = /obj/item/circuitboard/machine/processor category = list ("Misc. Machinery") diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index eaa18aaf43..e4ba942c84 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -651,6 +651,15 @@ construction_time = 120 category = list("Cyborg Upgrade Modules") +/datum/design/borg_transform_clown + name = "Cyborg Upgrade (Clown Module)" + id = "borg_transform_clown" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/transform/clown + materials = list(MAT_METAL=10000, MAT_GLASS=15000, MAT_BANANIUM = 1000) + construction_time = 120 + category = list("Cyborg Upgrade Modules") + /datum/design/borg_upgrade_selfrepair name = "Cyborg Upgrade (Self-repair)" id = "borg_upgrade_selfrepair" @@ -696,6 +705,24 @@ construction_time = 120 category = list("Cyborg Upgrade Modules") +/datum/design/borg_upgrade_trashofholding + name = "Cyborg Upgrade (Trash Bag of Holding)" + id = "borg_upgrade_trashofholding" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/tboh + materials = list(MAT_METAL=10000, MAT_GOLD=1500, MAT_URANIUM=250, MAT_PLASMA=1500) + construction_time = 120 + category = list("Cyborg Upgrade Modules") + +/datum/design/borg_upgrade_advancedmop + name = "Cyborg Upgrade (Advanced Mop)" + id = "borg_upgrade_advancedmop" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/amop + materials = list(MAT_METAL=10000, MAT_GLASS=200, MAT_TITANIUM=1000) + construction_time = 120 + category = list("Cyborg Upgrade Modules") + /datum/design/borg_upgrade_expand name = "Cyborg Upgrade (Expand)" id = "borg_upgrade_expand" @@ -751,17 +778,6 @@ construction_time = 50 category = list("Misc") -/datum/design/drone_shell - name = "Drone Shell" - desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs." - id = "drone_shell" - build_type = MECHFAB | PROTOLATHE - materials = list(MAT_METAL = 800, MAT_GLASS = 350) - construction_time=150 - build_path = /obj/item/drone_shell - category = list("Misc") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING - /datum/design/synthetic_flash name = "Flash" desc = "When a problem arises, SCIENCE is the solution." diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 9df3df3c31..5f1e5ea520 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -200,7 +200,17 @@ materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - + +/datum/design/healthanalyzer_advanced + name = "advanced health analyzer" + desc = "A hand-held body scanner able to distinguish vital signs of the subject with high accuracy." + id = "healthanalyzer_advanced" + build_path = /obj/item/healthanalyzer/advanced + build_type = PROTOLATHE + materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 2000, MAT_GOLD = 1500) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + ///////////////////////////////////////// //////////Cybernetic Implants//////////// ///////////////////////////////////////// @@ -283,7 +293,7 @@ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL /datum/design/cyberimp_xray - name = "X-Ray Eyes" + name = "X-ray Eyes" desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile." id = "ci-xray" build_type = PROTOLATHE | MECHFAB diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index b2a6c34269..18934d021c 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -14,7 +14,7 @@ /datum/design/bluespace_pod name = "Supply Drop Pod Upgrade Disk" - desc = "Allows the Cargo Express Console to call down the Bluespace Drop Pod, greatly increasing user saftey."//who? + desc = "Allows the Cargo Express Console to call down the Bluespace Drop Pod, greatly increasing user safety."//who? id = "bluespace_pod"//the coder reading this build_type = PROTOLATHE materials = list(MAT_GLASS = 1000) diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index b30470036e..e1648559a7 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -59,7 +59,7 @@ /datum/design/light_replacer name = "Light Replacer" - desc = "A device to automatically replace lights. Refill with working lightbulbs." + desc = "A device to automatically replace lights. Refill with working light bulbs." id = "light_replacer" build_type = PROTOLATHE materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000) diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 2fcb20a498..0c7b7327fa 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -181,7 +181,7 @@ departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL /datum/design/xray - name = "Xray Laser Gun" + name = "X-ray Laser Gun" desc = "Not quite as menacing as it sounds" id = "xray_laser" build_type = PROTOLATHE diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index b4ab8872e0..37a83eb04f 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -79,7 +79,6 @@ Note: Must be placed within 3 tiles of the R&D Console use_power(250) if(thing == loaded_item) loaded_item = null - update_icon() var/list/food = thing.GetDeconstructableContents() for(var/obj/item/innerthing in food) destroy_item(innerthing, TRUE) @@ -90,10 +89,13 @@ Note: Must be placed within 3 tiles of the R&D Console var/obj/item/stack/sheet/S = thing if(S.amount > 1 && !innermode) S.amount-- + loaded_item = S else qdel(S) else qdel(thing) + if (!innermode) + update_icon() return TRUE /obj/machinery/rnd/destructive_analyzer/proc/user_try_decon_id(id, mob/user) @@ -104,9 +106,6 @@ Note: Must be placed within 3 tiles of the R&D Console var/datum/techweb_node/TN = get_techweb_node_by_id(id) if(!istype(TN)) return FALSE - var/list/can_boost = techweb_item_boost_check(loaded_item) - if(isnull(can_boost[id])) - return FALSE var/dpath = loaded_item.type var/list/worths = TN.boost_item_paths[dpath] var/list/differences = list() @@ -116,7 +115,7 @@ Note: Must be placed within 3 tiles of the R&D Console var/value = min(worths[i], TN.research_costs[i]) - used if(value > 0) differences[i] = value - if(!length(differences)) + if(length(worths) && !length(differences)) return FALSE var/choice = input("Are you sure you want to destroy [loaded_item] to [!length(worths) ? "reveal [TN.display_name]" : "boost [TN.display_name] by [json_encode(differences)] point\s"]?") in list("Proceed", "Cancel") if(choice == "Cancel") @@ -131,7 +130,12 @@ Note: Must be placed within 3 tiles of the R&D Console var/list/point_value = techweb_item_point_check(loaded_item) if(linked_console.stored_research.deconstructed_items[loaded_item.type]) point_value = list() - var/choice = input("Are you sure you want to destroy [loaded_item] for [length(point_value) ? "[json_encode(point_value)] points" : "material reclamation"]?") in list("Proceed", "Cancel") + var/user_mode_string = "" + if(length(point_value)) + user_mode_string = " for [json_encode(point_value)] points" + else if(loaded_item.materials.len) + user_mode_string = " for material reclamation" + var/choice = input("Are you sure you want to destroy [loaded_item][user_mode_string]?") in list("Proceed", "Cancel") if(choice == "Cancel") return FALSE if(QDELETED(loaded_item) || QDELETED(linked_console) || !user.Adjacent(linked_console) || QDELETED(src)) diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index a0eb2ada49..ccd9872b46 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -19,11 +19,10 @@ #define FAIL 8 /obj/machinery/rnd/experimentor name = "\improper E.X.P.E.R.I-MENTOR" - desc = "A \"replacement\" for the deconstructive analyzer with a slight tendency to catastrophically fail." + desc = "A \"replacement\" for the destructive analyzer with a slight tendency to catastrophically fail." icon = 'icons/obj/machines/heavy_lathe.dmi' icon_state = "h_lathe" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE circuit = /obj/item/circuitboard/machine/experimentor var/recentlyExperimented = 0 @@ -45,7 +44,7 @@ /obj/machinery/rnd/experimentor/proc/SetTypeReactions() for(var/I in typesof(/obj/item)) - if(istype(I, /obj/item/relic)) + if(ispath(I, /obj/item/relic)) item_reactions["[I]"] = SCANTYPE_DISCOVER else item_reactions["[I]"] = pick(SCANTYPE_POKE,SCANTYPE_IRRADIATE,SCANTYPE_GAS,SCANTYPE_HEAT,SCANTYPE_COLD,SCANTYPE_OBLITERATE) @@ -53,7 +52,7 @@ if(ispath(I, /obj/item/stock_parts) || ispath(I, /obj/item/grenade/chem_grenade) || ispath(I, /obj/item/kitchen)) var/obj/item/tempCheck = I if(initial(tempCheck.icon_state) != null) //check it's an actual usable item, in a hacky way - if(istype(I, /obj/item/grenade/chem_grenade/tuberculosis)) + if(ispath(I, /obj/item/grenade/chem_grenade/tuberculosis)) continue valid_items["[I]"] += 15 @@ -250,7 +249,7 @@ var/mob/living/target = locate(/mob/living) in oview(7,src) if(target) var/obj/item/throwing = loaded_item - investigate_log("Experimentor has thrown [loaded_item] at [target]", INVESTIGATE_EXPERIMENTOR) + investigate_log("Experimentor has thrown [loaded_item] at [key_name(target)]", INVESTIGATE_EXPERIMENTOR) ejectItem() if(throwing) throwing.throw_at(target, 10, 1) @@ -372,7 +371,7 @@ throwSmoke(loc) for(var/mob/living/m in oview(1, src)) m.apply_damage(5, BURN, pick(BODY_ZONE_HEAD,BODY_ZONE_CHEST,BODY_ZONE_PRECISE_GROIN)) - investigate_log("Experimentor has dealt minor burn damage to [m]", INVESTIGATE_EXPERIMENTOR) + investigate_log("Experimentor has dealt minor burn damage to [key_name(m)]", INVESTIGATE_EXPERIMENTOR) ejectItem() //////////////////////////////////////////////////////////////////////////////////////////////// if(exp == SCANTYPE_COLD) @@ -513,8 +512,8 @@ /obj/machinery/rnd/experimentor/proc/warn_admins(user, ReactionName) var/turf/T = get_turf(user) - message_admins("Experimentor reaction: [ReactionName] generated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)]",0,1) - log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in ([T.x],[T.y],[T.z])") + message_admins("Experimentor reaction: [ReactionName] generated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(T)]") + log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in [AREACOORD(T)]") #undef SCANTYPE_POKE #undef SCANTYPE_IRRADIATE @@ -659,8 +658,8 @@ //Admin Warning proc for relics /obj/item/relic/proc/warn_admins(mob/user, RelicType, priority = 1) var/turf/T = get_turf(src) - var/log_msg = "[RelicType] relic used by [key_name(user)] in ([T.x],[T.y],[T.z])" + var/log_msg = "[RelicType] relic used by [key_name(user)] in [AREACOORD(T)]" if(priority) //For truly dangerous relics that may need an admin's attention. BWOINK! - message_admins("[RelicType] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) + message_admins("[RelicType] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") log_game(log_msg) investigate_log(log_msg, "experimentor") diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 76712dd55e..75ed53e936 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -24,7 +24,7 @@ create_reagents(0) materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), 0, - FALSE, list(/obj/item/stack), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) + TRUE, list(/obj/item/stack), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) materials.precise_insertion = TRUE RefreshParts() matching_designs = list() diff --git a/code/modules/research/machinery/departmental_circuit_imprinter.dm b/code/modules/research/machinery/departmental_circuit_imprinter.dm index c51288b685..e47bd97494 100644 --- a/code/modules/research/machinery/departmental_circuit_imprinter.dm +++ b/code/modules/research/machinery/departmental_circuit_imprinter.dm @@ -1,6 +1,6 @@ /obj/machinery/rnd/production/circuit_imprinter/department name = "department circuit imprinter" - desc = "A special circuit imprinter with a built in interface meant for departmental usage, with built in ExoSync recievers allowing it to print designs researched that match its ROM-encoded department type." + desc = "A special circuit imprinter with a built in interface meant for departmental usage, with built in ExoSync receivers allowing it to print designs researched that match its ROM-encoded department type." icon_state = "circuit_imprinter" container_type = OPENCONTAINER circuit = /obj/item/circuitboard/machine/circuit_imprinter/department diff --git a/code/modules/research/machinery/departmental_protolathe.dm b/code/modules/research/machinery/departmental_protolathe.dm index ddc0b7c749..f91f3282d5 100644 --- a/code/modules/research/machinery/departmental_protolathe.dm +++ b/code/modules/research/machinery/departmental_protolathe.dm @@ -1,6 +1,6 @@ /obj/machinery/rnd/production/protolathe/department name = "department protolathe" - desc = "A special protolathe with a built in interface meant for departmental usage, with built in ExoSync recievers allowing it to print designs researched that match its ROM-encoded department type." + desc = "A special protolathe with a built in interface meant for departmental usage, with built in ExoSync receivers allowing it to print designs researched that match its ROM-encoded department type." icon_state = "protolathe" container_type = OPENCONTAINER circuit = /obj/item/circuitboard/machine/protolathe/department diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 8e99b64239..0ba9312314 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -594,9 +594,9 @@ Nothing else in the console has ID requirements. l += "This item is worth:
    [techweb_point_display_generic(point_values)]!" l += "[RDSCREEN_NOBREAK]" - var/list/materials = linked_destroy.loaded_item.materials - if (materials.len) - l += "
    Material Reclamation" + if(!(linked_destroy.loaded_item.resistance_flags & INDESTRUCTIBLE)) + var/list/materials = linked_destroy.loaded_item.materials + l += "
    [materials.len? "Material Reclamation" : "Destroy Item"]" for (var/M in materials) l += "* [CallMaterialName(M)] x [materials[M]]" l += "
    [RDSCREEN_NOBREAK]" @@ -861,7 +861,7 @@ Nothing else in the console has ID requirements. switch(ls["disconnect"]) if("destroy") if(QDELETED(linked_destroy)) - say("No Deconstructive Analyzer Linked!") + say("No Destructive Analyzer Linked!") return linked_destroy.linked_console = null linked_destroy = null @@ -887,9 +887,10 @@ Nothing else in the console has ID requirements. say("Ejecting Technology Disk") if(ls["deconstruct"]) if(QDELETED(linked_destroy)) - say("No Deconstructive Analyzer Linked!") + say("No Destructive Analyzer Linked!") return - linked_destroy.user_try_decon_id(ls["deconstruct"], usr) + if(!linked_destroy.user_try_decon_id(ls["deconstruct"], usr)) + say("Destructive analysis failed!") //Protolathe Materials if(ls["disposeP"]) //Causes the protolathe to dispose of a single reagent (all of it) if(QDELETED(linked_lathe)) @@ -995,7 +996,7 @@ Nothing else in the console has ID requirements. screen = RDSCREEN_DESIGNDISK if(ls["eject_item"]) //Eject the item inside the destructive analyzer. if(QDELETED(linked_destroy)) - say("No Deconstructive Analyzer Linked!") + say("No Destructive Analyzer Linked!") return if(linked_destroy.busy) to_chat(usr, "The destructive analyzer is busy at the moment.") diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 47f34a9b15..23d515cf88 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -6,7 +6,6 @@ name = "R&D Device" icon = 'icons/obj/machines/research.dmi' density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE var/busy = FALSE var/hacked = FALSE @@ -45,6 +44,9 @@ return if(default_deconstruction_crowbar(O)) return + if(panel_open && is_wire_tool(O)) + wires.interact(user) + return TRUE if(is_refillable() && O.is_drainable()) return FALSE //inserting reagents into the machine if(Insert_Item(O, user)) @@ -66,6 +68,7 @@ to_chat(user, "You can't load [src] while it's opened!") return FALSE if(disabled) + to_chat(user, "The insertion belts of [src] won't engage!") return FALSE if(requires_console && !linked_console) to_chat(user, "[src] must be linked to an R&D console first!") diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 98da69b646..20e05782ef 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -41,10 +41,12 @@ working = TRUE /obj/machinery/rnd/server/emp_act() + . = ..() + if(. & EMP_PROTECT_SELF) + return stat |= EMPED addtimer(CALLBACK(src, .proc/unemp), 600) refresh_working() - return ..() /obj/machinery/rnd/server/proc/unemp() stat &= ~EMPED diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 4bd318de21..af004c4701 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -58,10 +58,8 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' -//Sorts stock parts inside an RPED by their rating. -//Only use /obj/item/stock_parts/ with this sort proc! -/proc/cmp_rped_sort(obj/item/stock_parts/A, obj/item/stock_parts/B) - return B.rating - A.rating +/proc/cmp_rped_sort(obj/item/A, obj/item/B) + return B.get_part_rating() - A.get_part_rating() /obj/item/stock_parts name = "stock part" diff --git a/code/modules/research/techweb/__techweb_helpers.dm b/code/modules/research/techweb/__techweb_helpers.dm index 1b814ede1d..1e90f0f28d 100644 --- a/code/modules/research/techweb/__techweb_helpers.dm +++ b/code/modules/research/techweb/__techweb_helpers.dm @@ -72,43 +72,44 @@ SSresearch.invalid_design_ids[id] = 1 /proc/node_boost_error(id, message) + WARNING("Invalid boost information for node \[[id]\]: [message]") SSresearch.invalid_node_boost[id] = message /proc/verify_techweb_nodes() for(var/n in SSresearch.techweb_nodes) var/datum/techweb_node/N = SSresearch.techweb_nodes[n] if(!istype(N)) - stack_trace("WARNING: Invalid research node with ID [n] detected and removed.") + WARNING("Invalid research node with ID [n] detected and removed.") SSresearch.techweb_nodes -= n research_node_id_error(n) for(var/p in N.prereq_ids) var/datum/techweb_node/P = SSresearch.techweb_nodes[p] if(!istype(P)) - stack_trace("WARNING: Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.") + WARNING("Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.") N.prereq_ids -= p research_node_id_error(p) for(var/d in N.design_ids) var/datum/design/D = SSresearch.techweb_designs[d] if(!istype(D)) - stack_trace("WARNING: Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.") + WARNING("Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.") N.designs -= d design_id_error(d) for(var/p in N.prerequisites) var/datum/techweb_node/P = N.prerequisites[p] if(!istype(P)) - stack_trace("WARNING: Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.") + WARNING("Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.") N.prerequisites -= p research_node_id_error(p) for(var/u in N.unlocks) var/datum/techweb_node/U = N.unlocks[u] if(!istype(U)) - stack_trace("WARNING: Invalid research unlock node with ID [u] detected in node [N.display_name]\[[N.id]\] removed.") + WARNING("Invalid research unlock node with ID [u] detected in node [N.display_name]\[[N.id]\] removed.") N.unlocks -= u research_node_id_error(u) for(var/d in N.designs) var/datum/design/D = N.designs[d] if(!istype(D)) - stack_trace("WARNING: Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.") + WARNING("Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.") N.designs -= d design_id_error(d) for(var/p in N.boost_item_paths) @@ -116,15 +117,15 @@ N.boost_item_paths -= p node_boost_error(N.id, "[p] is not a valid path.") var/list/points = N.boost_item_paths[p] - if(!islist(points)) - N.boost_item_paths -= p - node_boost_error(N.id, "No valid list.") - else + if(islist(points)) for(var/i in points) if(!isnum(points[i])) node_boost_error(N.id, "[points[i]] is not a valid number.") else if(!SSresearch.point_types[i]) node_boost_error(N.id, "[i] is not a valid point type.") + else if(!isnull(points)) + N.boost_item_paths -= p + node_boost_error(N.id, "No valid list.") CHECK_TICK /proc/verify_techweb_designs() diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm index a34476ce1c..7c23609c21 100644 --- a/code/modules/research/techweb/_techweb.dm +++ b/code/modules/research/techweb/_techweb.dm @@ -106,19 +106,19 @@ l[i] = amount modify_point_list(l) -/datum/techweb/proc/copy_research_to(datum/techweb/reciever, unlock_hidden = TRUE) //Adds any missing research to theirs. +/datum/techweb/proc/copy_research_to(datum/techweb/receiver, unlock_hidden = TRUE) //Adds any missing research to theirs. for(var/i in researched_nodes) CHECK_TICK - reciever.research_node_id(i, TRUE, FALSE) + receiver.research_node_id(i, TRUE, FALSE) for(var/i in researched_designs) CHECK_TICK - reciever.add_design_by_id(i) + receiver.add_design_by_id(i) if(unlock_hidden) - for(var/i in reciever.hidden_nodes) + for(var/i in receiver.hidden_nodes) CHECK_TICK if(!hidden_nodes[i]) - reciever.hidden_nodes -= i //We can see it so let them see it too. - reciever.recalculate_nodes() + receiver.hidden_nodes -= i //We can see it so let them see it too. + receiver.recalculate_nodes() /datum/techweb/proc/copy() var/datum/techweb/returned = new() diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 847519f042..a65ad7de0a 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -18,7 +18,7 @@ display_name = "Biological Technology" description = "What makes us tick." //the MC, silly! prereq_ids = list("base") - design_ids = list("chem_heater", "chem_master", "chem_dispenser", "sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser") + design_ids = list("chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -27,7 +27,7 @@ display_name = "Advanced Biotechnology" description = "Advanced Biotechnology" prereq_ids = list("biotech") - design_ids = list("piercesyringe", "smoke_machine", "plasmarefiller", "limbgrower", "defibrillator", "meta_beaker") + design_ids = list("piercesyringe", "smoke_machine", "plasmarefiller", "limbgrower", "defibrillator", "meta_beaker", "healthanalyzer_advanced") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -130,7 +130,7 @@ display_name = "Advanced Power Manipulation" description = "How to get more zap." prereq_ids = list("engineering") - design_ids = list("smes", "super_cell", "hyper_cell", "super_capacitor", "superpacman", "mrspacman", "power_turbine", "power_turbine_console", "power_compressor") + design_ids = list("smes", "super_cell", "hyper_cell", "super_capacitor", "superpacman", "mrspacman", "power_turbine", "power_turbine_console", "power_compressor", "circulator", "teg") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -198,7 +198,7 @@ display_name = "Basic Robotics Research" description = "Programmable machines that make our lives lazier." prereq_ids = list("base") - design_ids = list("paicard", "drone_shell") + design_ids = list("paicard") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -207,7 +207,7 @@ display_name = "Advanced Robotics Research" description = "It can even do the dishes!" prereq_ids = list("robotics") - design_ids = list("borg_upgrade_diamonddrill") + design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_trashofholding", "borg_upgrade_advancedmop") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -320,7 +320,7 @@ description = "Honk?!" prereq_ids = list("base") design_ids = list("air_horn", "honker_main", "honker_peri", "honker_targ", "honk_chassis", "honk_head", "honk_torso", "honk_left_arm", "honk_right_arm", - "honk_left_leg", "honk_right_leg", "mech_banana_mortar", "mech_mousetrap_mortar", "mech_honker", "mech_punching_face", "implant_trombone") + "honk_left_leg", "honk_right_leg", "mech_banana_mortar", "mech_mousetrap_mortar", "mech_honker", "mech_punching_face", "implant_trombone", "borg_transform_clown") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 diff --git a/code/modules/research/xenobiology/crossbreeding/_corecross.dm b/code/modules/research/xenobiology/crossbreeding/_corecross.dm index 45cc0c1efc..43f23d013d 100644 --- a/code/modules/research/xenobiology/crossbreeding/_corecross.dm +++ b/code/modules/research/xenobiology/crossbreeding/_corecross.dm @@ -39,7 +39,7 @@ To add a crossbreed: /obj/item/slimecross/Initialize() ..() - name = colour + " " + name + name = effect + " " + colour + " extract" var/itemcolor = "#FFFFFF" switch(colour) if("orange") diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index b100e73bc7..ca334497a7 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -564,6 +564,7 @@ datum/status_effect/stabilized/blue/on_remove() /datum/status_effect/stabilized/cerulean/on_remove() if(clone) clone.visible_message("[clone] dissolves into a puddle of goo!") + clone.unequip_everything() qdel(clone) /datum/status_effect/stabilized/pyrite @@ -760,9 +761,18 @@ datum/status_effect/stabilized/blue/on_remove() var/mob/living/simple_animal/familiar /datum/status_effect/stabilized/gold/tick() - if(!familiar) - familiar = create_random_mob(get_turf(owner.loc), FRIENDLY_SPAWN) + var/obj/item/slimecross/stabilized/gold/linked = linked_extract + if(QDELETED(familiar)) + familiar = new linked.mob_type(get_turf(owner.loc)) + familiar.name = linked.mob_name familiar.del_on_death = TRUE + familiar.copy_known_languages_from(owner, FALSE) + if(linked.saved_mind) + linked.saved_mind.transfer_to(familiar) + familiar.ckey = linked.saved_mind.key + else + if(familiar.mind) + linked.saved_mind = familiar.mind return ..() /datum/status_effect/stabilized/gold/on_remove() diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm index 7183ece045..8ae7bf8d54 100644 --- a/code/modules/research/xenobiology/crossbreeding/charged.dm +++ b/code/modules/research/xenobiology/crossbreeding/charged.dm @@ -386,6 +386,9 @@ Charged extracts: if(user == M) to_chat(user, "You can't drink the love potion. What are you, a narcissist?") return ..() + if(M.has_status_effect(STATUS_EFFECT_INLOVE)) + to_chat(user, "[M] is already lovestruck!") + return ..() M.visible_message("[user] starts to feed [M] a love potion!", "[user] starts to feed you a love potion!") @@ -393,10 +396,11 @@ Charged extracts: if(!do_after(user, 50, target = M)) return to_chat(user, "You feed [M] the love potion!") - to_chat(M, "You develop feelings for [user], and anyone [p_they(user)] like.") - if(!("[REF(user)]" in M.faction) && M.mind) - M.mind.store_memory("You have strong feelings for [user].") + to_chat(M, "You develop feelings for [user], and anyone [user.p_they()] like.") + if(M.mind) + M.mind.store_memory("You are in love with [user].") M.faction |= "[REF(user)]" + M.apply_status_effect(STATUS_EFFECT_INLOVE, user) qdel(src) /obj/item/slimepotion/peacepotion diff --git a/code/modules/research/xenobiology/crossbreeding/recurring.dm b/code/modules/research/xenobiology/crossbreeding/recurring.dm index cc36bbb215..8a6e5c3cbb 100644 --- a/code/modules/research/xenobiology/crossbreeding/recurring.dm +++ b/code/modules/research/xenobiology/crossbreeding/recurring.dm @@ -21,6 +21,7 @@ Recurring extracts: extract.desc = desc extract.icon = icon extract.icon_state = icon_state + extract.color = color extract.recurring = TRUE src.forceMove(extract) START_PROCESSING(SSobj,src) diff --git a/code/modules/research/xenobiology/crossbreeding/reproductive.dm b/code/modules/research/xenobiology/crossbreeding/reproductive.dm index 878e17c1e7..2f6ca9555a 100644 --- a/code/modules/research/xenobiology/crossbreeding/reproductive.dm +++ b/code/modules/research/xenobiology/crossbreeding/reproductive.dm @@ -19,7 +19,7 @@ Reproductive extracts: return if(istype(O, /obj/item/storage/bag/bio)) var/list/inserted = list() - O.SendSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/monkeycube, src, 1, null, null, user, inserted) + SEND_SIGNAL(O, COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/monkeycube, src, 1, null, null, user, inserted) if(inserted.len) var/obj/item/reagent_containers/food/snacks/monkeycube/M = inserted[1] if(istype(M)) diff --git a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm index 7bb723bc3d..93e5a8e739 100644 --- a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm +++ b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm @@ -4,7 +4,7 @@ Self-sustaining extracts: */ /obj/item/slimecross/selfsustaining name = "self-sustaining extract" - effect = "selfsustaining" + effect = "self-sustaining" icon_state = "selfsustaining" var/extract_type = /obj/item/slime_extract @@ -23,6 +23,7 @@ Self-sustaining extracts: A.extract = X A.icon = icon A.icon_state = icon_state + A.color = color qdel(src) /obj/item/autoslime/Initialize() diff --git a/code/modules/research/xenobiology/crossbreeding/stabilized.dm b/code/modules/research/xenobiology/crossbreeding/stabilized.dm index aea4f47576..fe1b498667 100644 --- a/code/modules/research/xenobiology/crossbreeding/stabilized.dm +++ b/code/modules/research/xenobiology/crossbreeding/stabilized.dm @@ -96,6 +96,49 @@ Stabilized extracts: /obj/item/slimecross/stabilized/gold colour = "gold" + var/mob_type + var/datum/mind/saved_mind + var/mob_name = "Familiar" + +/obj/item/slimecross/stabilized/gold/proc/generate_mobtype() + var/static/list/mob_spawn_pets = list() + if(mob_spawn_pets.len <= 0) + for(var/T in typesof(/mob/living/simple_animal)) + var/mob/living/simple_animal/SA = T + switch(initial(SA.gold_core_spawnable)) + if(FRIENDLY_SPAWN) + mob_spawn_pets += T + mob_type = pick(mob_spawn_pets) + +/obj/item/slimecross/stabilized/gold/Initialize() + ..() + generate_mobtype() + +/obj/item/slimecross/stabilized/gold/attack_self(mob/user) + var/choice = input(user, "Which do you want to reset?", "Familiar Adjustment") as null|anything in list("Familiar Location", "Familiar Species", "Familiar Sentience", "Familiar Name") + if(!user.canUseTopic(src, BE_CLOSE)) + return + if(isliving(user)) + var/mob/living/L = user + if(L.has_status_effect(/datum/status_effect/stabilized/gold)) + L.remove_status_effect(/datum/status_effect/stabilized/gold) + if(choice == "Familiar Location") + to_chat(user, "You prod [src], and it shudders slightly.") + START_PROCESSING(SSobj, src) + if(choice == "Familiar Species") + to_chat(user, "You squeeze [src], and a shape seems to shift around inside.") + generate_mobtype() + START_PROCESSING(SSobj, src) + if(choice == "Familiar Sentience") + to_chat(user, "You poke [src], and it lets out a glowing pulse.") + saved_mind = null + START_PROCESSING(SSobj, src) + if(choice == "Familiar Name") + var/newname = copytext(sanitize(input(user, "Would you like to change the name of [mob_name]", "Name change", mob_name) as null|text),1,MAX_NAME_LEN) + if(newname) + mob_name = newname + to_chat(user, "You speak softly into [src], and it shakes slightly in response.") + START_PROCESSING(SSobj, src) /obj/item/slimecross/stabilized/oil colour = "oil" diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index a5998400c8..b8cc61df97 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -702,7 +702,7 @@ imp.implant(SM, user) SM.access_card = new /obj/item/card/id/syndicate(SM) - SM.access_card.flags_1 |= NODROP_1 + SM.access_card.item_flags |= NODROP /obj/item/slimepotion/transference name = "consciousness transference potion" @@ -725,7 +725,11 @@ if(SM.sentience_type != animal_type) to_chat(user, "You cannot transfer your consciousness to [SM]." ) return ..() - if(jobban_isbanned(user, ROLE_ALIEN)) //ideally sentience and trasnference potions should be their own unique role. + var/jb = jobban_isbanned(user, ROLE_ALIEN) + if(QDELETED(src) || QDELETED(M) || QDELETED(user)) + return + + if(jb) //ideally sentience and trasnference potions should be their own unique role. to_chat(user, "Your mind goes blank as you attempt to use the potion.") return @@ -909,7 +913,7 @@ /obj/item/slimepotion/slime/slimeradio name = "bluespace radio potion" - desc = "A strange chemical that grants those who ingest it the ability to broadcast and recieve subscape radio waves." + desc = "A strange chemical that grants those who ingest it the ability to broadcast and receive subscape radio waves." icon = 'icons/obj/chemical.dmi' icon_state = "potgrey" diff --git a/code/modules/ruins/lavalandruin_code/surface.dm b/code/modules/ruins/lavalandruin_code/surface.dm index b2312ded87..72896c08a3 100644 --- a/code/modules/ruins/lavalandruin_code/surface.dm +++ b/code/modules/ruins/lavalandruin_code/surface.dm @@ -2,4 +2,21 @@ /obj/item/paper/fluff/stations/lavaland/surface/henderson_report name = "Important Notice - Mrs. Henderson" - info = "Nothing of interest to report." \ No newline at end of file + info = "Nothing of interest to report." + +//ratvar + +/obj/structure/dead_ratvar + name = "hulking wreck" + desc = "The remains of a monstrous war machine." + icon = 'icons/obj/lavaland/dead_ratvar.dmi' + icon_state = "dead_ratvar" + flags_1 = ON_BORDER_1 + appearance_flags = 0 + layer = FLY_LAYER + anchored = TRUE + density = TRUE + bound_width = 416 + bound_height = 64 + pixel_y = -10 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm index cf45b91dfe..26e5f1a9c0 100644 --- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm @@ -74,6 +74,7 @@ pixel_y = -32 mouse_opacity = MOUSE_OPACITY_TRANSPARENT opacity = TRUE + anchored = TRUE /obj/structure/opacity_blocker/singularity_pull() return 0 @@ -176,8 +177,8 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) message_admins("Legion took damage while the necropolis gate was closed, and has released itself!") log_game("Legion took damage while the necropolis gate was closed and released itself.") else - message_admins("[user ? key_name_admin(user):"Unknown"] has released Legion!") - log_game("[user ? key_name(user):"Unknown"] released Legion.") + message_admins("[user ? ADMIN_LOOKUPFLW(user):"Unknown"] has released Legion!") + log_game("[user ? key_name(user) : "Unknown"] released Legion.") var/sound/legion_sound = sound('sound/creatures/legion_spawn.ogg') for(var/mob/M in GLOB.player_list) diff --git a/code/modules/ruins/spaceruin_code/listeningstation.dm b/code/modules/ruins/spaceruin_code/listeningstation.dm index ff0bad8257..8efeaaabff 100644 --- a/code/modules/ruins/spaceruin_code/listeningstation.dm +++ b/code/modules/ruins/spaceruin_code/listeningstation.dm @@ -32,11 +32,11 @@ /obj/item/paper/fluff/ruins/listeningstation/receipt name = "receipt" - info = "1 x Stechtkin pistol - $600
    1 x silencer - $200
    shipping charge - $4360
    total - $5160" + info = "1 x Stechkin pistol - $600
    1 x silencer - $200
    shipping charge - $4360
    total - $5160" /obj/item/paper/fluff/ruins/listeningstation/odd_report name = "odd report" - info = "I wonder how much longer they will accept my empty reports. They will cancel the case soon without results. When the pickup comes, I will tell them I have lost faith in our cause, and beg them to consider a diplomatic solution. How many nuclear teams have been dispatched with those nukes? I must try and prevent more from ever being sent. If they will not listen to reason, I will detonate the warehouse myself. Maybe some day in the immediate future, space will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that stabilized your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should it ever rear its ugly head again. -Donk Co. Operative #451" + info = "I wonder how much longer they will accept my empty reports. They will cancel the case soon without results. When the pickup comes, I will tell them I have lost faith in our cause, and beg them to consider a diplomatic solution. How many nuclear teams have been dispatched with those nukes? I must try and prevent more from ever being sent. If they will not listen to reason, I will detonate the warehouse myself. Maybe some day in the immediate future, space will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that stabilized your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should it ever rear its ugly head again. -DonkCo Operative #451" /obj/item/paper/fluff/ruins/listeningstation/briefing name = "mission briefing" diff --git a/code/modules/ruins/spaceruin_code/oldstation.dm b/code/modules/ruins/spaceruin_code/oldstation.dm index d023760061..b216145023 100644 --- a/code/modules/ruins/spaceruin_code/oldstation.dm +++ b/code/modules/ruins/spaceruin_code/oldstation.dm @@ -1,7 +1,7 @@ /////////// Oldstation items /obj/item/paper/fluff/ruins/oldstation - name = "Cyro Awakening Alert" + name = "Cryo Awakening Alert" info = "**WARNING**

    Catastrophic damage sustained to station. Powernet exhausted to reawaken crew.

    Immediate Objectives

    1: Activate emergency power generator
    2: Lift station lockdown on the bridge

    Please locate the 'Damage Report' on the bridge for a detailed situation report." /obj/item/paper/fluff/ruins/oldstation/damagereport @@ -43,7 +43,7 @@ /obj/item/paper/fluff/ruins/oldstation/report name = "Crew Reawakening Report" - info = "Artifical Program's report to surviving crewmembers.

    Crew were placed into cryostasis on March 10th, 2445.

    Crew were awoken from cryostasis around June, 2557.

    \ + info = "Artificial Program's report to surviving crewmembers.

    Crew were placed into cryostasis on March 10th, 2445.

    Crew were awoken from cryostasis around June, 2557.

    \ SIGNIFICANT EVENTS OF NOTE
    1: The primary radiation detectors were taken offline after 112 years due to power failure, secondary radiation detectors showed no residual \ radiation on station. Deduction, primarily detector was malfunctioning and was producing a radiation signal when there was none.

    2: A data burst from a nearby Nanotrasen Space \ - Station was recieved, this data burst contained research data that has been uploaded to our RnD labs.

    3: Unknown invasion force has occupied Delta station." + Station was received, this data burst contained research data that has been uploaded to our RnD labs.

    3: Unknown invasion force has occupied Delta station." diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 15d5abf5e8..162942d1d8 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -9,7 +9,6 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new) desc = "This device is used to trigger station functions, which require more than one ID card to authenticate." icon = 'icons/obj/monitors.dmi' icon_state = "auth_off" - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 6 diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index 5090800ff4..60998215de 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -76,8 +76,9 @@ damaged = TRUE if(console) console.say("Alert, hull breach detected!") - var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems) - announcer.announce("ARRIVALS_BROKEN", channels = list()) + var/obj/machinery/announcement_system/announcer = safepick(GLOB.announcement_systems) + if(!QDELETED(announcer)) + announcer.announce("ARRIVALS_BROKEN", channels = list()) if(mode != SHUTTLE_CALL) sound_played = FALSE mode = SHUTTLE_IDLE diff --git a/code/modules/shuttle/assault_pod.dm b/code/modules/shuttle/assault_pod.dm index 84f0ac493d..43b273914c 100644 --- a/code/modules/shuttle/assault_pod.dm +++ b/code/modules/shuttle/assault_pod.dm @@ -19,7 +19,7 @@ /obj/item/assault_pod - name = "Assault Pod Targetting Device" + name = "Assault Pod Targeting Device" icon = 'icons/obj/device.dmi' icon_state = "gangtool-red" item_state = "radio" diff --git a/code/modules/shuttle/docking.dm b/code/modules/shuttle/docking.dm index c0052845c7..d881396092 100644 --- a/code/modules/shuttle/docking.dm +++ b/code/modules/shuttle/docking.dm @@ -16,7 +16,7 @@ // The area that gets placed under where the shuttle moved from var/underlying_area_type = SHUTTLE_DEFAULT_UNDERLYING_AREA - + if(old_dock) //Dock overwrites underlying_area_type = old_dock.area_type @@ -99,13 +99,7 @@ return DOCKING_SUCCESS -/obj/docking_port/mobile/proc/preflight_check( - list/old_turfs, - list/new_turfs, - list/areas_to_move, - rotation, - ) - +/obj/docking_port/mobile/proc/preflight_check(list/old_turfs, list/new_turfs, list/areas_to_move, rotation) for(var/i in 1 to old_turfs.len) CHECK_TICK var/turf/oldT = old_turfs[i] @@ -134,16 +128,7 @@ old_turfs[oldT] = move_mode -/obj/docking_port/mobile/proc/takeoff( - list/old_turfs, - list/new_turfs, - list/moved_atoms, - rotation, - movement_direction, - old_dock, - area/underlying_old_area, - ) - +/obj/docking_port/mobile/proc/takeoff(list/old_turfs, list/new_turfs, list/moved_atoms, rotation, movement_direction, old_dock, area/underlying_old_area) for(var/i in 1 to old_turfs.len) var/turf/oldT = old_turfs[i] var/turf/newT = new_turfs[i] @@ -163,17 +148,7 @@ var/area/shuttle_area = oldT.loc shuttle_area.onShuttleMove(oldT, newT, underlying_old_area) //areas -/obj/docking_port/mobile/proc/cleanup_runway( - obj/docking_port/stationary/new_dock, - list/old_turfs, - list/new_turfs, - list/areas_to_move, - list/moved_atoms, - rotation, - movement_direction, - area/underlying_old_area, - ) - +/obj/docking_port/mobile/proc/cleanup_runway(obj/docking_port/stationary/new_dock, list/old_turfs, list/new_turfs, list/areas_to_move, list/moved_atoms, rotation, movement_direction, area/underlying_old_area) underlying_old_area.afterShuttleMove() // Parallax handling @@ -202,14 +177,28 @@ var/turf/oldT = moved_atoms[moved_object] moved_object.afterShuttleMove(oldT, movement_force, dir, preferred_direction, movement_direction, rotation)//atoms + // lateShuttleMove (There had better be a really good reason for additional stages beyond this) + + underlying_old_area.lateShuttleMove() + + for(var/i in 1 to areas_to_move.len) + CHECK_TICK + var/area/internal_area = areas_to_move[i] + internal_area.lateShuttleMove() + for(var/i in 1 to old_turfs.len) CHECK_TICK - // Objects can block air so either turf or content changes means an air update is needed if(!(old_turfs[old_turfs[i]] & MOVE_CONTENTS | MOVE_TURF)) continue var/turf/oldT = old_turfs[i] var/turf/newT = new_turfs[i] - oldT.blocks_air = initial(oldT.blocks_air) - oldT.air_update_turf(TRUE) - newT.blocks_air = initial(newT.blocks_air) - newT.air_update_turf(TRUE) \ No newline at end of file + newT.lateShuttleMove(oldT) + + for(var/i in 1 to moved_atoms.len) + CHECK_TICK + var/atom/movable/moved_object = moved_atoms[i] + if(QDELETED(moved_object)) + continue + var/turf/oldT = moved_atoms[moved_object] + moved_object.lateShuttleMove(oldT, movement_force, movement_direction) + diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 1f262b285c..20b8c26d83 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -104,7 +104,7 @@ authorized += ID - message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch", 0, 1) + message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch") log_game("[key_name(user)] has authorized early shuttle launch in [COORD(src)]") // Now check if we're on our way . = TRUE @@ -143,12 +143,8 @@ return var/time = TIME_LEFT - message_admins("[key_name_admin(user.client)] \ - (?) \ - (FLW) \ - has emagged the emergency shuttle [time] seconds before launch.", 0, 1) - log_game("[key_name(user)] has emagged the emergency shuttle in \ - [COORD(src)] [time] seconds before launch.") + message_admins("[ADMIN_LOOKUPFLW(user.client)] has emagged the emergency shuttle [time] seconds before launch.") + log_game("[key_name(user)] has emagged the emergency shuttle in [COORD(src)] [time] seconds before launch.") obj_flags |= EMAGGED SSshuttle.emergency.movement_force = list("KNOCKDOWN" = 60, "THROW" = 20)//YOUR PUNY SEATBELTS can SAVE YOU NOW, MORTAL var/datum/species/S = new @@ -267,6 +263,14 @@ return has_people +/obj/docking_port/mobile/emergency/proc/ShuttleDBStuff() + set waitfor = FALSE + if(!SSdbcore.Connect()) + return + var/datum/DBQuery/query_round_shuttle_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET shuttle_name = '[name]' WHERE id = [GLOB.round_id]") + query_round_shuttle_name.Execute() + qdel(query_round_shuttle_name) + /obj/docking_port/mobile/emergency/check() if(!timer) return @@ -297,9 +301,7 @@ setTimer(SSshuttle.emergencyDockTime) send2irc("Server", "The Emergency Shuttle has docked with the station.") priority_announce("The Emergency Shuttle has docked with the station. You have [timeLeft(600)] minutes to board the Emergency Shuttle.", null, 'sound/ai/shuttledock.ogg', "Priority") - if(SSdbcore.Connect()) - var/datum/DBQuery/query_round_shuttle_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET shuttle_name = '[name]' WHERE id = [GLOB.round_id]") - query_round_shuttle_name.Execute() + ShuttleDBStuff() if(SHUTTLE_DOCKED) @@ -415,14 +417,15 @@ /obj/docking_port/mobile/pod/request() var/obj/machinery/computer/shuttle/S = getControlConsole() - - if(GLOB.security_level == SEC_LEVEL_RED || GLOB.security_level == SEC_LEVEL_DELTA || (S && (S.obj_flags & EMAGGED))) + if(!istype(S, /obj/machinery/computer/shuttle/pod)) + return ..() + if(GLOB.security_level >= SEC_LEVEL_RED || (S && (S.obj_flags & EMAGGED))) if(launch_status == UNLAUNCHED) launch_status = EARLY_LAUNCHED return ..() else to_chat(usr, "Escape pods will only launch during \"Code Red\" security alert.") - return 1 + return TRUE /obj/docking_port/mobile/pod/Initialize() . = ..() @@ -535,13 +538,24 @@ new /obj/item/storage/toolbox/emergency(src) /obj/item/storage/pod/attackby(obj/item/W, mob/user, params) - return + if (can_interact(user)) + return ..() + +/obj/item/storage/pod/attack_hand(mob/user) + if (can_interact(user)) + SEND_SIGNAL(src, COMSIG_TRY_STORAGE_SHOW, user) + return TRUE /obj/item/storage/pod/MouseDrop(over_object, src_location, over_location) + if(can_interact(usr)) + return ..() + +/obj/item/storage/pod/can_interact(mob/user) + if(!..()) + return FALSE if(GLOB.security_level == SEC_LEVEL_RED || GLOB.security_level == SEC_LEVEL_DELTA || unlocked) - . = ..() - else - to_chat(usr, "The storage unit will only unlock during a Red or Delta security alert.") + return TRUE + to_chat(user, "The storage unit will only unlock during a Red or Delta security alert.") /obj/docking_port/mobile/emergency/backup name = "backup shuttle" diff --git a/code/modules/shuttle/ferry.dm b/code/modules/shuttle/ferry.dm index f2d56686e0..eaa1f36b75 100644 --- a/code/modules/shuttle/ferry.dm +++ b/code/modules/shuttle/ferry.dm @@ -36,5 +36,5 @@ if(last_request && (last_request + cooldown > world.time)) return last_request = world.time - to_chat(usr, "Your request has been recieved by CentCom.") + to_chat(usr, "Your request has been received by CentCom.") to_chat(GLOB.admins, "FERRY: [ADMIN_LOOKUPFLW(usr)] (Move Ferry) is requesting to move the transport ferry to CentCom.") diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm index 1d8732cda9..ee12d7cf37 100644 --- a/code/modules/shuttle/manipulator.dm +++ b/code/modules/shuttle/manipulator.dm @@ -9,7 +9,6 @@ icon = 'icons/obj/machines/shuttle_manipulator.dmi' icon_state = "holograph_on" - anchored = TRUE density = TRUE // UI state variables @@ -156,8 +155,7 @@ if(M.id == params["id"] && M.timer && M.timeLeft() >= 50) M.setTimer(50) . = TRUE - message_admins("[key_name_admin(usr)] fast travelled \ - [M]") + message_admins("[key_name_admin(usr)] fast travelled [M]") log_admin("[key_name(usr)] fast travelled [M]") SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[M.name]") break @@ -182,10 +180,8 @@ var/obj/docking_port/mobile/mdp = action_load(S) if(mdp) user.forceMove(get_turf(mdp)) - message_admins("[key_name_admin(usr)] loaded [mdp] \ - with the shuttle manipulator.") - log_admin("[key_name(usr)] loaded [mdp] with the \ - shuttle manipulator.") + message_admins("[key_name_admin(usr)] loaded [mdp] with the shuttle manipulator.") + log_admin("[key_name(usr)] loaded [mdp] with the shuttle manipulator.") SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[mdp.name]") update_icon() @@ -228,7 +224,11 @@ if(existing_shuttle) existing_shuttle.jumpToNullSpace() + var/list/force_memory = preview_shuttle.movement_force + preview_shuttle.movement_force = list("KNOCKDOWN" = 0, "THROW" = 0) preview_shuttle.initiate_docking(D) + preview_shuttle.movement_force = force_memory + . = preview_shuttle // Shuttle state involves a mode and a timer based on world.time, so @@ -279,7 +279,7 @@ if(istype(P, /obj/docking_port/stationary)) log_world("Map warning: Shuttle Template [S.mappath] has a stationary docking port.") if(!found) - var/msg = "load_template(): Shuttle Template [S.mappath] has no mobile docking port. Aborting import." + var/msg = "load_template(): Shuttle Template [S.mappath] has no mobile docking port. Aborting import." for(var/T in affected) var/turf/T0 = T T0.empty() diff --git a/code/modules/shuttle/monastery.dm b/code/modules/shuttle/monastery.dm new file mode 100644 index 0000000000..b04c202dca --- /dev/null +++ b/code/modules/shuttle/monastery.dm @@ -0,0 +1,7 @@ +/obj/machinery/computer/shuttle/monastery_shuttle + name = "monastery shuttle console" + desc = "Used to control the monastery shuttle." + circuit = /obj/item/circuitboard/computer/monastery_shuttle + shuttleId = "pod1" + possible_destinations = "monastery_shuttle_asteroid;monastery_shuttle_station" + no_destination_swap = TRUE diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 29c0de1b27..c58b3eee7b 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -31,6 +31,9 @@ if(jammed) to_chat(user, "The Syndicate is jamming the console!") return + if(!shuttle_port) + to_chat(user,"Warning: Shuttle connection severed!") + return return ..() /obj/machinery/computer/camera_advanced/shuttle_docker/GrantActions(mob/living/user) diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index bce22d05cf..9767334166 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -53,7 +53,7 @@ All ShuttleMove procs go here if(!shuttle_boundary) CRASH("A turf queued to move via shuttle somehow had no skipover in baseturfs. [src]([type]):[loc]") var/depth = baseturfs.len - shuttle_boundary + 1 - newT.CopyOnTop(src, 1, depth) + newT.CopyOnTop(src, 1, depth, TRUE) //Air stuff newT.blocks_air = TRUE newT.air_update_turf(TRUE) @@ -78,6 +78,13 @@ All ShuttleMove procs go here return TRUE +/turf/proc/lateShuttleMove(turf/oldT) + blocks_air = initial(blocks_air) + air_update_turf(TRUE) + oldT.blocks_air = initial(oldT.blocks_air) + oldT.air_update_turf(TRUE) + + ///////////////////////////////////////////////////////////////////////////////////// // Called on every atom in shuttle turf contents before anything has been moved @@ -91,9 +98,8 @@ All ShuttleMove procs go here if(newT == oldT) // In case of in place shuttle rotation shenanigans. return - if(locs && locs.len > 1) // This is for multi tile objects - if(loc != oldT) - return + if(loc != oldT) // This is for multi tile objects + return loc = newT @@ -111,12 +117,22 @@ All ShuttleMove procs go here if(rotation) shuttleRotate(rotation) - - update_parallax_contents() return TRUE +/atom/movable/proc/lateShuttleMove(turf/oldT, list/movement_force, move_dir) + if(!movement_force || anchored) + return + var/throw_force = movement_force["THROW"] + if(!throw_force) + return + var/turf/target = get_edge_target_turf(src, move_dir) + var/range = throw_force * 10 + range = CEILING(rand(range-(range*0.1), range+(range*0.1)), 10)/10 + var/speed = range/5 + throw_at(target, range, speed) + ///////////////////////////////////////////////////////////////////////////////////// // Called on areas before anything has been moved @@ -149,6 +165,9 @@ All ShuttleMove procs go here parallax_movedir = new_parallax_dir return TRUE +/area/proc/lateShuttleMove() + return + /************************************Turf move procs************************************/ /************************************Area move procs************************************/ @@ -204,11 +223,6 @@ All ShuttleMove procs go here on = TRUE update_list() -/obj/machinery/thruster/beforeShuttleMove(turf/newT, rotation, move_mode, obj/docking_port/mobile/moving_dock) - . = ..() - if(. & MOVE_AREA) - . |= MOVE_CONTENTS - /obj/machinery/atmospherics/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() var/missing_nodes = FALSE @@ -270,8 +284,11 @@ All ShuttleMove procs go here /obj/item/storage/pod/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() - unlocked = TRUE - // If the pod was launched, the storage will always open. + // If the pod was launched, the storage will always open. The CentCom check + // ignores the movement of the shuttle from the staging area on CentCom to + // the station as it is loaded in. + if (oldT && !is_centcom_level(oldT.z)) + unlocked = TRUE /************************************Mob move procs************************************/ @@ -290,17 +307,16 @@ All ShuttleMove procs go here shake_force *= 0.25 shake_camera(src, shake_force, 1) -/mob/living/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) +/mob/living/lateShuttleMove(turf/oldT, list/movement_force, move_dir) + if(buckled) + return + . = ..() - if(movement_force && !buckled) - if(movement_force["THROW"]) - var/throw_dir = move_dir - var/turf/target = get_edge_target_turf(src, throw_dir) - var/range = movement_force["THROW"] - var/speed = range/5 - src.throw_at(target, range, speed) - if(movement_force["KNOCKDOWN"]) - Knockdown(movement_force["KNOCKDOWN"]) + + var/knockdown = movement_force["KNOCKDOWN"] + if(knockdown) + Knockdown(knockdown) + /mob/living/simple_animal/hostile/megafauna/onShuttleMove(turf/newT, turf/oldT, list/movement_force, move_dir, obj/docking_port/stationary/old_dock, obj/docking_port/mobile/moving_dock) . = ..() @@ -333,6 +349,21 @@ All ShuttleMove procs go here if(. & MOVE_AREA) . |= MOVE_CONTENTS +/obj/structure/ladder/beforeShuttleMove(turf/newT, rotation, move_mode, obj/docking_port/mobile/moving_dock) + . = ..() + if (!(resistance_flags & INDESTRUCTIBLE)) + disconnect() + +/obj/structure/ladder/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) + . = ..() + if (!(resistance_flags & INDESTRUCTIBLE)) + LateInitialize() + +/obj/structure/ladder/onShuttleMove(turf/newT, turf/oldT, list/movement_force, move_dir, obj/docking_port/stationary/old_dock, obj/docking_port/mobile/moving_dock) + if (resistance_flags & INDESTRUCTIBLE) + // simply don't be moved + return FALSE + return ..() /************************************Misc move procs************************************/ diff --git a/code/modules/shuttle/ripple.dm b/code/modules/shuttle/ripple.dm index 06675c39a3..4bf6eac0eb 100644 --- a/code/modules/shuttle/ripple.dm +++ b/code/modules/shuttle/ripple.dm @@ -1,4 +1,4 @@ -/obj/effect/temp_visual/ripple +/obj/effect/abstract/ripple name = "hyperspace ripple" desc = "Something is coming through hyperspace, you can see the \ visual disturbances. It's probably best not to be on top of these \ @@ -11,12 +11,10 @@ mouse_opacity = MOUSE_OPACITY_ICON alpha = 0 - duration = 3 * SHUTTLE_RIPPLE_TIME - -/obj/effect/temp_visual/ripple/Initialize(mapload, time_left) +/obj/effect/abstract/ripple/Initialize(mapload, time_left) . = ..() animate(src, alpha=255, time=time_left) addtimer(CALLBACK(src, .proc/stop_animation), 8, TIMER_CLIENT_TIME) -/obj/effect/temp_visual/ripple/proc/stop_animation() +/obj/effect/abstract/ripple/proc/stop_animation() icon_state = "medi_holo_no_anim" diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index a687fa5bbe..32c186023b 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -202,7 +202,7 @@ /obj/docking_port/stationary/transit name = "In Transit" - var/list/turf/assigned_turfs = list() + var/datum/turf_reservation/reserved_area var/area/shuttle/transit/assigned_area var/obj/docking_port/mobile/owner @@ -210,14 +210,6 @@ . = ..() SSshuttle.transit += src -/obj/docking_port/stationary/transit/proc/dezone() - for(var/i in 1 to assigned_turfs.len) - var/turf/T = assigned_turfs[i] - if(istype(T, /turf/open/space/transit)) - T.ChangeTurf(/turf/open/space) - T.assemble_baseturfs(initial(T.baseturfs)) - T.flags_1 |= UNUSED_TRANSIT_TURF_1 - /obj/docking_port/stationary/transit/Destroy(force=FALSE) if(force) if(get_docked()) @@ -227,11 +219,10 @@ if(owner.assigned_transit == src) owner.assigned_transit = null owner = null - if(assigned_turfs) - dezone() - assigned_turfs.Cut() - assigned_turfs = null - . = ..() + if(!QDELETED(reserved_area)) + qdel(reserved_area) + reserved_area = null + return ..() /obj/docking_port/mobile name = "shuttle" @@ -282,8 +273,9 @@ SSshuttle.mobile -= src destination = null previous = null - assigned_transit = null + QDEL_NULL(assigned_transit) //don't need it where we're goin'! shuttle_areas = null + remove_ripples() . = ..() /obj/docking_port/mobile/Initialize(mapload) @@ -432,7 +424,7 @@ underlying_area_type = current_dock.area_type var/list/old_turfs = return_ordered_turfs(x, y, z, dir) - + var/area/underlying_area for(var/i in GLOB.sortedAreas) var/area/place = i @@ -450,7 +442,7 @@ underlying_area.contents += oldT oldT.change_area(old_area, underlying_area) oldT.empty(FALSE) - + // Here we locate the bottomost shuttle boundary and remove all turfs above it var/list/baseturf_cache = oldT.baseturfs for(var/k in 1 to length(baseturf_cache)) @@ -463,12 +455,10 @@ /obj/docking_port/mobile/proc/create_ripples(obj/docking_port/stationary/S1, animate_time) var/list/turfs = ripple_area(S1) for(var/t in turfs) - ripples += new /obj/effect/temp_visual/ripple(t, animate_time) + ripples += new /obj/effect/abstract/ripple(t, animate_time) /obj/docking_port/mobile/proc/remove_ripples() - for(var/R in ripples) - qdel(R) - ripples.Cut() + QDEL_LIST(ripples) /obj/docking_port/mobile/proc/ripple_area(obj/docking_port/stationary/S1) var/list/L0 = return_ordered_turfs(x, y, z, dir) @@ -478,13 +468,14 @@ for(var/i in 1 to L0.len) var/turf/T0 = L0[i] - if(!T0 || !istype(T0.loc, area_type)) - continue var/turf/T1 = L1[i] - if(!T1) - continue - if(T0.type != T0.baseturfs) - ripple_turfs += T1 + if(!T0 || !T1) + continue // out of bounds + if(T0.type == T0.baseturfs) + continue // indestructible + if(!istype(T0.loc, area_type) || istype(T0.loc, /area/shuttle/transit)) + continue // not part of the shuttle + ripple_turfs += T1 return ripple_turfs diff --git a/code/modules/shuttle/shuttle_rotate.dm b/code/modules/shuttle/shuttle_rotate.dm index cc69fb5d15..a2159a50fd 100644 --- a/code/modules/shuttle/shuttle_rotate.dm +++ b/code/modules/shuttle/shuttle_rotate.dm @@ -25,7 +25,7 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate pixel_x = oldPY pixel_y = (oldPX*(-1)) - SendSignal(COMSIG_ATOM_ROTATE, rotation, params) + SEND_SIGNAL(src, COMSIG_ATOM_ROTATE, rotation, params) /************************************Turf rotate procs************************************/ diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index a5a15b3d30..0f005f69f7 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -136,7 +136,6 @@ /mob/living/simple_animal/drone/snowflake/bardrone name = "Bardrone" desc = "A barkeeping drone, an indestructible robot built to tend bars." - seeStatic = FALSE hacked = TRUE laws = "1. Serve drinks.\n\ 2. Talk to patrons.\n\ @@ -166,7 +165,7 @@ var/datum/job/captain/C = new /datum/job/captain access_card.access = C.get_access() access_card.access |= ACCESS_CENT_BAR - access_card.flags_1 |= NODROP_1 + access_card.item_flags |= NODROP /mob/living/simple_animal/hostile/alien/maid/barmaid/Destroy() qdel(access_card) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 75bac53d17..6f2997a078 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -13,7 +13,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( /obj/machinery/clonepod, /obj/effect/mob_spawn, /obj/effect/hierophant, - /obj/structure/recieving_pad, + /obj/structure/receiving_pad, /obj/effect/clockwork/spatial_gateway, /obj/structure/destructible/clockwork/powered/clockwork_obelisk, /obj/item/warp_cube, @@ -35,6 +35,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( width = 12 dwidth = 5 height = 7 + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0) // When TRUE, these vars allow exporting emagged/contraband items, and add some special interactions to existing exports. var/contraband = FALSE @@ -102,7 +103,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( SSblackbox.record_feedback("nested tally", "cargo_imports", 1, list("[SO.pack.cost]", "[SO.pack.name]")) investigate_log("Order #[SO.id] ([SO.pack.name], placed by [key_name(SO.orderer_ckey)]) has shipped.", INVESTIGATE_CARGO) if(SO.pack.dangerous) - message_admins("\A [SO.pack.name] ordered by [key_name_admin(SO.orderer_ckey)] has shipped.") + message_admins("\A [SO.pack.name] ordered by [ADMIN_LOOKUPFLW(SO.orderer_ckey)] has shipped.") purchases++ investigate_log("[purchases] orders in this shipment, worth [value] credits. [SSshuttle.points] credits left.", INVESTIGATE_CARGO) @@ -114,18 +115,25 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( setupExports() var/msg = "" + var/matched_bounty = FALSE var/sold_atoms = "" for(var/place in shuttle_areas) var/area/shuttle/shuttle_area = place for(var/atom/movable/AM in shuttle_area) - if(AM.anchored || iscameramob(AM)) + if(iscameramob(AM)) continue - sold_atoms += export_item_and_contents(AM, contraband, emagged, dry_run = FALSE) + if(bounty_ship_item_and_contents(AM, dry_run = FALSE)) + matched_bounty = TRUE + if(!AM.anchored || istype(AM, /obj/mecha)) + sold_atoms += export_item_and_contents(AM, contraband, emagged, dry_run = FALSE) if(sold_atoms) sold_atoms += "." + if(matched_bounty) + msg += "Bounty items received. An update has been sent to all bounty consoles. " + for(var/a in GLOB.exports_list) var/datum/export/E = a var/export_text = E.total_printout() diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 89e513fd60..4e6ef7ed9b 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -68,27 +68,19 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th return user.ranged_ability = src user.click_intercept = src - add_mousepointer(user.client) + user.update_mouse_pointer() ranged_ability_user = user if(msg) to_chat(ranged_ability_user, msg) active = TRUE update_icon() -/obj/effect/proc_holder/proc/add_mousepointer(client/C) - if(C && ranged_mousepointer && C.mouse_pointer_icon == initial(C.mouse_pointer_icon)) - C.mouse_pointer_icon = ranged_mousepointer - -/obj/effect/proc_holder/proc/remove_mousepointer(client/C) - if(C && ranged_mousepointer && C.mouse_pointer_icon == ranged_mousepointer) - C.mouse_pointer_icon = initial(C.mouse_pointer_icon) - /obj/effect/proc_holder/proc/remove_ranged_ability(msg) if(!ranged_ability_user || !ranged_ability_user.client || (ranged_ability_user.ranged_ability && ranged_ability_user.ranged_ability != src)) //To avoid removing the wrong ability return ranged_ability_user.ranged_ability = null ranged_ability_user.click_intercept = null - remove_mousepointer(ranged_ability_user.client) + ranged_ability_user.update_mouse_pointer() if(msg) to_chat(ranged_ability_user, msg) ranged_ability_user = null @@ -381,7 +373,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if("unconscious") target.AdjustUnconscious(amount) else - target.vars[type] += amount //I bear no responsibility for the runtimes that'll happen if you try to adjust non-numeric or even non-existant vars + target.vars[type] += amount //I bear no responsibility for the runtimes that'll happen if you try to adjust non-numeric or even non-existent vars /obj/effect/proc_holder/spell/targeted //can mean aoe for mobs (limited/unlimited number) or one target mob var/max_targets = 1 //leave 0 for unlimited targets in range, 1 for one selectable target in range, more for limited number of casts (can all target one guy, depends on target_ignore_prev) in range diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm index 6c860fda9b..35f9a8f50a 100644 --- a/code/modules/spells/spell_types/aimed.dm +++ b/code/modules/spells/spell_types/aimed.dm @@ -29,7 +29,7 @@ remove_ranged_ability(msg) on_deactivation(user) else - msg = "[active_msg]Left-click to shoot it at a target!" + msg = "[active_msg] Left-click to shoot it at a target!" current_amount = projectile_amount add_ranged_ability(user, msg, TRUE) on_activation(user) @@ -101,7 +101,7 @@ base_icon_state = "lightning" sound = 'sound/magic/lightningbolt.ogg' active = FALSE - projectile_var_overrides = list("tesla_range" = 15, "tesla_power" = 20000, "tesla_boom" = FALSE) + projectile_var_overrides = list("tesla_range" = 15, "tesla_power" = 20000, "tesla_flags" = TESLA_MOB_DAMAGE) active_msg = "You energize your hand with arcane lightning!" deactive_msg = "You let the energy flow out of your hands back into yourself..." projectile_type = /obj/item/projectile/magic/aoe/lightning diff --git a/code/modules/spells/spell_types/barnyard.dm b/code/modules/spells/spell_types/barnyard.dm index 70b33919b7..01b24fef98 100644 --- a/code/modules/spells/spell_types/barnyard.dm +++ b/code/modules/spells/spell_types/barnyard.dm @@ -44,7 +44,7 @@ var/choice = masks[randM] var/obj/item/clothing/mask/magichead = new choice - magichead.flags_1 |= NODROP_1 + magichead.item_flags |= NODROP magichead.flags_inv = null target.visible_message("[target]'s face bursts into flames, and a barnyard animal's head takes its place!", \ "Your face burns up, and shortly after the fire you realise you have the face of a barnyard animal!") diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm index 18bfb54935..3ebded7487 100644 --- a/code/modules/spells/spell_types/conjure.dm +++ b/code/modules/spells/spell_types/conjure.dm @@ -38,7 +38,7 @@ for(var/varName in newVars) if(varName in newVars) summoned_object.vv_edit_var(varName, newVars[varName]) - summoned_object.admin_spawned = TRUE + summoned_object.flags_1 |= ADMIN_SPAWNED_1 if(summon_lifespan) QDEL_IN(summoned_object, summon_lifespan) diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm index ff71ad8e68..8e1957f524 100644 --- a/code/modules/spells/spell_types/construct_spells.dm +++ b/code/modules/spells/spell_types/construct_spells.dm @@ -220,7 +220,7 @@ /obj/effect/proc_holder/spell/targeted/dominate name = "Dominate" - desc = "This spell dominates the mind of a lesser creature, causing it to see you as an ally." + desc = "This spell dominates the mind of a lesser creature to the will of Nar'sie, allying it only to her direct followers." charge_max = 600 range = 7 diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm index bf402b7a6a..27cfc9208b 100644 --- a/code/modules/spells/spell_types/godhand.dm +++ b/code/modules/spells/spell_types/godhand.dm @@ -7,7 +7,7 @@ icon = 'icons/obj/items_and_weapons.dmi' icon_state = "syndballoon" item_state = null - flags_1 = ABSTRACT_1 | NODROP_1 | DROPDEL_1 + item_flags = NEEDS_PERMIT | ABSTRACT | NODROP | DROPDEL w_class = WEIGHT_CLASS_HUGE force = 0 throwforce = 0 @@ -60,10 +60,7 @@ target.visible_message("[target]'s [A] glows brightly as it wards off the spell!") user.visible_message("The feedback blows [user]'s arm off!","The spell bounces from [M]'s skin back into your arm!") user.flash_act() - var/obj/item/bodypart/part - var/index = user.get_held_index_of_item(src) - if(index) - part = user.hand_bodyparts[index] + var/obj/item/bodypart/part = user.get_holding_bodypart_of_item(src) if(part) part.dismember() ..() diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm index 33b555ad21..d88ee7fb22 100644 --- a/code/modules/spells/spell_types/lichdom.dm +++ b/code/modules/spells/spell_types/lichdom.dm @@ -31,10 +31,10 @@ var/obj/item/marked_item - for(var/obj/item in hand_items) + for(var/obj/item/item in hand_items) // I ensouled the nuke disk once. But it's probably a really // mean tactic, so probably should discourage it. - if((item.flags_1 & ABSTRACT_1) || (item.flags_1 & NODROP_1) || item.SendSignal(COMSIG_ITEM_IMBUE_SOUL, user)) + if((item.item_flags & ABSTRACT) || (item.item_flags & NODROP) || SEND_SIGNAL(item, COMSIG_ITEM_IMBUE_SOUL, user)) continue marked_item = item to_chat(M, "You begin to focus your very being into [item]...") diff --git a/code/modules/spells/spell_types/mime.dm b/code/modules/spells/spell_types/mime.dm index 2b904df277..e3177dbb4f 100644 --- a/code/modules/spells/spell_types/mime.dm +++ b/code/modules/spells/spell_types/mime.dm @@ -58,9 +58,9 @@ H.mind.miming=!H.mind.miming if(H.mind.miming) to_chat(H, "You make a vow of silence.") - H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "vow") + SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "vow") else - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "vow", /datum/mood_event/broken_vow) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "vow", /datum/mood_event/broken_vow) to_chat(H, "You break your vow of silence.") // These spells can only be gotten from the "Guide for Advanced Mimery series" for Mime Traitors. @@ -131,17 +131,26 @@ /obj/item/book/granter/spell/mimery_blockade spell = /obj/effect/proc_holder/spell/targeted/forcewall/mime - spellname = "" + spellname = "Invisible Blockade" name = "Guide to Advanced Mimery Vol 1" desc = "The pages don't make any sound when turned." icon_state ="bookmime" remarks = list("...") +/obj/item/book/granter/spell/mimery_blockade/attack_self(mob/user) + ..() + if(!locate(/obj/effect/proc_holder/spell/targeted/mime/speak) in user.mind.spell_list) + user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak) /obj/item/book/granter/spell/mimery_guns spell = /obj/effect/proc_holder/spell/aimed/finger_guns - spellname = "" + spellname = "Finger Guns" name = "Guide to Advanced Mimery Vol 2" desc = "There aren't any words written..." icon_state ="bookmime" remarks = list("...") + +/obj/item/book/granter/spell/mimery_guns/attack_self(mob/user) + ..() + if(!locate(/obj/effect/proc_holder/spell/targeted/mime/speak) in user.mind.spell_list) + user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak) \ No newline at end of file diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm index 61048e9cbd..414aa10933 100644 --- a/code/modules/spells/spell_types/rightandwrong.dm +++ b/code/modules/spells/spell_types/rightandwrong.dm @@ -137,7 +137,7 @@ GLOBAL_VAR_INIT(summon_magic_triggered, FALSE) /proc/rightandwrong(summon_type, mob/user, survivor_probability) if(user) //in this case either someone holding a spellbook or a badmin to_chat(user, "You summoned [summon_type]!") - message_admins("[key_name_admin(user, 1)] summoned [summon_type]!") + message_admins("[key_name_admin(user, TRUE)] summoned [summon_type]!") log_game("[key_name(user)] summoned [summon_type]!") if(summon_type == SUMMON_MAGIC) @@ -148,6 +148,9 @@ GLOBAL_VAR_INIT(summon_magic_triggered, FALSE) CRASH("Bad summon_type given: [summon_type]") for(var/mob/living/carbon/human/H in GLOB.player_list) + var/turf/T = get_turf(H) + if(T && is_away_level(T.z)) + continue if(summon_type == SUMMON_MAGIC) give_magic(H) else diff --git a/code/modules/spells/spell_types/summonitem.dm b/code/modules/spells/spell_types/summonitem.dm index bd5099da68..0bb79eba21 100644 --- a/code/modules/spells/spell_types/summonitem.dm +++ b/code/modules/spells/spell_types/summonitem.dm @@ -22,10 +22,10 @@ if(!marked_item) //linking item to the spell message = "" - for(var/obj/item in hand_items) - if(item.flags_1 & ABSTRACT_1) + for(var/obj/item/item in hand_items) + if(item.item_flags & ABSTRACT) continue - if(item.flags_1 & NODROP_1) + if(item.item_flags & NODROP) message += "Though it feels redundant, " marked_item = item message += "You mark [item] for recall." @@ -83,7 +83,7 @@ to_chat(C, "The [item_to_retrieve] that was embedded in your [L] has mysteriously vanished. How fortunate!") if(!C.has_embedded_objects()) C.clear_alert("embeddedobject") - C.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded") + SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "embedded") break else diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 9e56e94d74..be2c4f92bd 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -185,7 +185,7 @@ T.ex_act(EXPLODE_DEVASTATE) point.Beam(get_target_turf(),icon_state="bsa_beam",time=50,maxdistance = world.maxx) //ZZZAP - message_admins("[key_name_admin(user)] has launched an artillery strike.") + message_admins("[ADMIN_LOOKUPFLW(user)] has launched an artillery strike.") explosion(bullseye,ex_power,ex_power*2,ex_power*4) reload() diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index 9be68103c3..0601ff28e1 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -67,7 +67,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' icon_state = "hypo" - flags_1 = NOBLUDGEON_1 + item_flags = NOBLUDGEON var/list/animals = list() var/list/plants = list() var/list/dna = list() diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 9c92ac4bd5..44746e595e 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -87,10 +87,11 @@ desc = "" icon = 'icons/obj/machines/satellite.dmi' icon_state = "sat_inactive" - var/mode = "NTPROBEV0.8" - var/active = FALSE + anchored = FALSE density = TRUE use_power = FALSE + var/mode = "NTPROBEV0.8" + var/active = FALSE var/static/gid = 0 var/id = 0 diff --git a/code/modules/stock_market/stockmarket.dm b/code/modules/stock_market/stockmarket.dm deleted file mode 100644 index 9a00cfce05..0000000000 --- a/code/modules/stock_market/stockmarket.dm +++ /dev/null @@ -1,171 +0,0 @@ - - -/datum/stockMarket - var/list/stocks = list() - var/list/balances = list() - var/list/last_read = list() - var/list/stockBrokers = list() - var/list/logs = list() - -/datum/stockMarket/New() - ..() - generateBrokers() - generateStocks() - START_PROCESSING(SSobj, src) - -/datum/stockMarket/proc/balanceLog(var/whose, var/net) - if (!(whose in balances)) - balances[whose] = net - else - balances[whose] += net -/datum/stockMarket/proc/generateBrokers() - stockBrokers = list() - var/list/fnames = list("Goldman", "Edward", "James", "Luis", "Alexander", "Walter", "Eugene", "Mary", "Morgan", "Jane", "Elizabeth", "Xavier", "Hayden", "Samuel", "Lee") - var/list/names = list("Johnson", "Rothschild", "Sachs", "Stanley", "Hepburn", "Brown", "McColl", "Fischer", "Edwards", "Becker", "Witter", "Walker", "Lambert", "Smith", "Montgomery", "Lynch", "Roosevelt", "Lehman") - var/list/locations = list("Earth", "Luna", "Mars", "Saturn", "Jupiter", "Uranus", "Pluto", "Europa", "Io", "Phobos", "Deimos", "Space", "Venus", "Neptune", "Mercury", "Kalliope", "Ganymede", "Callisto", "Amalthea", "Himalia", "Sybil", "Basil", "Badger", "Terry", "Artyom") - var/list/first = list("The", "First", "Premier", "Finest", "Prime") - var/list/company = list("Investments", "Securities", "Corporation", "Bank", "Brokerage", "& Co.", "Brothers", "& Sons", "Investement Firm", "Union", "Partners", "Capital", "Trade", "Holdings") - for(var/i in 1 to 5) - var/pname = "" - switch (rand(1,5)) - if (1) - pname = "[prob(10) ? pick(first) + " " : null][pick(names)] [pick(company)]" - if (2) - pname = "[pick(names)] & [pick(names)][prob(25) ? " " + pick(company) : null]" - if (3) - pname = "[prob(45) ? pick(first) + " " : null][pick(locations)] [pick(company)]" - if (4) - pname = "[prob(10) ? "The " : null][pick(names)] [pick(locations)] [pick(company)]" - if (5) - pname = "[prob(10) ? "The " : null][pick(fnames)] [pick(names)][prob(10) ? " " + pick(company) : null]" - if (pname in stockBrokers) - i-- - continue - stockBrokers += pname - -/datum/stockMarket/proc/generateDesignation(var/name) - if (length(name) <= 4) - return uppertext(name) - var/list/w = splittext(name, " ") - if (w.len >= 2) - var/d = "" - for(var/i in 1 to min(5, w.len)) - d += uppertext(ascii2text(text2ascii(w[i], 1))) - return d - else - var/d = uppertext(ascii2text(text2ascii(name, 1))) - for(var/i in 2 to length(name)) - if (prob(100 / i)) - d += uppertext(ascii2text(text2ascii(name, i))) - return d - -/datum/stockMarket/proc/generateStocks(var/amt = 15) - var/list/fruits = list("Banana", "Mimana", "Watermelon", "Ambrosia", "Pomegranate", "Reishi", "Papaya", "Mango", "Tomato", "Conkerberry", "Wood", "Lychee", "Mandarin", "Harebell", "Pumpkin", "Rhubarb", "Tamarillo", "Yantok", "Ziziphus", "Oranges", "Gatfruit", "Daisy", "Kudzu") - var/list/tech_prefix = list("Nano", "Cyber", "Funk", "Astro", "Fusion", "Tera", "Exo", "Star", "Virtual", "Plasma", "Robust", "Bit", "Future", "Hugbox", "Carbon", "Nerf", "Buff", "Nova", "Space", "Meta", "Cyber") - var/list/tech_short = list("soft", "tech", "prog", "tec", "tek", "ware", "", "gadgets", "nics", "tric", "trasen", "tronic", "coin") - var/list/random_nouns = list("Johnson", "Cluwne", "General", "Specific", "Master", "King", "Queen", "Table", "Rupture", "Dynamic", "Massive", "Mega", "Giga", "Certain", "Singulo", "State", "National", "International", "Interplanetary", "Sector", "Planet", "Burn", "Robust", "Exotic", "Solar", "Lunar", "Chelp", "Corgi", "Lag", "Lizard") - var/list/company = list("Company", "Factory", "Incorporated", "Industries", "Group", "Consolidated", "GmbH", "LLC", "Ltd", "Inc.", "Association", "Limited", "Software", "Technology", "Programming", "IT Group", "Electronics", "Nanotechnology", "Farms", "Stores", "Mobile", "Motors", "Electric", "Designs", "Energy", "Pharmaceuticals", "Communications", "Wholesale", "Holding", "Health", "Machines", "Astrotech", "Gadgets", "Kinetics") - for (var/i = 1, i <= amt, i++) - var/datum/stock/S = new - var/sname = "" - switch (rand(1,6)) - if(1) - while (sname == "" || sname == "FAG") // honestly it's a 0.6% chance per round this happens - or once in 166 rounds - so i'm accounting for it before someone yells at me - sname = "[consonant()][vowel()][consonant()]" - if (2) - sname = "[pick(tech_prefix)][pick(tech_short)][prob(20) ? " " + pick(company) : null]" - if (3 to 4) - var/fruit = pick(fruits) - fruits -= fruit - sname = "[prob(10) ? "The " : null][fruit][prob(40) ? " " + pick(company): null]" - if (5 to 6) - var/pname = pick(random_nouns) - random_nouns -= pname - switch (rand(1,3)) - if (1) - sname = "[pname] & [pname]" - if (2) - sname = "[pname] [pick(company)]" - if (3) - sname = "[pname]" - S.name = sname - S.short_name = generateDesignation(S.name) - S.current_value = rand(10, 125) - var/dv = rand(10, 40) / 10 - S.fluctuational_coefficient = prob(50) ? (1 / dv) : dv - S.average_optimism = rand(-10, 10) / 100 - S.optimism = S.average_optimism + (rand(-40, 40) / 100) - S.current_trend = rand(-200, 200) / 10 - S.last_trend = S.current_trend - S.disp_value_change = rand(-1, 1) - S.speculation = rand(-20, 20) - S.average_shares = round(rand(500, 10000) / 10) - S.outside_shareholders = rand(1000, 30000) - S.available_shares = rand(200000, 800000) - S.fluctuation_rate = rand(6, 20) - S.generateIndustry() - S.generateEvents() - stocks += S - last_read[S] = list() - -/datum/stockMarket/process() - for (var/stock in stocks) - var/datum/stock/S = stock - S.process() - -/datum/stockMarket/proc/add_log(var/log_type, var/user, var/company_name, var/stocks, var/shareprice, var/money) - var/datum/stock_log/L = new log_type - L.user_name = user - L.company_name = company_name - L.stocks = stocks - L.shareprice = shareprice - L.money = money - L.time = time2text(world.timeofday, "hh:mm") - logs += L - -GLOBAL_DATUM_INIT(stockExchange, /datum/stockMarket, new) - -/proc/plotBarGraph(var/list/points, var/base_text, var/width=400, var/height=400) - var/output = "
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]
    [get_held_index_name(i)]:[(I && !(I.item_flags & ABSTRACT)) ? I : "Empty"]
     
    Back:[(back && !(back.flags_1&ABSTRACT_1)) ? back : "Empty"]" + dat += "
    Back:[(back && !(back.item_flags & ABSTRACT)) ? back : "Empty"]" if(has_breathable_mask && istype(back, /obj/item/tank)) dat += " [internal ? "Disable Internals" : "Set Internals"]" dat += "
     
    Head:[(head && !(head.flags_1&ABSTRACT_1)) ? head : "Empty"]
    Head:[(head && !(head.item_flags & ABSTRACT)) ? head : "Empty"]
    Mask:Obscured
    Mask:[(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Empty"]
    Mask:[(wear_mask && !(wear_mask.item_flags & ABSTRACT)) ? wear_mask : "Empty"]
    Neck:Obscured
    Neck:[(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Empty"]
    Neck:[(wear_neck && !(wear_neck.item_flags & ABSTRACT)) ? wear_neck : "Empty"]
    Eyes:Obscured
    Eyes:[(glasses && !(glasses.flags_1&ABSTRACT_1)) ? glasses : "Empty"]
    Eyes:[(glasses && !(glasses.item_flags & ABSTRACT)) ? glasses : "Empty"]
    Ears:Obscured
    Ears:[(ears && !(ears.flags_1&ABSTRACT_1)) ? ears : "Empty"]
    Ears:[(ears && !(ears.item_flags & ABSTRACT)) ? ears : "Empty"]
     
    Exosuit:[(wear_suit && !(wear_suit.flags_1&ABSTRACT_1)) ? wear_suit : "Empty"]
    Exosuit:[(wear_suit && !(wear_suit.item_flags & ABSTRACT)) ? wear_suit : "Empty"]
     ↳Suit Storage:[(s_store && !(s_store.flags_1&ABSTRACT_1)) ? s_store : "Empty"]" + dat += "
     ↳Suit Storage:[(s_store && !(s_store.item_flags & ABSTRACT)) ? s_store : "Empty"]" if(has_breathable_mask && istype(s_store, /obj/item/tank)) dat += " [internal ? "Disable Internals" : "Set Internals"]" dat += "
    Shoes:Obscured
    Shoes:[(shoes && !(shoes.flags_1&ABSTRACT_1)) ? shoes : "Empty"]
    Shoes:[(shoes && !(shoes.item_flags & ABSTRACT)) ? shoes : "Empty"]
    Gloves:Obscured
    Gloves:[(gloves && !(gloves.flags_1&ABSTRACT_1)) ? gloves : "Empty"]
    Gloves:[(gloves && !(gloves.item_flags & ABSTRACT)) ? gloves : "Empty"]
    Uniform:Obscured
    Uniform:[(w_uniform && !(w_uniform.flags_1&ABSTRACT_1)) ? w_uniform : "Empty"]
    Uniform:[(w_uniform && !(w_uniform.item_flags & ABSTRACT)) ? w_uniform : "Empty"]
     ↳Pockets:
     ↳ID:
     ↳Belt:
     ↳Belt:[(belt && !(belt.flags_1&ABSTRACT_1)) ? belt : "Empty"]" + dat += "
     ↳Belt:[(belt && !(belt.item_flags & ABSTRACT)) ? belt : "Empty"]" if(has_breathable_mask && istype(belt, /obj/item/tank)) dat += " [internal ? "Disable Internals" : "Set Internals"]" dat += "
     ↳Pockets:[(l_store && !(l_store.flags_1&ABSTRACT_1)) ? "Left (Full)" : "Left (Empty)"]" - dat += " [(r_store && !(r_store.flags_1&ABSTRACT_1)) ? "Right (Full)" : "Right (Empty)"]
     ↳ID:[(wear_id && !(wear_id.flags_1&ABSTRACT_1)) ? wear_id : "Empty"]
     ↳Pockets:[(l_store && !(l_store.item_flags & ABSTRACT)) ? "Left (Full)" : "Left (Empty)"]" + dat += " [(r_store && !(r_store.item_flags & ABSTRACT)) ? "Right (Full)" : "Right (Empty)"]
     ↳ID:[(wear_id && !(wear_id.item_flags & ABSTRACT)) ? wear_id : "Empty"]
    Handcuffed: Remove
    " - if (points.len && height > 20 && width > 20) - var/min = points[1] - var/max = points[1] - for (var/v in points) - if (v < min) - min = v - if (v > max) - max = v - var/cells = (height - 20) / 20 - if (cells > round(cells)) - cells = round(cells) + 1 - var/diff = max - min - var/ost = diff / cells - if (min > 0) - min = max(min - ost, 0) - diff = max - min - ost = diff / cells - var/cval = max - var/cwid = width / (points.len + 1) - for (var/y = cells, y > 0, y--) - if (y == cells) - output += "" - else - output += "" - for (var/x = 0, x <= points.len, x++) - if (x == 0) - output += "" - else - var/v = points[x] - if (v >= cval) - output += "" - else - output += "" - output += "" - cval -= ost - output += "" - else - output += "" - output += "" - - return "[output]
    [round(cval - ost)]  
    [base_text]
    [base_text]
    " - diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm index 0c67b8267d..03215aa6d6 100644 --- a/code/modules/surgery/advanced/brainwashing.dm +++ b/code/modules/surgery/advanced/brainwashing.dm @@ -46,7 +46,7 @@ user.visible_message("[user] successfully brainwashes [target]!", "You succeed in brainwashing [target].") to_chat(target, "A new compulsion fills your mind... you feel forced to obey it!") brainwash(target, objective) - message_admins("[key_name_admin(user)] surgically brainwashed [key_name_admin(target)] with the objective '[objective]'.") + message_admins("[ADMIN_LOOKUPFLW(user)] surgically brainwashed [ADMIN_LOOKUPFLW(target)] with the objective '[objective]'.") log_game("[key_name(user)] surgically brainwashed [key_name(target)] with the objective '[objective]'.") return TRUE diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index aa0b714cc8..87e13955fe 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -19,7 +19,7 @@ affecting.receive_damage(CLAMP(brute_dam/2, 15, 50), CLAMP(burn_dam/2, 0, 50)) //Damage the chest based on limb's existing damage C.visible_message("[C]'s [src.name] has been violently dismembered!") C.emote("scream") - C.SendSignal(COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) + SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) drop_limb() if(dam_type == BURN) @@ -102,7 +102,7 @@ I.forceMove(src) if(!C.has_embedded_objects()) C.clear_alert("embeddedobject") - C.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded") + SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "embedded") if(!special) if(C.dna) @@ -199,7 +199,7 @@ /obj/item/bodypart/r_leg/drop_limb(special) if(owner && !special) if(owner.legcuffed) - owner.legcuffed.forceMove(drop_location()) + owner.legcuffed.forceMove(owner.drop_location()) //At this point bodypart is still in nullspace owner.legcuffed.dropped(owner) owner.legcuffed = null owner.update_inv_legcuffed() @@ -210,7 +210,7 @@ /obj/item/bodypart/l_leg/drop_limb(special) //copypasta if(owner && !special) if(owner.legcuffed) - owner.legcuffed.forceMove(drop_location()) + owner.legcuffed.forceMove(owner.drop_location()) owner.legcuffed.dropped(owner) owner.legcuffed = null owner.update_inv_legcuffed() diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index 12531a9ee5..91336331c4 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -121,7 +121,7 @@ I.forceMove(T) clear_alert("embeddedobject") - SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded") + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "embedded") /mob/living/carbon/proc/has_embedded_objects() . = 0 diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm index fe4f1a6edf..e57f8f686b 100644 --- a/code/modules/surgery/cavity_implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -29,9 +29,13 @@ /datum/surgery_step/handle_cavity/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) var/obj/item/bodypart/chest/CH = target.get_bodypart(BODY_ZONE_CHEST) if(tool) - if(IC || tool.w_class > WEIGHT_CLASS_NORMAL || (tool.flags_1 & NODROP_1) || istype(tool, /obj/item/organ)) + if(IC || tool.w_class > WEIGHT_CLASS_NORMAL || (tool.item_flags & NODROP) || istype(tool, /obj/item/organ)) to_chat(user, "You can't seem to fit [tool] in [target]'s [target_zone]!") return 0 + var/obj/item/electronic_assembly/EA = tool + if(istype(EA) && EA.combat_circuits && tool.w_class > WEIGHT_CLASS_SMALL) + to_chat(user, "[tool] is too dangerous to put in [target]'s [target_zone]! Maybe if it was smaller...") + return 0 else user.visible_message("[user] stuffs [tool] into [target]'s [target_zone]!", "You stuff [tool] into [target]'s [target_zone].") user.transferItemToLoc(tool, target, TRUE) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 5c442c1369..ea2385ce5f 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -56,11 +56,13 @@ ..() /obj/item/organ/cyberimp/arm/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return if(prob(15/severity) && owner) to_chat(owner, "[src] is hit by EMP!") // give the owner an idea about why his implant is glitching Retract() - ..() /obj/item/organ/cyberimp/arm/proc/Retract() if(!holder || (holder in src)) @@ -84,7 +86,7 @@ holder = item - holder.flags_1 |= NODROP_1 + holder.item_flags |= NODROP holder.resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF holder.slot_flags = null holder.materials = null @@ -134,6 +136,9 @@ /obj/item/organ/cyberimp/arm/gun/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return if(prob(30/severity) && owner && !crit_fail) Retract() owner.visible_message("A loud bang comes from [owner]\'s [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm!") @@ -143,8 +148,6 @@ owner.IgniteMob() owner.adjustFireLoss(25) crit_fail = 1 - else // The gun will still discharge anyway. - ..() /obj/item/organ/cyberimp/arm/gun/laser diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index e50e0e3fc3..0302dd2cae 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -13,7 +13,7 @@ var/hunger_threshold = NUTRITION_LEVEL_STARVING var/synthesizing = 0 var/poison_amount = 5 - slot = ORGAN_SLOT_STOMACH + slot = ORGAN_SLOT_STOMACH_AID /obj/item/organ/cyberimp/chest/nutriment/on_life() if(synthesizing) @@ -29,7 +29,8 @@ synthesizing = FALSE /obj/item/organ/cyberimp/chest/nutriment/emp_act(severity) - if(!owner) + . = ..() + if(!owner || . & EMP_PROTECT_SELF) return owner.reagents.add_reagent("bad_food", poison_amount / severity) to_chat(owner, "You feel like your insides are burning.") @@ -89,7 +90,8 @@ revive_cost += 40 /obj/item/organ/cyberimp/chest/reviver/emp_act(severity) - if(!owner) + . = ..() + if(!owner || . & EMP_PROTECT_SELF) return if(reviving) @@ -198,4 +200,3 @@ toggle(silent = TRUE) return 0 - diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 57d81cad28..38967711fe 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -30,12 +30,12 @@ w_class = WEIGHT_CLASS_TINY /obj/item/organ/cyberimp/brain/emp_act(severity) - if(!owner) + . = ..() + if(!owner || . & EMP_PROTECT_SELF) return var/stun_amount = 200/severity owner.Stun(stun_amount) to_chat(owner, "Your body seizes up!") - return stun_amount /obj/item/organ/cyberimp/brain/anti_drop @@ -51,7 +51,7 @@ active = !active if(active) for(var/obj/item/I in owner.held_items) - if(!(I.flags_1 & NODROP_1)) + if(!(I.item_flags & NODROP)) stored_items += I var/list/L = owner.get_empty_held_indexes() @@ -62,7 +62,7 @@ else for(var/obj/item/I in stored_items) to_chat(owner, "Your [owner.get_held_index_name(owner.get_held_index_of_item(I))]'s grip tightens.") - I.flags_1 |= NODROP_1 + I.item_flags |= NODROP else release_items() @@ -70,13 +70,13 @@ /obj/item/organ/cyberimp/brain/anti_drop/emp_act(severity) - if(!owner) + . = ..() + if(!owner || . & EMP_PROTECT_SELF) return var/range = severity ? 10 : 5 var/atom/A if(active) release_items() - ..() for(var/obj/item/I in stored_items) A = pick(oview(range)) I.throw_at(A, range, 2) @@ -86,7 +86,7 @@ /obj/item/organ/cyberimp/brain/anti_drop/proc/release_items() for(var/obj/item/I in stored_items) - I.flags_1 &= ~NODROP_1 + I.item_flags &= ~NODROP stored_items = list() @@ -113,11 +113,11 @@ owner.SetKnockdown(STUN_SET_AMOUNT) /obj/item/organ/cyberimp/brain/anti_stun/emp_act(severity) - if(crit_fail) + . = ..() + if(crit_fail || . & EMP_PROTECT_SELF) return crit_fail = TRUE addtimer(CALLBACK(src, .proc/reboot), 90 / severity) - ..() /obj/item/organ/cyberimp/brain/anti_stun/proc/reboot() crit_fail = FALSE @@ -135,12 +135,13 @@ w_class = WEIGHT_CLASS_TINY /obj/item/organ/cyberimp/mouth/breathing_tube/emp_act(severity) + . = ..() + if(!owner || . & EMP_PROTECT_SELF) + return if(prob(60/severity)) to_chat(owner, "Your breathing tube suddenly closes!") owner.losebreath += 2 - - //BOX O' IMPLANTS /obj/item/storage/box/cyber_implants diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index fc0bdd4c04..d38e76ae6e 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -89,16 +89,16 @@ status = ORGAN_ROBOTIC /obj/item/organ/eyes/robotic/emp_act(severity) - if(!owner) + . = ..() + if(!owner || . & EMP_PROTECT_SELF) + return + if(prob(10 * severity)) return - if(severity > 1) - if(prob(10 * severity)) - return to_chat(owner, "Static obfuscates your vision!") owner.flash_act(visual = 1) /obj/item/organ/eyes/robotic/xray - name = "X-ray eyes" + name = "\improper X-ray eyes" desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile." eye_color = "000" see_in_dark = 8 @@ -232,9 +232,11 @@ owner.cut_overlay(mob_overlay) /obj/item/organ/eyes/robotic/glow/emp_act() - if(active) - deactivate(silent = TRUE) - + . = ..() + if(!active || . & EMP_PROTECT_SELF) + return + deactivate(silent = TRUE) + /obj/item/organ/eyes/robotic/glow/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = FALSE) . = ..() if (mobhook && mobhook.parent != M) diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 6de223e67b..5424486649 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -152,6 +152,9 @@ synthetic = TRUE /obj/item/organ/heart/cybernetic/emp_act() + . = ..() + if(. & EMP_PROTECT_SELF) + return Stop() /obj/item/organ/heart/freedom @@ -167,4 +170,4 @@ to_chat(owner, "You feel yourself dying, but you refuse to give up!") owner.heal_overall_damage(15, 15) if(owner.reagents.get_reagent_amount("ephedrine") < 20) - owner.reagents.add_reagent("ephedrine", 10) \ No newline at end of file + owner.reagents.add_reagent("ephedrine", 10) diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index 360e58924b..cd9e60d3d1 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -27,10 +27,9 @@ if(filterToxins && !owner.has_trait(TRAIT_TOXINLOVER)) //handle liver toxin filtration - var/static/list/toxinstypecache = typecacheof(/datum/reagent/toxin) for(var/I in C.reagents.reagent_list) var/datum/reagent/pickedreagent = I - if(is_type_in_typecache(pickedreagent, toxinstypecache)) + if(istype(pickedreagent, /datum/reagent/toxin)) var/thisamount = C.reagents.get_reagent_amount(initial(pickedreagent.id)) if (thisamount <= toxTolerance && thisamount) C.reagents.remove_reagent(initial(pickedreagent.id), 1) @@ -78,6 +77,9 @@ toxLethality = 0.008 //20% less damage than a normal liver /obj/item/organ/liver/cybernetic/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return switch(severity) if(1) damage+=100 diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index a3fe2202b6..9e53a902a2 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -267,7 +267,7 @@ H.adjustFireLoss(nitryl_pp/4) gas_breathed = breath_gases[/datum/gas/nitryl][MOLES] if (gas_breathed > gas_stimulation_min) - H.reagents.add_reagent("nitryl_gas",1) + H.reagents.add_reagent("no2",1) breath_gases[/datum/gas/nitryl][MOLES]-=gas_breathed // Stimulum @@ -346,6 +346,9 @@ synthetic = TRUE /obj/item/organ/lungs/cybernetic/emp_act() + . = ..() + if(. & EMP_PROTECT_SELF) + return owner.losebreath = 20 diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm index 3ddf658ecd..cb7833a373 100755 --- a/code/modules/surgery/organs/stomach.dm +++ b/code/modules/surgery/organs/stomach.dm @@ -39,22 +39,22 @@ switch(H.disgust) if(0 to DISGUST_LEVEL_GROSS) H.clear_alert("disgust") - H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "disgust") + SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "disgust") if(DISGUST_LEVEL_GROSS to DISGUST_LEVEL_VERYGROSS) H.throw_alert("disgust", /obj/screen/alert/gross) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/gross) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/gross) if(DISGUST_LEVEL_VERYGROSS to DISGUST_LEVEL_DISGUSTED) H.throw_alert("disgust", /obj/screen/alert/verygross) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/verygross) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/verygross) if(DISGUST_LEVEL_DISGUSTED to INFINITY) H.throw_alert("disgust", /obj/screen/alert/disgusted) - H.SendSignal(COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/disgusted) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/disgusted) /obj/item/organ/stomach/Remove(mob/living/carbon/M, special = 0) var/mob/living/carbon/human/H = owner if(istype(H)) H.clear_alert("disgust") - H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "disgust") + SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "disgust") ..() /obj/item/organ/stomach/fly diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 10c825cb4a..48392f70a3 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -488,7 +488,7 @@ L.lay_down() //aka get up L.SetStun(0) L.SetKnockdown(0) - L.SetUnconscious(0) //i said get up i don't care if you're being tazed + L.SetUnconscious(0) //i said get up i don't care if you're being tased //SIT else if((findtext(message, sit_words))) @@ -569,7 +569,7 @@ cooldown = COOLDOWN_NONE if(message_admins) - message_admins("[key_name_admin(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") + message_admins("[ADMIN_LOOKUPFLW(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") log_game("[key_name(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") SSblackbox.record_feedback("tally", "voice_of_god", 1, log_message) diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm index 548a73627d..451ae02dac 100644 --- a/code/modules/surgery/remove_embedded_object.dm +++ b/code/modules/surgery/remove_embedded_object.dm @@ -30,7 +30,7 @@ L.embedded_objects -= I if(!H.has_embedded_objects()) H.clear_alert("embeddedobject") - H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded") + SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "embedded") if(objects > 0) user.visible_message("[user] successfully removes [objects] objects from [H]'s [L]!", "You successfully remove [objects] objects from [H]'s [L.name].") diff --git a/code/modules/tgui/states/default.dm b/code/modules/tgui/states/default.dm index 0e4844dced..c6741f20b8 100644 --- a/code/modules/tgui/states/default.dm +++ b/code/modules/tgui/states/default.dm @@ -7,7 +7,7 @@ GLOBAL_DATUM_INIT(default_state, /datum/ui_state/default, new) /datum/ui_state/default/can_use_topic(src_object, mob/user) - return user.default_can_use_topic(src_object) // Call the individual mob-overriden procs. + return user.default_can_use_topic(src_object) // Call the individual mob-overridden procs. /mob/proc/default_can_use_topic(src_object) return UI_CLOSE // Don't allow interaction by default. diff --git a/code/modules/uplink/uplink.dm b/code/modules/uplink/uplink.dm index 8586244180..4c735a2e3c 100644 --- a/code/modules/uplink/uplink.dm +++ b/code/modules/uplink/uplink.dm @@ -13,6 +13,7 @@ GLOBAL_LIST_EMPTY(uplinks) var/active = FALSE var/lockable = TRUE var/locked = TRUE + var/allow_restricted = TRUE var/telecrystals var/selected_cat var/owner = null @@ -25,9 +26,9 @@ GLOBAL_LIST_EMPTY(uplinks) if(!isitem(parent)) return COMPONENT_INCOMPATIBLE GLOB.uplinks += src - uplink_items = get_uplink_items(gamemode) - RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) - RegisterSignal(COMSIG_ITEM_ATTACK_SELF, .proc/interact) + uplink_items = get_uplink_items(gamemode, TRUE, allow_restricted) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/interact) owner = _owner if(owner) LAZYINITLIST(GLOB.uplink_purchase_logs_by_key) @@ -66,32 +67,24 @@ GLOBAL_LIST_EMPTY(uplinks) /datum/component/uplink/proc/set_gamemode(_gamemode) gamemode = _gamemode - uplink_items = get_uplink_items(gamemode) + uplink_items = get_uplink_items(gamemode, TRUE, allow_restricted) /datum/component/uplink/proc/OnAttackBy(obj/item/I, mob/user) if(!active) return //no hitting everyone/everything just to try to slot tcs in! if(istype(I, /obj/item/stack/telecrystal)) LoadTC(user, I) - for(var/item in subtypesof(/datum/uplink_item)) - var/datum/uplink_item/UI = item - var/path = null - if(initial(UI.refund_path)) - path = initial(UI.refund_path) - else - path = initial(UI.item) - var/cost = 0 - if(initial(UI.refund_amount)) - cost = initial(UI.refund_amount) - else - cost = initial(UI.cost) - var/refundable = initial(UI.refundable) - if(I.type == path && refundable && I.check_uplink_validity()) - telecrystals += cost - purchase_log.total_spent -= cost - to_chat(user, "[I] refunded.") - qdel(I) - return + for(var/category in uplink_items) + for(var/item in uplink_items[category]) + var/datum/uplink_item/UI = uplink_items[category][item] + var/path = UI.refund_path || UI.item + var/cost = UI.refund_amount || UI.cost + if(I.type == path && UI.refundable && I.check_uplink_validity()) + telecrystals += cost + purchase_log.total_spent -= cost + to_chat(user, "[I] refunded.") + qdel(I) + return /datum/component/uplink/proc/interact(mob/user) if(locked) @@ -185,4 +178,3 @@ GLOBAL_LIST_EMPTY(uplinks) SSblackbox.record_feedback("nested tally", "traitor_uplink_items_bought", 1, list("[initial(U.name)]", "[U.cost]")) return TRUE - diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm index 2ce717f0de..2e91879006 100644 --- a/code/modules/uplink/uplink_devices.dm +++ b/code/modules/uplink/uplink_devices.dm @@ -1,36 +1,60 @@ - // A collection of pre-set uplinks, for admin spawns. -/obj/item/radio/uplink/Initialize(mapload, _owner, _tc_amount = 20) - . = ..() + +// Radio-like uplink; not an actual radio because this uplink is most commonly +// used for nuke ops, for whom opening the radio GUI and the uplink GUI +// simultaneously is an annoying distraction. +/obj/item/uplink + name = "station bounced radio" + icon = 'icons/obj/radio.dmi' icon_state = "radio" + item_state = "walkietalkie" + desc = "A basic handheld radio that communicates with local telecommunication networks." lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - AddComponent(/datum/component/uplink, _owner, FALSE, TRUE, null, _tc_amount) + dog_fashion = /datum/dog_fashion/back -/obj/item/radio/uplink/nuclear/Initialize() + flags_1 = CONDUCT_1 + slot_flags = ITEM_SLOT_BELT + throw_speed = 3 + throw_range = 7 + w_class = WEIGHT_CLASS_SMALL + +/obj/item/uplink/Initialize(mapload, owner, tc_amount = 20) + . = ..() + AddComponent(/datum/component/uplink, owner, FALSE, TRUE, null, tc_amount) + +/obj/item/uplink/nuclear/Initialize() . = ..() GET_COMPONENT(hidden_uplink, /datum/component/uplink) hidden_uplink.set_gamemode(/datum/game_mode/nuclear) -/obj/item/radio/uplink/clownop/Initialize() +/obj/item/uplink/nuclear_restricted/Initialize() + . = ..() + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + hidden_uplink.allow_restricted = FALSE + hidden_uplink.set_gamemode(/datum/game_mode/nuclear) + +/obj/item/uplink/clownop/Initialize() . = ..() GET_COMPONENT(hidden_uplink, /datum/component/uplink) hidden_uplink.set_gamemode(/datum/game_mode/nuclear/clown_ops) -/obj/item/multitool/uplink/Initialize(mapload, _owner, _tc_amount = 20) - . = ..() - AddComponent(/datum/component/uplink, _owner, FALSE, TRUE, null, _tc_amount) - -/obj/item/pen/uplink/Initialize(mapload, _owner, _tc_amount = 20) - . = ..() - AddComponent(/datum/component/uplink) - traitor_unlock_degrees = 360 - -/obj/item/radio/uplink/old +/obj/item/uplink/old name = "dusty radio" desc = "A dusty looking radio." -/obj/item/radio/uplink/old/Initialize(mapload, _owner, _tc_amount = 10) +/obj/item/uplink/old/Initialize(mapload, owner, tc_amount = 10) . = ..() GET_COMPONENT(hidden_uplink, /datum/component/uplink) hidden_uplink.name = "dusty radio" + +// Multitool uplink +/obj/item/multitool/uplink/Initialize(mapload, owner, tc_amount = 20) + . = ..() + AddComponent(/datum/component/uplink, owner, FALSE, TRUE, null, tc_amount) + +// Pen uplink +/obj/item/pen/uplink/Initialize(mapload, owner, tc_amount = 20) + . = ..() + AddComponent(/datum/component/uplink, owner, TRUE, FALSE, null, tc_amount) + traitor_unlock_degrees = 360 diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 2fba13522c..a9f2c63e13 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1,6 +1,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) -/proc/get_uplink_items(var/datum/game_mode/gamemode = null, allow_sales = TRUE) +/proc/get_uplink_items(var/datum/game_mode/gamemode = null, allow_sales = TRUE, allow_restricted = TRUE) var/list/filtered_uplink_items = list() var/list/sale_items = list() @@ -20,6 +20,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) continue if(I.player_minimum && I.player_minimum > GLOB.joined_player_list.len) continue + if (I.restricted && !allow_restricted) + continue if(!filtered_uplink_items[I.category]) filtered_uplink_items[I.category] = list() @@ -72,6 +74,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) var/list/restricted_roles = list() //If this uplink item is only available to certain roles. Roles are dependent on the frequency chip or stored ID. var/player_minimum //The minimum crew size needed for this item to be added to uplinks. var/purchase_log_vis = TRUE // Visible in the purchase log? + var/restricted = FALSE // Adds restrictions for VR/Events /datum/uplink_item/New() . = ..() @@ -379,6 +382,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 12 surplus = 35 include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + restricted = TRUE /datum/uplink_item/dangerous/guardian name = "Holoparasites" @@ -389,6 +393,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 0 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) player_minimum = 25 + restricted = TRUE // Ammunition /datum/uplink_item/ammo @@ -584,6 +589,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 25 refundable = TRUE include_modes = list(/datum/game_mode/nuclear) + restricted = TRUE /datum/uplink_item/support/reinforcement/assault_borg name = "Syndicate Assault Cyborg" @@ -591,6 +597,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/antag_spawner/nuke_ops/borg_tele/assault refundable = TRUE cost = 65 + restricted = TRUE /datum/uplink_item/support/reinforcement/medical_borg name = "Syndicate Medical Cyborg" @@ -598,6 +605,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/antag_spawner/nuke_ops/borg_tele/medical refundable = TRUE cost = 35 + restricted = TRUE /datum/uplink_item/support/gygax name = "Gygax Exosuit" @@ -627,6 +635,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/antag_spawner/nuke_ops/clown cost = 20 include_modes = list(/datum/game_mode/nuclear/clown_ops) + restricted = TRUE // Stealthy Weapons /datum/uplink_item/stealthy_weapons @@ -719,6 +728,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) them for longer. Beware, it has a chance to detonate your PDA." item = /obj/item/cartridge/virus/syndicate cost = 6 + restricted = TRUE /datum/uplink_item/stealthy_weapons/suppressor name = "Universal Suppressor" @@ -780,7 +790,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "Combat Banana Shoes" desc = "While making the wearer immune to most slipping attacks like regular combat clown shoes, these shoes \ can generate a large number of synthetic banana peels as the wearer walks, slipping up would-be pursuers. They also \ - squeek significantly louder." + squeak significantly louder." item = /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat cost = 6 surplus = 0 @@ -794,6 +804,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) telecrystals normally." item = /obj/item/cartridge/virus/frame cost = 4 + restricted = TRUE /datum/uplink_item/stealthy_tools/agent_card name = "Agent Identification Card" @@ -978,6 +989,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/encryptionkey/binary cost = 5 surplus = 75 + restricted = TRUE /datum/uplink_item/device_tools/encryptionkey name = "Syndicate Encryption Key" @@ -986,6 +998,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/encryptionkey/syndicate cost = 2 surplus = 75 + restricted = TRUE /datum/uplink_item/device_tools/ai_detector name = "Artificial Intelligence Detector" @@ -1110,6 +1123,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 30 surplus = 0 include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + restricted = TRUE /datum/uplink_item/device_tools/shield name = "Energy Shield" @@ -1144,6 +1158,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) desc = "A potion recovered at great risk by undercover syndicate operatives and then subsequently modified with syndicate technology. Using it will make any animal sentient, and bound to serve you, as well as implanting an internal radio for communication and an internal ID card for opening doors." cost = 4 include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + restricted = TRUE /datum/uplink_item/device_tools/telecrystal name = "Raw Telecrystal" @@ -1199,6 +1214,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 4 // An empty uplink is kinda useless. surplus = 0 + restricted = TRUE /datum/uplink_item/implants/adrenal name = "Adrenal Implant" @@ -1231,13 +1247,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/syndie_kit/imp_macrobomb cost = 20 include_modes = list(/datum/game_mode/nuclear) + restricted = TRUE /datum/uplink_item/implants/radio name = "Internal Syndicate Radio Implant" desc = "An implant injected into the body, allowing the use of an internal syndicate radio. Used just like a regular headset, but can be disabled to use external headsets normally and to avoid detection." item = /obj/item/storage/box/syndie_kit/imp_radio cost = 4 - + restricted = TRUE // Cybernetics /datum/uplink_item/cyber_implants @@ -1252,7 +1269,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 8 /datum/uplink_item/cyber_implants/xray - name = "X-Ray Vision Implant" + name = "X-ray Vision Implant" desc = "These cybernetic eyes will give you X-ray vision. Comes with an autosurgeon." item = /obj/item/autosurgeon/xray_eyes cost = 10 @@ -1395,6 +1412,16 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) limited_stock = 2 //you can't use more than two! restricted_roles = list("Shaft Miner") +/datum/uplink_item/role_restricted/blastcannon + name = "Blast Cannon" + desc = "A highly specialized weapon, the Blast Cannon is actually relatively simple. It contains an attachment for a tank transfer valve mounted to an angled pipe specially constructed \ + withstand extreme pressure and temperatures, and has a mechanical trigger for triggering the transfer valve. Essentially, it turns the explosive force of a bomb into a narrow-angle \ + blast wave \"projectile\". Aspiring scientists may find this highly useful, as forcing the pressure shockwave into a narrow angle seems to be able to bypass whatever quirk of physics \ + disallows explosive ranges above a certain distance, allowing for the device to use the theoretical yield of a transfer valve bomb, instead of the factual yield." + item = /obj/item/gun/blastcannon + cost = 14 //High cost because of the potential for extreme damage in the hands of a skilled scientist. + restricted_roles = list("Research Director", "Scientist") + /datum/uplink_item/device_tools/clown_bomb name = "Clown Bomb" desc = "The Clown bomb is a hilarious device capable of massive pranks. It has an adjustable timer, \ diff --git a/code/modules/uplink/uplink_purchase_log.dm b/code/modules/uplink/uplink_purchase_log.dm index 1226fcd27a..293191b170 100644 --- a/code/modules/uplink/uplink_purchase_log.dm +++ b/code/modules/uplink/uplink_purchase_log.dm @@ -3,12 +3,10 @@ GLOBAL_LIST(uplink_purchase_logs_by_key) //assoc key = /datum/uplink_purchase_lo /datum/uplink_purchase_log var/owner var/list/purchase_log //assoc path-of-item = /datum/uplink_purchase_entry - var/datum/component/uplink/parent var/total_spent = 0 /datum/uplink_purchase_log/New(_owner, datum/component/uplink/_parent) owner = _owner - parent = _parent LAZYINITLIST(GLOB.uplink_purchase_logs_by_key) if(owner) if(GLOB.uplink_purchase_logs_by_key[owner]) @@ -19,7 +17,6 @@ GLOBAL_LIST(uplink_purchase_logs_by_key) //assoc key = /datum/uplink_purchase_lo /datum/uplink_purchase_log/Destroy() purchase_log = null - parent = null if(GLOB.uplink_purchase_logs_by_key[owner] == src) GLOB.uplink_purchase_logs_by_key -= owner return ..() diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm index ac5be5b51c..eb6a9a92e2 100644 --- a/code/modules/vehicles/atv.dm +++ b/code/modules/vehicles/atv.dm @@ -32,7 +32,6 @@ /obj/machinery/porta_turret/syndicate/vehicle_turret name = "mounted turret" scan_range = 7 - emp_vunerable = 1 density = FALSE /obj/vehicle/ridden/atv/turret/Initialize() diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index ae4c83d016..5a12635963 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -1,7 +1,3 @@ -#define STANDARD_CHARGE 1 -#define CONTRABAND_CHARGE 2 -#define COIN_CHARGE 3 - /* * Vending machine types - Can be found under /code/modules/vending/ */ @@ -21,7 +17,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C */ /datum/data/vending_product - var/product_name = "generic" + name = "generic" var/product_path = null var/amount = 0 var/max_amount = 0 @@ -33,7 +29,6 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C icon = 'icons/obj/vending.dmi' icon_state = "generic" layer = BELOW_OBJ_LAYER - anchored = TRUE density = TRUE verb_say = "beeps" verb_ask = "beeps" @@ -75,7 +70,6 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C var/dish_quants = list() //used by the snack machine's custom compartment to count dishes. var/obj/item/vending_refill/refill_canister = null //The type of refill canisters used by this machine. - var/refill_count = 3 //The number of canisters the vending machine uses /obj/machinery/vending/Initialize() var/build_inv = FALSE @@ -85,9 +79,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C . = ..() wires = new /datum/wires/vending(src) if(build_inv) //non-constructable vending machine - build_inventory(products) - build_inventory(contraband, 1) - build_inventory(premium, 0, 1) + build_inventory(products, product_records) + build_inventory(contraband, hidden_records) + build_inventory(premium, coin_records) slogan_list = splittext(product_slogans, ";") // So not all machines speak at the exact same time. @@ -103,17 +97,17 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C return ..() /obj/machinery/vending/RefreshParts() //Better would be to make constructable child - if(component_parts) - product_records = list() - hidden_records = list() - coin_records = list() - build_inventory(products, start_empty = 1) - build_inventory(contraband, 1, start_empty = 1) - build_inventory(premium, 0, 1, start_empty = 1) - for(var/obj/item/vending_refill/VR in component_parts) - refill_inventory(VR, product_records, STANDARD_CHARGE) - refill_inventory(VR, coin_records, COIN_CHARGE) - refill_inventory(VR, hidden_records, CONTRABAND_CHARGE) + if(!component_parts) + return + + product_records = list() + hidden_records = list() + coin_records = list() + build_inventory(products, product_records, start_empty = TRUE) + build_inventory(contraband, hidden_records, start_empty = TRUE) + build_inventory(premium, coin_records, start_empty = TRUE) + for(var/obj/item/vending_refill/VR in component_parts) + restock(VR) /obj/machinery/vending/deconstruct(disassembled = TRUE) if(!refill_canister) //the non constructable vendors drop metal instead of a machine frame. @@ -125,25 +119,33 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/machinery/vending/obj_break(damage_flag) if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1)) - var/dump_amount = 0 - for(var/datum/data/vending_product/R in product_records) - if(R.amount <= 0) //Try to use a record that actually has something to dump. - continue - var/dump_path = R.product_path - if(!dump_path) - continue - - while(R.amount>0) - var/obj/O = new dump_path(loc) - step(O, pick(GLOB.alldirs)) //we only drop 20% of the total of each products and spread it - R.amount -= 5 //around to not fill the turf with too many objects. - dump_amount++ - if(dump_amount > 15) //so we don't drop too many items (e.g. ClothesMate) - break stat |= BROKEN icon_state = "[initial(icon_state)]-broken" -/obj/machinery/vending/proc/build_inventory(list/productlist, hidden=0, req_coin=0, start_empty = null) + var/dump_amount = 0 + var/found_anything = TRUE + while (found_anything) + found_anything = FALSE + for(var/record in shuffle(product_records)) + var/datum/data/vending_product/R = record + if(R.amount <= 0) //Try to use a record that actually has something to dump. + continue + var/dump_path = R.product_path + if(!dump_path) + continue + R.amount-- + // busting open a vendor will destroy some of the contents + if(found_anything && prob(80)) + continue + + var/obj/O = new dump_path(loc) + step(O, pick(GLOB.alldirs)) + found_anything = TRUE + dump_amount++ + if (dump_amount >= 16) + return + +/obj/machinery/vending/proc/build_inventory(list/productlist, list/recordlist, start_empty = FALSE) for(var/typepath in productlist) var/amount = productlist[typepath] if(isnull(amount)) @@ -151,47 +153,54 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C var/atom/temp = typepath var/datum/data/vending_product/R = new /datum/data/vending_product() - R.product_name = initial(temp.name) + R.name = initial(temp.name) R.product_path = typepath if(!start_empty) R.amount = amount R.max_amount = amount - R.display_color = pick("red","blue","green") + R.display_color = pick("#ff8080","#80ff80","#8080ff") + recordlist += R - if(hidden) - hidden_records += R - else if(req_coin) - coin_records += R - else - product_records += R +/obj/machinery/vending/proc/restock(obj/item/vending_refill/canister) + if (!canister.products) + canister.products = products.Copy() + if (!canister.contraband) + canister.contraband = contraband.Copy() + if (!canister.premium) + canister.premium = premium.Copy() + . = 0 + . += refill_inventory(canister.products, product_records) + . += refill_inventory(canister.contraband, hidden_records) + . += refill_inventory(canister.premium, coin_records) -/obj/machinery/vending/proc/refill_inventory(obj/item/vending_refill/refill, datum/data/vending_product/machine, var/charge_type = STANDARD_CHARGE) - var/total = 0 - var/to_restock = 0 +/obj/machinery/vending/proc/refill_inventory(list/productlist, list/recordlist) + . = 0 + for(var/R in recordlist) + var/datum/data/vending_product/record = R + var/diff = min(record.max_amount - record.amount, productlist[record.product_path]) + if (diff) + productlist[record.product_path] -= diff + record.amount += diff + . += diff - for(var/datum/data/vending_product/machine_content in machine) - if(machine_content.amount == 0 && refill.charges[charge_type] > 0) - machine_content.amount++ - refill.charges[charge_type]-- - total++ - to_restock += machine_content.max_amount - machine_content.amount - if(to_restock <= refill.charges[charge_type]) - for(var/datum/data/vending_product/machine_content in machine) - machine_content.amount = machine_content.max_amount - refill.charges[charge_type] -= to_restock - total += to_restock - else - var/tmp_charges = refill.charges[charge_type] - for(var/datum/data/vending_product/machine_content in machine) - if(refill.charges[charge_type] == 0) - break - var/restock = CEILING(((machine_content.max_amount - machine_content.amount)/to_restock)*tmp_charges, 1) - if(restock > refill.charges[charge_type]) - restock = refill.charges[charge_type] - machine_content.amount += restock - refill.charges[charge_type] -= restock - total += restock - return total +/obj/machinery/vending/proc/update_canister() + if (!component_parts) + return + + var/obj/item/vending_refill/R = locate() in component_parts + if (!R) + CRASH("Constructible vending machine did not have a refill canister") + return + + R.products = unbuild_inventory(product_records) + R.contraband = unbuild_inventory(hidden_records) + R.premium = unbuild_inventory(coin_records) + +/obj/machinery/vending/proc/unbuild_inventory(list/recordlist) + . = list() + for(var/R in recordlist) + var/datum/data/vending_product/record = R + .[record.product_path] += record.amount /obj/machinery/vending/crowbar_act(mob/living/user, obj/item/I) if(!component_parts) @@ -249,46 +258,52 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C bill = new S.type(src, 1) to_chat(user, "You insert [I] into [src].") return - else if(istype(I, refill_canister) && refill_canister != null) - if(stat & (BROKEN|NOPOWER)) - to_chat(user, "It does nothing.") - else if(panel_open) + else if(refill_canister && istype(I, refill_canister)) + if (!panel_open) + to_chat(user, "You should probably unscrew the service panel first.") + else if (stat & (BROKEN|NOPOWER)) + to_chat(user, "[src] does not respond.") + else //if the panel is open we attempt to refill the machine var/obj/item/vending_refill/canister = I - if(canister.charges[STANDARD_CHARGE] == 0) - to_chat(user, "This [canister.name] is empty!") + if(canister.get_part_rating() == 0) + to_chat(user, "[canister] is empty!") else - var/transfered = refill_inventory(canister,product_records,STANDARD_CHARGE) - transfered += refill_inventory(canister,coin_records,COIN_CHARGE) - transfered += refill_inventory(canister,hidden_records,CONTRABAND_CHARGE) - if(transfered) - to_chat(user, "You loaded [transfered] items in \the [name].") + // instantiate canister if needed + var/transferred = restock(canister) + if(transferred) + to_chat(user, "You loaded [transferred] items in [src].") else - to_chat(user, "The [name] is fully stocked.") + to_chat(user, "There's nothing to restock!") return - else - to_chat(user, "You should probably unscrew the service panel first.") else return ..() +/obj/machinery/vending/exchange_parts(mob/user, obj/item/storage/part_replacer/W) + if(!istype(W)) + return FALSE + if((flags_1 & NODECONSTRUCT_1) && !W.works_from_distance) + return FALSE + if(!component_parts || !refill_canister) + return FALSE + + var/moved = 0 + if(panel_open || W.works_from_distance) + if(W.works_from_distance) + display_parts(user) + for(var/I in W) + if(istype(I, refill_canister)) + moved += restock(I) + else + display_parts(user) + if(moved) + to_chat(user, "[moved] items restocked.") + W.play_rped_sound() + return TRUE + /obj/machinery/vending/on_deconstruction() - var/product_list = list(product_records, hidden_records, coin_records) - for(var/i=1, i<=3, i++) - for(var/datum/data/vending_product/machine_content in product_list[i]) - while(machine_content.amount !=0) - var/safety = 0 //to avoid infinite loop - for(var/obj/item/vending_refill/VR in component_parts) - safety++ - if(VR.charges[i] < VR.init_charges[i]) - VR.charges[i]++ - machine_content.amount-- - if(!machine_content.amount) - break - else - safety-- - if(safety <= 0) // all refill canisters are full - break - ..() + update_canister() + . = ..() /obj/machinery/vending/emag_act(mob/user) if(obj_flags & EMAGGED) @@ -324,7 +339,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C dat += "Vend " else dat += "Sold out " - dat += "[sanitize(R.product_name)]:" + dat += "[sanitize(R.name)]:" dat += " [R.amount]" dat += "" dat += "" @@ -359,17 +374,11 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C to_chat(usr, "There is no money in this machine.") return if(coin) - if(!usr.get_active_held_item()) - usr.put_in_hands(coin) - else - coin.forceMove(get_turf(src)) + usr.put_in_hands(coin) to_chat(usr, "You remove [coin] from [src].") coin = null if(bill) - if(!usr.get_active_held_item()) - usr.put_in_hands(bill) - else - bill.forceMove(get_turf(src)) + usr.put_in_hands(bill) to_chat(usr, "You remove [bill] from [src].") bill = null @@ -435,7 +444,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C else if (!(R in product_records)) vend_ready = 1 - message_admins("Vending machine exploit attempted by [key_name(usr, usr.client)]!") + message_admins("Vending machine exploit attempted by [ADMIN_LOOKUPFLW(usr)]!") return if (R.amount <= 0) @@ -538,7 +547,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C if(!prob(prb)) return FALSE do_sparks(5, TRUE, src) - var/tmp/check_range = TRUE + var/check_range = TRUE if(electrocute_mob(user, get_area(src), src, 0.7, check_range)) return TRUE else @@ -546,7 +555,3 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/machinery/vending/onTransitZ() return - -#undef STANDARD_CHARGE -#undef CONTRABAND_CHARGE -#undef COIN_CHARGE diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index c0cfe661d7..5cfa454bd9 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -3,7 +3,7 @@ desc = "A vending machine for costumes." icon_state = "theater" icon_deny = "theater-deny" - req_access_txt = "46" //Theatre access needed, unless hacked. + req_access = list(ACCESS_THEATRE) product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!" vend_reply = "Thank you for using AutoDrobe!" products = list(/obj/item/clothing/suit/chickensuit = 1, @@ -115,15 +115,25 @@ premium = list(/obj/item/clothing/suit/pirate/captain = 2, /obj/item/clothing/head/pirate/captain = 2, /obj/item/clothing/head/helmet/roman/fake = 1, - /obj/item/clothing/head/helmet/roman/legionaire/fake = 1, + /obj/item/clothing/head/helmet/roman/legionnaire/fake = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/shield/riot/roman/fake = 1, - /obj/item/skub = 1) + /obj/item/skub = 1, + /obj/item/clothing/under/lobster = 1, // CIT CHANGES + /obj/item/clothing/head/lobsterhat = 1, + /obj/item/clothing/head/drfreezehat = 1, + /obj/item/clothing/suit/dracula = 1, + /obj/item/clothing/suit/drfreeze_coat = 1, + /obj/item/clothing/suit/gothcoat = 2, + /obj/item/clothing/under/draculass = 1, + /obj/item/clothing/under/drfreeze = 1) //End of Cit Changes refill_canister = /obj/item/vending_refill/autodrobe +/obj/machinery/vending/autodrobe/all_access + desc = "A vending machine for costumes. This model appears to have no access restrictions." + req_access = null + /obj/item/vending_refill/autodrobe machine_name = "AutoDrobe" icon_state = "refill_costume" - charges = list(32, 2, 3)// of 96 standard, 6 contraband, 9 premium - init_charges = list(32, 2, 3) diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index 2738e18b19..0d193c451d 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -16,7 +16,6 @@ /obj/item/reagent_containers/food/drinks/bottle/absinthe = 5, /obj/item/reagent_containers/food/drinks/bottle/grappa = 5, /obj/item/reagent_containers/food/drinks/bottle/sake = 5, - /obj/item/reagent_containers/food/drinks/bottle/fernet = 5, /obj/item/reagent_containers/food/drinks/ale = 6, /obj/item/reagent_containers/food/drinks/bottle/orangejuice = 4, /obj/item/reagent_containers/food/drinks/bottle/tomatojuice = 4, @@ -32,14 +31,38 @@ /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12, /obj/item/reagent_containers/food/drinks/flask = 3, /obj/item/reagent_containers/food/drinks/beer = 6) - contraband = list(/obj/item/reagent_containers/food/drinks/mug/tea = 12) + contraband = list(/obj/item/reagent_containers/food/drinks/mug/tea = 12, + /obj/item/reagent_containers/food/drinks/bottle/fernet = 5) product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?" product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!" - req_access_txt = "25" + req_access = list(ACCESS_BAR) refill_canister = /obj/item/vending_refill/boozeomat +/obj/machinery/vending/boozeomat/all_access + desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. This model appears to have no access restrictions." + req_access = null + +/obj/machinery/vending/boozeomat/pubby_maint //abandoned bar on Pubbystation + products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, + /obj/item/reagent_containers/food/drinks/bottle/absinthe = 1, + /obj/item/reagent_containers/food/drinks/bottle/limejuice = 1, + /obj/item/reagent_containers/food/drinks/bottle/cream = 1, + /obj/item/reagent_containers/food/drinks/soda_cans/tonic = 1, + /obj/item/reagent_containers/food/drinks/drinkingglass = 10, + /obj/item/reagent_containers/food/drinks/ice = 3, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6, + /obj/item/reagent_containers/food/drinks/flask = 1) + req_access = null + +/obj/machinery/vending/boozeomat/pubby_captain //Captain's quarters on Pubbystation + products = list(/obj/item/reagent_containers/food/drinks/bottle/rum = 1, + /obj/item/reagent_containers/food/drinks/bottle/wine = 1, + /obj/item/reagent_containers/food/drinks/ale = 1, + /obj/item/reagent_containers/food/drinks/drinkingglass = 6, + /obj/item/reagent_containers/food/drinks/ice = 1, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 4); + req_access = list(ACCESS_CAPTAIN) + /obj/item/vending_refill/boozeomat machine_name = "Booze-O-Mat" icon_state = "refill_booze" - charges = list(61, 4, 0)//of 182 standard, 12 contraband - init_charges = list(61, 4, 0) diff --git a/code/modules/vending/cigarette.dm b/code/modules/vending/cigarette.dm index 15b370833f..6b9334362d 100644 --- a/code/modules/vending/cigarette.dm +++ b/code/modules/vending/cigarette.dm @@ -20,11 +20,27 @@ /obj/item/storage/fancy/cigarettes/cigars/cohiba = 1) refill_canister = /obj/item/vending_refill/cigarette +/obj/machinery/vending/cigarette/beach //Used in the lavaland_biodome_beach.dmm ruin + name = "\improper ShadyCigs Ultra" + desc = "Now with extra premium products!" + product_ads = "Probably not bad for you!;Dope will get you through times of no money better than money will get you through times of no dope!;It's good for you!" + product_slogans = "Turn on, tune in, drop out!;Better living through chemistry!;Toke!;Don't forget to keep a smile on your lips and a song in your heart!" + products = list(/obj/item/storage/fancy/cigarettes = 5, + /obj/item/storage/fancy/cigarettes/cigpack_uplift = 3, + /obj/item/storage/fancy/cigarettes/cigpack_robust = 3, + /obj/item/storage/fancy/cigarettes/cigpack_carp = 3, + /obj/item/storage/fancy/cigarettes/cigpack_midori = 3, + /obj/item/storage/fancy/cigarettes/cigpack_cannabis = 5, + /obj/item/storage/box/matches = 10, + /obj/item/lighter/greyscale = 4, + /obj/item/storage/fancy/rollingpapers = 5) + premium = list(/obj/item/storage/fancy/cigarettes/cigpack_mindbreaker = 5, + /obj/item/clothing/mask/vape = 5, + /obj/item/lighter = 3) + /obj/item/vending_refill/cigarette machine_name = "ShadyCigs Deluxe" icon_state = "refill_smoke" - charges = list(12, 3, 2)// of 36 standard, 9 contraband, 6 premium - init_charges = list(12, 3, 2) /obj/machinery/vending/cigarette/pre_throw(obj/item/I) if(istype(I, /obj/item/lighter)) diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index c644b09cf2..80e422c6a0 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -3,6 +3,7 @@ name = "ClothesMate" //renamed to make the slogan rhyme desc = "A vending machine for clothing." icon_state = "clothes" + icon_deny = "clothes-deny" product_slogans = "Dress for success!;Prepare to look swagalicious!;Look at all this free swag!;Why leave style up to fate? Use the ClothesMate!" vend_reply = "Thank you for using the ClothesMate!" products = list(/obj/item/clothing/head/that = 2, @@ -34,6 +35,7 @@ /obj/item/clothing/neck/tie/red = 1, /obj/item/clothing/neck/tie/black = 1, /obj/item/clothing/neck/tie/horrible = 1, + /obj/item/clothing/neck/scarf/pink = 1, /obj/item/clothing/neck/scarf/red = 1, /obj/item/clothing/neck/scarf/green = 1, /obj/item/clothing/neck/scarf/darkblue = 1, @@ -117,5 +119,3 @@ /obj/item/vending_refill/clothing machine_name = "ClothesMate" icon_state = "refill_clothes" - charges = list(37, 4, 4)// of 111 standard, 12 contraband, 10 premium(?) - init_charges = list(37, 4, 4) diff --git a/code/modules/vending/coffee.dm b/code/modules/vending/coffee.dm index d70cf4ae76..6ac9dd648d 100644 --- a/code/modules/vending/coffee.dm +++ b/code/modules/vending/coffee.dm @@ -4,8 +4,8 @@ product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies" icon_state = "coffee" icon_vend = "coffee-vend" - products = list(/obj/item/reagent_containers/food/drinks/coffee = 25, - /obj/item/reagent_containers/food/drinks/mug/tea = 25, + products = list(/obj/item/reagent_containers/food/drinks/coffee = 25, + /obj/item/reagent_containers/food/drinks/mug/tea = 25, /obj/item/reagent_containers/food/drinks/mug/coco = 25) contraband = list(/obj/item/reagent_containers/food/drinks/ice = 12) refill_canister = /obj/item/vending_refill/coffee @@ -13,5 +13,3 @@ /obj/item/vending_refill/coffee machine_name = "Solar's Best Hot Drinks" icon_state = "refill_joe" - charges = list(25, 4, 0)//of 75 standard, 12 contraband - init_charges = list(25, 4, 0) diff --git a/code/modules/vending/cola.dm b/code/modules/vending/cola.dm index e675b29f81..f61c392ff7 100644 --- a/code/modules/vending/cola.dm +++ b/code/modules/vending/cola.dm @@ -22,8 +22,6 @@ /obj/item/vending_refill/cola machine_name = "Robust Softdrinks" icon_state = "refill_cola" - charges = list(30, 4, 1)//of 90 standard, 12 contraband, 1 premium - init_charges = list(30, 4, 1) /obj/machinery/vending/cola/random name = "\improper Random Drinkies" diff --git a/code/modules/vending/engineering.dm b/code/modules/vending/engineering.dm index 5933ab8fa9..d36f4a4849 100644 --- a/code/modules/vending/engineering.dm +++ b/code/modules/vending/engineering.dm @@ -4,7 +4,7 @@ desc = "Everything you need for do-it-yourself station repair." icon_state = "engi" icon_deny = "engi-deny" - req_access_txt = "11" + req_access = list(ACCESS_ENGINE_EQUIP) products = list(/obj/item/clothing/under/rank/chief_engineer = 4, /obj/item/clothing/under/rank/engineer = 4, /obj/item/clothing/shoes/sneakers/orange = 4, diff --git a/code/modules/vending/engivend.dm b/code/modules/vending/engivend.dm index 53106c09a6..0e64e0a367 100644 --- a/code/modules/vending/engivend.dm +++ b/code/modules/vending/engivend.dm @@ -3,7 +3,7 @@ desc = "Spare tool vending. What? Did you expect some witty description?" icon_state = "engivend" icon_deny = "engivend-deny" - req_access_txt = "11" //Engineering Equipment access + req_access = list(ACCESS_ENGINE_EQUIP) products = list(/obj/item/clothing/glasses/meson/engine = 2, /obj/item/clothing/glasses/welding = 3, /obj/item/multitool = 4, diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index f76f67af46..4e4d336567 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -1,7 +1,7 @@ /obj/machinery/vending/games name = "\improper Good Clean Fun" desc = "Vends things that the Captain and Head of Personnel are probably not going to appreciate you fiddling with instead of your job..." - product_ads = "Escape to a fantasy world!;Fuel your gambling addiction!;Ruin your friendships!;Roll for initative!;Elves and dwarves!;Paranoid computers!;Totally not satanic!;Fun times forever!" + product_ads = "Escape to a fantasy world!;Fuel your gambling addiction!;Ruin your friendships!;Roll for initiative!;Elves and dwarves!;Paranoid computers!;Totally not satanic!;Fun times forever!" icon_state = "games" products = list(/obj/item/toy/cards/deck = 5, /obj/item/storage/pill_bottle/dice = 10, @@ -13,5 +13,3 @@ /obj/item/vending_refill/games machine_name = "\improper Good Clean Fun" icon_state = "refill_games" - charges = list(7, 3, 0) //of 21 standard, 9 contraband - init_charges = list(7, 3, 0) diff --git a/code/modules/vending/liberation.dm b/code/modules/vending/liberation.dm index 6eafafb164..8415eff69f 100644 --- a/code/modules/vending/liberation.dm +++ b/code/modules/vending/liberation.dm @@ -2,11 +2,14 @@ name = "\improper Liberation Station" desc = "An overwhelming amount of ancient patriotism washes over you just by looking at the machine." icon_state = "liberationstation" - req_access_txt = "1" product_slogans = "Liberation Station: Your one-stop shop for all things second ammendment!;Be a patriot today, pick up a gun!;Quality weapons for cheap prices!;Better dead than red!" product_ads = "Float like an astronaut, sting like a bullet!;Express your second ammendment today!;Guns don't kill people, but you can!;Who needs responsibilities when you have guns?" vend_reply = "Remember the name: Liberation Station!" - products = list(/obj/item/gun/ballistic/automatic/pistol/deagle/gold = 2, + products = list(/obj/item/reagent_containers/food/snacks/burger/plain = 5, //O say can you see, by the dawn's early light + /obj/item/reagent_containers/food/snacks/burger/baseball = 3, //What so proudly we hailed at the twilight's last gleaming + /obj/item/reagent_containers/food/snacks/fries = 5, //Whose broad stripes and bright stars through the perilous fight + /obj/item/reagent_containers/food/drinks/beer/light = 10, //O'er the ramparts we watched, were so gallantly streaming? + /obj/item/gun/ballistic/automatic/pistol/deagle/gold = 2, /obj/item/gun/ballistic/automatic/pistol/deagle/camo = 2, /obj/item/gun/ballistic/automatic/pistol/m1911 = 2, /obj/item/gun/ballistic/automatic/proto/unrestricted = 2, @@ -17,8 +20,11 @@ premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2, /obj/item/ammo_box/magazine/m50 = 4, /obj/item/ammo_box/magazine/m45 = 2, - /obj/item/ammo_box/magazine/m75 = 2) - contraband = list(/obj/item/clothing/under/patriotsuit = 1, - /obj/item/bedsheet/patriot = 3) + /obj/item/ammo_box/magazine/m75 = 2, + /obj/item/reagent_containers/food/snacks/cheesyfries = 5, + /obj/item/reagent_containers/food/snacks/burger/baconburger = 5) //Premium burgers for the premium section + contraband = list(/obj/item/clothing/under/patriotsuit = 3, + /obj/item/bedsheet/patriot = 5, + /obj/item/reagent_containers/food/snacks/burger/superbite = 3) //U S A armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF diff --git a/code/modules/vending/liberation_toy.dm b/code/modules/vending/liberation_toy.dm index c912d3dd3e..3b387f6959 100644 --- a/code/modules/vending/liberation_toy.dm +++ b/code/modules/vending/liberation_toy.dm @@ -2,8 +2,7 @@ name = "\improper Syndicate Donksoft Toy Vendor" desc = "An ages 8 and up approved vendor that dispenses toys. If you were to find the right wires, you can unlock the adult mode setting!" icon_state = "syndi" - req_access_txt = "1" - product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get perma briged!" + product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get permabrigged!" product_ads = "Feel robust with your toys!;Express your inner child today!;Toy weapons don't kill people, but valid hunters do!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!" vend_reply = "Come back for more!" circuit = /obj/item/circuitboard/machine/vending/syndicatedonksofttoyvendor diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index b1a5edb867..bea449845c 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -4,25 +4,25 @@ icon_state = "med" icon_deny = "med-deny" product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" - req_access_txt = "5" - products = list(/obj/item/reagent_containers/syringe = 12, - /obj/item/reagent_containers/dropper = 3, - /obj/item/healthanalyzer = 4, - /obj/item/sensor_device = 2, + req_access = list(ACCESS_MEDICAL) + products = list(/obj/item/reagent_containers/syringe = 12, + /obj/item/reagent_containers/dropper = 3, + /obj/item/healthanalyzer = 4, + /obj/item/sensor_device = 2, /obj/item/pinpointer/crew = 2, /obj/item/reagent_containers/medspray/sterilizine = 1, - /obj/item/stack/medical/gauze = 8, - /obj/item/reagent_containers/pill/patch/styptic = 5, - /obj/item/reagent_containers/medspray/styptic = 2, - /obj/item/reagent_containers/pill/patch/silver_sulf = 5, + /obj/item/stack/medical/gauze = 8, + /obj/item/reagent_containers/pill/patch/styptic = 5, + /obj/item/reagent_containers/medspray/styptic = 2, + /obj/item/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/reagent_containers/medspray/silver_sulf = 2, /obj/item/reagent_containers/pill/insulin = 10, - /obj/item/reagent_containers/pill/salbutamol = 2, - /obj/item/reagent_containers/glass/bottle/charcoal = 4, - /obj/item/reagent_containers/glass/bottle/epinephrine = 4, + /obj/item/reagent_containers/pill/salbutamol = 2, + /obj/item/reagent_containers/glass/bottle/charcoal = 4, + /obj/item/reagent_containers/glass/bottle/epinephrine = 4, /obj/item/reagent_containers/glass/bottle/salglu_solution = 3, - /obj/item/reagent_containers/glass/bottle/morphine = 4, - /obj/item/reagent_containers/glass/bottle/toxin = 3, + /obj/item/reagent_containers/glass/bottle/morphine = 4, + /obj/item/reagent_containers/glass/bottle/toxin = 3, /obj/item/reagent_containers/syringe/antiviral = 6) contraband = list(/obj/item/reagent_containers/pill/tox = 3, /obj/item/reagent_containers/pill/morphine = 4, @@ -36,7 +36,5 @@ refill_canister = /obj/item/vending_refill/medical /obj/item/vending_refill/medical - machine_name = "NanoMed" + machine_name = "NanoMed Plus" icon_state = "refill_medical" - charges = list(26, 5, 3)// of 76 standard, 13 contraband, 8 premium - init_charges = list(26, 5, 3) diff --git a/code/modules/vending/medical_wall.dm b/code/modules/vending/medical_wall.dm index 6b5005eee4..ef19ce3b9b 100644 --- a/code/modules/vending/medical_wall.dm +++ b/code/modules/vending/medical_wall.dm @@ -15,5 +15,8 @@ /obj/item/reagent_containers/pill/morphine = 2) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF - refill_canister = /obj/item/vending_refill/medical - refill_count = 1 + refill_canister = /obj/item/vending_refill/wallmed + +/obj/item/vending_refill/wallmed + machine_name = "NanoMed" + icon_state = "refill_medical" diff --git a/code/modules/vending/robotics.dm b/code/modules/vending/robotics.dm index 8c577d47c1..4832aa7ad7 100644 --- a/code/modules/vending/robotics.dm +++ b/code/modules/vending/robotics.dm @@ -4,7 +4,7 @@ desc = "All the tools you need to create your own robot army." icon_state = "robotics" icon_deny = "robotics-deny" - req_access_txt = "29" + req_access = list(ACCESS_ROBOTICS) products = list(/obj/item/clothing/suit/toggle/labcoat = 4, /obj/item/clothing/under/rank/roboticist = 4, /obj/item/stack/cable_coil = 4, diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index 3f3035f9e4..7e90a5ce18 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -4,7 +4,7 @@ product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?" icon_state = "sec" icon_deny = "sec-deny" - req_access_txt = "1" + req_access = list(ACCESS_SECURITY) products = list(/obj/item/restraints/handcuffs = 8, /obj/item/restraints/handcuffs/cable/zipties = 10, /obj/item/grenade/flashbang = 4, diff --git a/code/modules/vending/snack.dm b/code/modules/vending/snack.dm index 8fcd189a4f..69e510ad5a 100644 --- a/code/modules/vending/snack.dm +++ b/code/modules/vending/snack.dm @@ -13,12 +13,10 @@ /obj/item/reagent_containers/food/snacks/cheesiehonkers = 6) contraband = list(/obj/item/reagent_containers/food/snacks/syndicake = 6) refill_canister = /obj/item/vending_refill/snack - var/chef_compartment_access = "28" + var/chef_compartment_access = "28" //ACCESS_KITCHEN /obj/item/vending_refill/snack machine_name = "Getmore Chocolate Corp" - charges = list(12, 2, 0)//of 36 standard, 6 contraband - init_charges = list(12, 2, 0) /obj/machinery/vending/snack/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/reagent_containers/food/snacks)) @@ -44,7 +42,7 @@ if(iscompartmentfull(user)) break if(!S.junkiness) - T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src, TRUE) + SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src, TRUE) food_load(S) loaded++ else diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm index fc2f9c59b9..08bb4615bb 100644 --- a/code/modules/vending/toys.dm +++ b/code/modules/vending/toys.dm @@ -2,24 +2,26 @@ name = "\improper Donksoft Toy Vendor" desc = "Ages 8 and up approved vendor that dispenses toys." icon_state = "syndi" - product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get perma briged!" + product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get permabrigged!" product_ads = "Feel robust with your toys!;Express your inner child today!;Toy weapons don't kill people, but valid hunters do!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!" vend_reply = "Come back for more!" circuit = /obj/item/circuitboard/machine/vending/donksofttoyvendor - products = list(/obj/item/gun/ballistic/automatic/toy/unrestricted = 10, - /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted = 10, - /obj/item/gun/ballistic/shotgun/toy/unrestricted = 10, - /obj/item/toy/sword = 10, - /obj/item/ammo_box/foambox = 20, - /obj/item/toy/foamblade = 10, - /obj/item/toy/syndicateballoon = 10, - /obj/item/clothing/suit/syndicatefake = 5, - /obj/item/clothing/head/syndicatefake = 5) - contraband = list(/obj/item/gun/ballistic/shotgun/toy/crossbow = 10, - /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted = 10, - /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted = 10, - /obj/item/toy/katana = 10, - /obj/item/twohanded/dualsaber/toy = 5) + products = list( + /obj/item/gun/ballistic/automatic/toy/unrestricted = 10, + /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted = 10, + /obj/item/gun/ballistic/shotgun/toy/unrestricted = 10, + /obj/item/toy/sword = 10, + /obj/item/ammo_box/foambox = 20, + /obj/item/toy/foamblade = 10, + /obj/item/toy/syndicateballoon = 10, + /obj/item/clothing/suit/syndicatefake = 5, + /obj/item/clothing/head/syndicatefake = 5) + contraband = list( + /obj/item/gun/ballistic/shotgun/toy/crossbow = 10, + /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted = 10, + /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted = 10, + /obj/item/toy/katana = 10, + /obj/item/twohanded/dualsaber/toy = 5) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/donksoft @@ -27,5 +29,3 @@ /obj/item/vending_refill/donksoft machine_name = "Donksoft Toy Vendor" icon_state = "refill_donksoft" - charges = list(32,28,0)// of 90 standard, 75 contraband, 0 premium - init_charges = list(32,28,0) diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm new file mode 100644 index 0000000000..5a41beb88d --- /dev/null +++ b/code/modules/vending/wardrobes.dm @@ -0,0 +1,351 @@ +/obj/item/vending_refill/wardrobe + icon_state = "refill_clothes" + +/obj/machinery/vending/wardrobe/sec_wardrobe + name = "\improper SecDrobe" + desc = "A vending machine for security and security-related clothing!" + icon_state = "secdrobe" + product_ads = "Beat perps in style!;It's red so you can't see the blood!;You have the right to be fashionable!;Now you can be the fashion police you always wanted to be!" + vend_reply = "Thank you for using the SecDrobe!" + products = list(/obj/item/clothing/suit/hooded/wintercoat/security = 1, + /obj/item/storage/backpack/security = 1, + /obj/item/storage/backpack/satchel/sec = 1, + /obj/item/storage/backpack/duffelbag/sec = 2, + /obj/item/clothing/under/rank/security = 3, + /obj/item/clothing/shoes/jackboots = 3, + /obj/item/clothing/head/beret/sec = 3, + /obj/item/clothing/head/soft/sec = 3, + /obj/item/clothing/mask/bandana/red = 3, + /obj/item/clothing/under/rank/security/skirt = 3, + /obj/item/clothing/under/rank/security/grey = 3, + /obj/item/clothing/under/pants/khaki = 3) + premium = list(/obj/item/clothing/under/rank/security/navyblue = 3, + /obj/item/clothing/suit/security/officer = 3, + /obj/item/clothing/head/beret/sec/navyofficer = 3) + refill_canister = /obj/item/vending_refill/wardrobe/sec_wardrobe + +/obj/item/vending_refill/wardrobe/sec_wardrobe + machine_name = "SecDrobe" + +/obj/machinery/vending/wardrobe/medi_wardrobe + name = "\improper MediDrobe" + desc = "A vending machine rumoured to be capable of dispensing clothing for medical personnel." + icon_state = "medidrobe" + product_ads = "Make those blood stains look fashionable!!" + vend_reply = "Thank you for using the MediDrobe!" + products = list(/obj/item/clothing/accessory/pocketprotector = 1, + /obj/item/storage/backpack/duffelbag/med = 1, + /obj/item/storage/backpack/medic = 1, + /obj/item/storage/backpack/satchel/med = 1, + /obj/item/clothing/suit/hooded/wintercoat/medical = 1, + /obj/item/clothing/under/rank/nursesuit = 1, + /obj/item/clothing/head/nursehat = 1, + /obj/item/clothing/under/rank/medical/blue = 1, + /obj/item/clothing/under/rank/medical/green = 1, + /obj/item/clothing/under/rank/medical/purple = 1, + /obj/item/clothing/under/rank/medical = 3, + /obj/item/clothing/suit/toggle/labcoat = 3, + /obj/item/clothing/suit/toggle/labcoat/emt = 3, + /obj/item/clothing/shoes/sneakers/white = 3, + /obj/item/clothing/head/soft/emt = 3, + /obj/item/clothing/suit/apron/surgical = 1, + /obj/item/clothing/mask/surgical = 1) + refill_canister = /obj/item/vending_refill/wardrobe/medi_wardrobe + +/obj/item/vending_refill/wardrobe/medi_wardrobe + machine_name = "MediDrobe" + +/obj/machinery/vending/wardrobe/engi_wardrobe + name = "EngiDrobe" + desc = "A vending machine renowned for vending industrial grade clothing." + icon_state = "engidrobe" + product_ads = "Guaranteed to protect your feet from industrial accidents!;Afraid of radiation? Then wear yellow!" + vend_reply = "Thank you for using the EngiDrobe!" + products = list(/obj/item/clothing/accessory/pocketprotector = 1, + /obj/item/storage/backpack/duffelbag/engineering = 1, + /obj/item/storage/backpack/industrial = 1, + /obj/item/storage/backpack/satchel/eng = 1, + /obj/item/clothing/suit/hooded/wintercoat/engineering = 1, + /obj/item/clothing/under/rank/engineer = 3, + /obj/item/clothing/suit/hazardvest = 3, + /obj/item/clothing/shoes/workboots = 3, + /obj/item/clothing/head/hardhat = 3) + refill_canister = /obj/item/vending_refill/wardrobe/engi_wardrobe + +/obj/item/vending_refill/wardrobe/engi_wardrobe + machine_name = "EngiDrobe" + +/obj/machinery/vending/wardrobe/atmos_wardrobe + name = "AtmosDrobe" + desc = "This relatively unknown vending machine delivers clothing for Atmospherics Technicians, an equally unknown job." + icon_state = "atmosdrobe" + product_ads = "Get your inflammable clothing right here!!!" + vend_reply = "Thank you for using the AtmosDrobe!" + products = list(/obj/item/clothing/accessory/pocketprotector = 1, + /obj/item/storage/backpack/duffelbag/engineering = 1, + /obj/item/storage/backpack/satchel/eng = 1, + /obj/item/storage/backpack/industrial = 1, + /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 3, + /obj/item/clothing/under/rank/atmospheric_technician = 3, + /obj/item/clothing/shoes/sneakers/black = 3) + refill_canister = /obj/item/vending_refill/wardrobe/atmos_wardrobe + +/obj/item/vending_refill/wardrobe/atmos_wardrobe + machine_name = "AtmosDrobe" + +/obj/machinery/vending/wardrobe/cargo_wardrobe + name = "CargoDrobe" + desc = "A highly advanced vending machine for buying cargo related clothing for free." + icon_state = "cargodrobe" + product_ads = "Upgraded Assistant Style! Pick yours today!;These shorts are comfy and easy to wear, get yours now!" + vend_reply = "Thank you for using the CargoDrobe!" + products = list(/obj/item/clothing/suit/hooded/wintercoat/cargo = 1, + /obj/item/clothing/under/rank/cargotech = 3, + /obj/item/clothing/shoes/sneakers/black = 3, + /obj/item/clothing/gloves/fingerless = 3, + /obj/item/clothing/head/soft = 3, + /obj/item/radio/headset/headset_cargo = 1) + refill_canister = /obj/item/vending_refill/wardrobe/cargo_wardrobe + +/obj/item/vending_refill/wardrobe/cargo_wardrobe + machine_name = "CargoDrobe" + +/obj/machinery/vending/wardrobe/robo_wardrobe + name = "RoboDrobe" + desc = "A vending machine designed to dispense clothing known only to roboticists." + icon_state = "robodrobe" + product_ads = "You turn me TRUE, use defines!;0110001101101100011011110111010001101000011001010111001101101000011001010111001001100101" + vend_reply = "Thank you for using the RoboDrobe!" + products = list(/obj/item/clothing/glasses/hud/diagnostic = 2, + /obj/item/clothing/under/rank/roboticist = 2, + /obj/item/clothing/suit/toggle/labcoat = 2, + /obj/item/clothing/shoes/sneakers/black = 2, + /obj/item/clothing/gloves/fingerless = 2, + /obj/item/clothing/head/soft/black = 2, + /obj/item/clothing/mask/bandana/skull = 1) + refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe + +/obj/item/vending_refill/wardrobe/robo_wardrobe + machine_name = "RoboDrobe" + +/obj/machinery/vending/wardrobe/science_wardrobe + name = "SciDrobe" + desc = "A simple vending machine suitable to dispense well tailored science clothing. Endorsed by Cubans." + icon_state = "scidrobe" + product_ads = "Longing for the smell of flesh plasma? Buy your science clothing now!;Made with 10% Auxetics, so you don't have to worry losing your arm!" + vend_reply = "Thank you for using the SciDrobe!" + products = list(/obj/item/clothing/accessory/pocketprotector = 1, + /obj/item/storage/backpack/science = 2, + /obj/item/storage/backpack/satchel/tox = 2, + /obj/item/clothing/suit/hooded/wintercoat/science = 1, + /obj/item/clothing/under/rank/scientist = 3, + /obj/item/clothing/suit/toggle/labcoat/science = 3, + /obj/item/clothing/shoes/sneakers/white = 3, + /obj/item/radio/headset/headset_sci = 2, + /obj/item/clothing/mask/gas = 3) + refill_canister = /obj/item/vending_refill/wardrobe/science_wardrobe + +/obj/item/vending_refill/wardrobe/science_wardrobe + machine_name = "SciDrobe" + +/obj/machinery/vending/wardrobe/hydro_wardrobe + name = "Hydrobe" + desc = "A machine with a catchy name. It dispenses botany related clothing and gear." + icon_state = "hydrobe" + product_ads = "Do you love soil? Then buy our clothes!;Get outfits to match your green thumb here!" + vend_reply = "Thank you for using the Hydrobe!" + products = list(/obj/item/storage/backpack/botany = 2, + /obj/item/storage/backpack/satchel/hyd = 2, + /obj/item/clothing/suit/hooded/wintercoat/hydro = 1, + /obj/item/clothing/suit/apron = 2, + /obj/item/clothing/suit/apron/overalls = 3, + /obj/item/clothing/under/rank/hydroponics = 3, + /obj/item/clothing/mask/bandana = 3) + refill_canister = /obj/item/vending_refill/wardrobe/hydro_wardrobe + +/obj/item/vending_refill/wardrobe/hydro_wardrobe + machine_name = "HyDrobe" + +/obj/machinery/vending/wardrobe/curator_wardrobe + name = "CuraDrobe" + desc = "A lowstock vendor only capable of vending clothing for curators and librarians." + icon_state = "curadrobe" + product_ads = "Our clothes are endorsed by treasure hunters everywhere!" + vend_reply = "Thank you for using the CuraDrobe!" + products = list(/obj/item/clothing/head/fedora/curator = 1, + /obj/item/clothing/suit/curator = 1, + /obj/item/clothing/under/rank/curator/treasure_hunter = 1, + /obj/item/clothing/shoes/workboots/mining = 1, + /obj/item/storage/backpack/satchel/explorer = 1, + /obj/item/storage/bag/books = 1) + refill_canister = /obj/item/vending_refill/wardrobe/curator_wardrobe + +/obj/item/vending_refill/wardrobe/curator_wardrobe + machine_name = "CuraDrobe" + +/obj/machinery/vending/wardrobe/bar_wardrobe + name = "BarDrobe" + desc = "A stylish vendor to dispense the most stylish bar clothing!" + icon_state = "bardrobe" + product_ads = "Guaranteed to prevent stains from spilled drinks!" + vend_reply = "Thank you for using the BarDrobe!" + products = list(/obj/item/clothing/head/that = 2, + /obj/item/radio/headset/headset_srv = 2, + /obj/item/clothing/under/sl_suit = 2, + /obj/item/clothing/under/rank/bartender = 2, + /obj/item/clothing/under/rank/bartender/purple = 1, + /obj/item/clothing/accessory/waistcoat = 2, + /obj/item/clothing/suit/apron/purple_bartender = 1, + /obj/item/clothing/head/soft/black = 2, + /obj/item/clothing/shoes/sneakers/black = 2, + /obj/item/reagent_containers/glass/rag = 2, + /obj/item/storage/box/beanbag = 1, + /obj/item/clothing/suit/armor/vest/alt = 1, + /obj/item/circuitboard/machine/dish_drive = 1, + /obj/item/clothing/glasses/sunglasses/reagent = 1, + /obj/item/clothing/neck/petcollar = 1, + /obj/item/storage/belt/bandolier = 1) + refill_canister = /obj/item/vending_refill/wardrobe/bar_wardrobe + +/obj/item/vending_refill/wardrobe/bar_wardrobe + machine_name = "BarDrobe" + +/obj/machinery/vending/wardrobe/chef_wardrobe + name = "ChefDrobe" + desc = "This vending machine might not dispense meat, but it certainly dispenses chef related clothing." + icon_state = "chefdrobe" + product_ads = "Our clothes are guaranteed to protect you from food splatters!" + vend_reply = "Thank you for using the ChefDrobe!" + products = list(/obj/item/clothing/under/waiter = 2, + /obj/item/radio/headset/headset_srv = 2, + /obj/item/clothing/accessory/waistcoat = 2, + /obj/item/clothing/suit/apron/chef = 3, + /obj/item/clothing/head/soft/mime = 2, + /obj/item/storage/box/mousetraps = 2, + /obj/item/circuitboard/machine/dish_drive = 1, + /obj/item/clothing/suit/toggle/chef = 1, + /obj/item/clothing/under/rank/chef = 1, + /obj/item/clothing/head/chefhat = 1, + /obj/item/reagent_containers/glass/rag = 1) + refill_canister = /obj/item/vending_refill/wardrobe/chef_wardrobe + +/obj/item/vending_refill/wardrobe/chef_wardrobe + machine_name = "ChefDrobe" + +/obj/machinery/vending/wardrobe/jani_wardrobe + name = "JaniDrobe" + desc = "A self cleaning vending machine capable of dispensing clothing for janitors." + icon_state = "janidrobe" + product_ads = "Come and get your janitorial clothing, now endorsed by lizard janitors everywhere!" + vend_reply = "Thank you for using the JaniDrobe!" + products = list(/obj/item/clothing/under/rank/janitor = 1, + /obj/item/cartridge/janitor = 1, + /obj/item/clothing/gloves/color/black = 1, + /obj/item/clothing/head/soft/purple = 1, + /obj/item/paint/paint_remover = 1, + /obj/item/melee/flyswatter = 1, + /obj/item/flashlight = 1, + /obj/item/caution = 6, + /obj/item/holosign_creator = 1, + /obj/item/lightreplacer = 1, + /obj/item/soap = 1, + /obj/item/storage/bag/trash = 1, + /obj/item/clothing/shoes/galoshes = 1, + /obj/item/watertank/janitor = 1, + /obj/item/storage/belt/janitor = 1) + refill_canister = /obj/item/vending_refill/wardrobe/jani_wardrobe + +/obj/item/vending_refill/wardrobe/jani_wardrobe + machine_name = "JaniDrobe" + +/obj/machinery/vending/wardrobe/law_wardrobe + name = "LawDrobe" + desc = "Objection! This wardrobe dispenses the rule of law... and lawyer clothing." + icon_state = "lawdrobe" + product_ads = "OBJECTION! Get the rule of law for yourself!" + vend_reply = "Thank you for using the LawDrobe!" + products = list(/obj/item/clothing/under/lawyer/female = 1, + /obj/item/clothing/under/lawyer/black = 1, + /obj/item/clothing/under/lawyer/red = 1, + /obj/item/clothing/under/lawyer/bluesuit = 1, + /obj/item/clothing/suit/toggle/lawyer = 1, + /obj/item/clothing/under/lawyer/purpsuit = 1, + /obj/item/clothing/suit/toggle/lawyer/purple = 1, + /obj/item/clothing/under/lawyer/blacksuit = 1, + /obj/item/clothing/suit/toggle/lawyer/black = 1, + /obj/item/clothing/shoes/laceup = 2, + /obj/item/clothing/accessory/lawyers_badge = 2) + refill_canister = /obj/item/vending_refill/wardrobe/law_wardrobe + +/obj/item/vending_refill/wardrobe/law_wardrobe + machine_name = "LawDrobe" + +/obj/machinery/vending/wardrobe/chap_wardrobe + name = "ChapDrobe" + desc = "This most blessed and holy machine vends clothing only suitable for chaplains to gaze upon." + icon_state = "chapdrobe" + product_ads = "Are you being bothered by cultists or pesky revenants? Then come and dress like the holy man!;Clothes for men of the cloth!" + vend_reply = "Thank you for using the ChapDrobe!" + products = list(/obj/item/holybeacon = 1, + /obj/item/storage/backpack/cultpack = 1, + /obj/item/clothing/accessory/pocketprotector/cosmetology = 1, + /obj/item/clothing/under/rank/chaplain = 1, + /obj/item/clothing/shoes/sneakers/black = 1, + /obj/item/clothing/suit/nun = 1, + /obj/item/clothing/head/nun_hood = 1, + /obj/item/clothing/suit/holidaypriest = 1, + /obj/item/storage/fancy/candle_box = 2) + refill_canister = /obj/item/vending_refill/wardrobe/chap_wardrobe + +/obj/item/vending_refill/wardrobe/chap_wardrobe + machine_name = "ChapDrobe" + +/obj/machinery/vending/wardrobe/chem_wardrobe + name = "ChemDrobe" + desc = "A vending machine for dispensing chemistry related clothing." + icon_state = "chemdrobe" + product_ads = "Our clothes are 0.5% more resistant to acid spills! Get yours now!" + vend_reply = "Thank you for using the ChemDrobe!" + products = list(/obj/item/clothing/under/rank/chemist = 2, + /obj/item/clothing/shoes/sneakers/white = 2, + /obj/item/clothing/suit/toggle/labcoat/chemist = 2, + /obj/item/storage/backpack/chemistry = 2, + /obj/item/storage/backpack/satchel/chem = 2, + /obj/item/storage/bag/chemistry = 2) + refill_canister = /obj/item/vending_refill/wardrobe/chem_wardrobe + +/obj/item/vending_refill/wardrobe/chem_wardrobe + machine_name = "ChemDrobe" + +/obj/machinery/vending/wardrobe/gene_wardrobe + name = "GeneDrobe" + desc = "A machine for dispensing clothing related to genetics." + icon_state = "genedrobe" + product_ads = "Perfect for the mad scientist in you!" + vend_reply = "Thank you for using the GeneDrobe!" + products = list(/obj/item/clothing/under/rank/geneticist = 2, + /obj/item/clothing/shoes/sneakers/white = 2, + /obj/item/clothing/suit/toggle/labcoat/genetics = 2, + /obj/item/storage/backpack/genetics = 2, + /obj/item/storage/backpack/satchel/gen = 2) + refill_canister = /obj/item/vending_refill/wardrobe/gene_wardrobe + +/obj/item/vending_refill/wardrobe/gene_wardrobe + machine_name = "GeneDrobe" + +/obj/machinery/vending/wardrobe/viro_wardrobe + name = "ViroDrobe" + desc = "An unsterilized machine for dispending virology related clothing." + icon_state = "virodrobe" + product_ads = " Viruses getting you down? Then upgrade to sterilized clothing today!" + vend_reply = "Thank you for using the ViroDrobe" + products = list(/obj/item/clothing/under/rank/virologist = 2, + /obj/item/clothing/shoes/sneakers/white = 2, + /obj/item/clothing/suit/toggle/labcoat/virologist = 2, + /obj/item/clothing/mask/surgical = 2, + /obj/item/storage/backpack/virology = 2, + /obj/item/storage/backpack/satchel/vir = 2) + refill_canister = /obj/item/vending_refill/wardrobe/viro_wardrobe + +/obj/item/vending_refill/wardrobe/viro_wardrobe + machine_name = "ViroDrobe" diff --git a/code/modules/vending/youtool.dm b/code/modules/vending/youtool.dm index 6c48b7a376..495d60a461 100644 --- a/code/modules/vending/youtool.dm +++ b/code/modules/vending/youtool.dm @@ -3,7 +3,6 @@ desc = "Tools for tools." icon_state = "tool" icon_deny = "tool-deny" - //req_access_txt = "12" //Maintenance access products = list(/obj/item/stack/cable_coil/random = 10, /obj/item/crowbar = 5, /obj/item/weldingtool = 3, diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm index 154941ce70..03d2ac3921 100644 --- a/code/modules/zombie/items.dm +++ b/code/modules/zombie/items.dm @@ -4,7 +4,7 @@ humans, butchering all other living things to \ sustain the zombie, smashing open airlock doors and opening \ child-safe caps on bottles." - flags_1 = NODROP_1|ABSTRACT_1|DROPDEL_1 + item_flags = NODROP | ABSTRACT | DROPDEL resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF icon = 'icons/effects/blood.dmi' icon_state = "bloodhand_left" diff --git a/config/antag_rep.txt b/config/antag_rep.txt new file mode 100644 index 0000000000..a26b157d5a --- /dev/null +++ b/config/antag_rep.txt @@ -0,0 +1,5 @@ +## Custom antag reputation values +## List of job titles followed by antag rep value, all prefixed with ANTAG_REP. See code/modules/jobs/job_types for titles +## e.g. +## ANTAG_REP Captain 10 +## ANTAG_REP Assistant 0 diff --git a/config/config.txt b/config/config.txt index 57e0050d69..fba903477c 100644 --- a/config/config.txt +++ b/config/config.txt @@ -3,6 +3,7 @@ $include game_options.txt $include dbconfig.txt $include comms.txt +$include antag_rep.txt # You can use the @ character at the beginning of a config option to lock it from being edited in-game # Example usage: diff --git a/config/game_options.txt b/config/game_options.txt index 6ecec1fc9e..953de2f923 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -16,9 +16,6 @@ REVIVAL_BRAIN_LIFE -1 ## RENAMING ### -## Uncomment to allow cyborgs to rename themselves at roundstart. Has no effect on roboticists renaming cyborgs the normal way. -#RENAME_CYBORG - ## OOC DURING ROUND ### ## Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. OOC_DURING_ROUND @@ -533,9 +530,6 @@ ALLOW_MISCREANTS ## Uncomment to let miscreants spawn during Extended. I hold no responsibility for fun that may occur while this is enabled. #ALLOW_EXTENDED_MISCREANTS -## Determines if players are allowed to print integrated circuits, uncomment to allow. -#IC_PRINTING - ## Uncomment to allow roundstart quirk selection in the character setup menu. ## This used to be named traits, hence the config name, but it handles quirks, not the other kind of trait! ROUNDSTART_TRAITS @@ -551,3 +545,6 @@ ROUNDSTART_TRAITS ## Sets shift time to server time at roundstart. Overridden by RANDOMIZE_SHIFT_TIME ## #SHIFT_TIME_REALTIME + +## A cap on how many monkeys may be created via monkey cubes +MONKEYCAP 64 diff --git a/goon/icons/obj/chairs.dmi b/goon/icons/obj/chairs.dmi new file mode 100644 index 0000000000..462370ac37 Binary files /dev/null and b/goon/icons/obj/chairs.dmi differ diff --git a/html/changelogs/AutoChangeLog-pr-38106.yml b/html/changelogs/AutoChangeLog-pr-38106.yml new file mode 100644 index 0000000000..ca76e50b52 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-38106.yml @@ -0,0 +1,5 @@ +author: "SpaceManiac" +delete-after: True +changes: + - bugfix: "The destructive analyzer can once again be used to reveal nodes." + - spellcheck: "Some references to \"deconstructive analyzer\" have been updated to \"destructive\"." diff --git a/html/changelogs/AutoChangeLog-pr-38127.yml b/html/changelogs/AutoChangeLog-pr-38127.yml new file mode 100644 index 0000000000..b8e6b66b33 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-38127.yml @@ -0,0 +1,5 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Fixes the wrong tiles in Syndicate VR trainer and uses different tiny fans." + - bugfix: "Access didn't append to VR IDs" diff --git a/html/changelogs/AutoChangeLog-pr-6868.yml b/html/changelogs/AutoChangeLog-pr-6868.yml new file mode 100644 index 0000000000..c6e55230aa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6868.yml @@ -0,0 +1,4 @@ +author: "Jay" +delete-after: True +changes: + - tweak: "Bans CMO, RD, CE, and HoP from antag/ling" diff --git a/html/changelogs/AutoChangeLog-pr-6925.yml b/html/changelogs/AutoChangeLog-pr-6925.yml new file mode 100644 index 0000000000..72db73db26 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6925.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - rscadd: "Nuclear explosive-shaped beerkegs found on metastation can now be triggered with the nuclear disk and the syndicate's legacy nuclear code for a foamy surprise" diff --git a/html/changelogs/AutoChangeLog-pr-6952.yml b/html/changelogs/AutoChangeLog-pr-6952.yml new file mode 100644 index 0000000000..4932f9ed76 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6952.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - tweak: "Lavaland is no longer fullbright. We have memory to spare." diff --git a/html/changelogs/AutoChangeLog-pr-6958.yml b/html/changelogs/AutoChangeLog-pr-6958.yml new file mode 100644 index 0000000000..e59e3a143e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6958.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Moving diagonally past delivery chutes, transit tube pods, &c. no longer causes your camera to be stuck on them." diff --git a/html/changelogs/AutoChangeLog-pr-6960.yml b/html/changelogs/AutoChangeLog-pr-6960.yml new file mode 100644 index 0000000000..6ccfa63bff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6960.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - config: "The limit of monkey's spawned via monkey cubes is now configurable" diff --git a/html/changelogs/AutoChangeLog-pr-6963.yml b/html/changelogs/AutoChangeLog-pr-6963.yml new file mode 100644 index 0000000000..ee8f0dadc9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6963.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Fixes cyborgs not being able to use two-handed modules while other modules are equipped." diff --git a/html/changelogs/AutoChangeLog-pr-6964.yml b/html/changelogs/AutoChangeLog-pr-6964.yml new file mode 100644 index 0000000000..9b57865956 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6964.yml @@ -0,0 +1,4 @@ +author: "Cruix" +delete-after: True +changes: + - rscadd: "AIs now have an experimental multi-camera mode that allows them to view up to six map areas at the same time, accessible through two new buttons on their HUD." diff --git a/html/changelogs/AutoChangeLog-pr-6966.yml b/html/changelogs/AutoChangeLog-pr-6966.yml new file mode 100644 index 0000000000..e727e153fc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6966.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Fixed rpeds throwing stock part rating related runtimes." diff --git a/html/changelogs/AutoChangeLog-pr-6969.yml b/html/changelogs/AutoChangeLog-pr-6969.yml new file mode 100644 index 0000000000..770043e579 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6969.yml @@ -0,0 +1,4 @@ +author: "Nichlas0010" +delete-after: True +changes: + - bugfix: "You can no longer use a soapstone infinitely" diff --git a/html/changelogs/AutoChangeLog-pr-6971.yml b/html/changelogs/AutoChangeLog-pr-6971.yml new file mode 100644 index 0000000000..cfcfc7c801 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6971.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Pubby's auxiliary mining base now works again." diff --git a/html/changelogs/AutoChangeLog-pr-6972.yml b/html/changelogs/AutoChangeLog-pr-6972.yml new file mode 100644 index 0000000000..a9ffa8bf78 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6972.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The overlay effects of cult flooring are now on the floor plane, fixing their odd ambient occlusion appearance." diff --git a/html/changelogs/AutoChangeLog-pr-6973.yml b/html/changelogs/AutoChangeLog-pr-6973.yml new file mode 100644 index 0000000000..04a93d79ff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6973.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Cloning no longer breaks a character's connection to their family heirloom." diff --git a/html/changelogs/AutoChangeLog-pr-6974.yml b/html/changelogs/AutoChangeLog-pr-6974.yml new file mode 100644 index 0000000000..9b295ea168 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6974.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Beam rifle tracers no longer fall into chasms." diff --git a/html/changelogs/AutoChangeLog-pr-6975.yml b/html/changelogs/AutoChangeLog-pr-6975.yml new file mode 100644 index 0000000000..298fdf4cad --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6975.yml @@ -0,0 +1,8 @@ +author: "Big Tobacco" +delete-after: True +changes: + - rscadd: "Cheap lighters now come in four different shapes and Zippos can have one of four different designs, collect them all and improve our sales!" + - imageadd: "All existing lighter sprites have been given a face-lift and the flames are now subtly animated." + - tweak: "Cheap lighters now use a fixed list of 16 colors to pick from instead of using totally randomized colors." + - imageadd: "Cigar cases have been tweaked to be a bit smaller and to have a modified design." + - imageadd: "Cohiba Robusto and Havanan cigars now use separate case sprites from the generic premium cigar cases." diff --git a/html/changelogs/AutoChangeLog-pr-6976.yml b/html/changelogs/AutoChangeLog-pr-6976.yml new file mode 100644 index 0000000000..eda65aebd0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6976.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Vomiting on the same tile a second time no deletes the vomited reagents." diff --git a/html/changelogs/AutoChangeLog-pr-6978.yml b/html/changelogs/AutoChangeLog-pr-6978.yml new file mode 100644 index 0000000000..79a17c8c34 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6978.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "fixed the clockwork helmet not dropping to ground when used by non-clock cultists" diff --git a/html/changelogs/AutoChangeLog-pr-6979.yml b/html/changelogs/AutoChangeLog-pr-6979.yml new file mode 100644 index 0000000000..83cc369bbf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6979.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - refactor: "The base machinery type is now anchored by default." diff --git a/html/changelogs/AutoChangeLog-pr-6983.yml b/html/changelogs/AutoChangeLog-pr-6983.yml new file mode 100644 index 0000000000..b74d9635b3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6983.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "PDA style now gets loaded correctly." diff --git a/html/changelogs/AutoChangeLog-pr-6985.yml b/html/changelogs/AutoChangeLog-pr-6985.yml new file mode 100644 index 0000000000..7fa4518219 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6985.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Switching mobs into/out of a mech (by VR, ghosting, or mindswap) no longer improperly applies the mech's cursor." diff --git a/html/changelogs/AutoChangeLog-pr-6987.yml b/html/changelogs/AutoChangeLog-pr-6987.yml new file mode 100644 index 0000000000..491a186af9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6987.yml @@ -0,0 +1,5 @@ +author: "Nichlas0010" +delete-after: True +changes: + - bugfix: "You now can't get multiple download objectives!" + - tweak: "RDs, Scientists and Roboticists can no longer get download objectives!" diff --git a/html/changelogs/AutoChangeLog-pr-6988.yml b/html/changelogs/AutoChangeLog-pr-6988.yml new file mode 100644 index 0000000000..4b29f0fb09 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6988.yml @@ -0,0 +1,4 @@ +author: "cyclowns" +delete-after: True +changes: + - bugfix: "Fires no longer flicker back and forth like crazy" diff --git a/html/changelogs/AutoChangeLog-pr-6989.yml b/html/changelogs/AutoChangeLog-pr-6989.yml new file mode 100644 index 0000000000..b448b9a768 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6989.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "roboticists have access to R&D windoors" diff --git a/html/changelogs/AutoChangeLog-pr-6991.yml b/html/changelogs/AutoChangeLog-pr-6991.yml new file mode 100644 index 0000000000..bf8b60a831 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6991.yml @@ -0,0 +1,6 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "Fixed cigar cases & cigarette packets taking two inventory slots" + - bugfix: "Fixed cigar cases showing the wrong icon for the cigars inside them." + - bugfix: "Fixed cigar cases & cigarette packets stating the wrong name of the cigar/cigarette when removed via altclick." diff --git a/html/changelogs/AutoChangeLog-pr-6992.yml b/html/changelogs/AutoChangeLog-pr-6992.yml new file mode 100644 index 0000000000..30168181c9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6992.yml @@ -0,0 +1,11 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "Fixed items in pockets vanishing when a mob is monkeyized." + - bugfix: "Fixed items in pockets vanishing when a mob is gorillized." + - bugfix: "Fixed items in pockets vanishing when a mob is infected with a transformation disease." + - bugfix: "Fixed items in pockets not being properly deleted when a mob goes through a recycler" + - bugfix: "Fixed items in pockets not being properly deleted when highlander mode is enabled." + - bugfix: "Fixed exploit allowing you to remove unremovable tanks from pockets." + - bugfix: "Fixed items in pockets dropping when a mob is equipped with a new outfit." + - bugfix: "Fixed items in pockets not being covered in blood when equipping the psycho outfit." diff --git a/html/changelogs/AutoChangeLog-pr-6995.yml b/html/changelogs/AutoChangeLog-pr-6995.yml new file mode 100644 index 0000000000..0d3751d794 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6995.yml @@ -0,0 +1,5 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Pubbystation: Added a dual-port vent pump to the toxins burn chamber." + - code_imp: "Removed most airlock_controller/incinerator related varedits and replaced them with defines/subtypes." diff --git a/html/changelogs/AutoChangeLog-pr-6996.yml b/html/changelogs/AutoChangeLog-pr-6996.yml new file mode 100644 index 0000000000..8485bdb247 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6996.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "The Deltastation toxins lab has its portable scrubber, air pump and intercom back." diff --git a/html/changelogs/AutoChangeLog-pr-6997.yml b/html/changelogs/AutoChangeLog-pr-6997.yml new file mode 100644 index 0000000000..fe6f96ec08 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6997.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "switched the type of the space suit on the syndicate shuttle" diff --git a/html/changelogs/AutoChangeLog-pr-6998.yml b/html/changelogs/AutoChangeLog-pr-6998.yml new file mode 100644 index 0000000000..4c5fa0b950 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6998.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - bugfix: "comms consoles now work in transit again, and no longer work in centcom" diff --git a/html/changelogs/AutoChangeLog-pr-6999.yml b/html/changelogs/AutoChangeLog-pr-6999.yml new file mode 100644 index 0000000000..5c646a8334 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6999.yml @@ -0,0 +1,4 @@ +author: "yorpan" +delete-after: True +changes: + - rscadd: "Brain damage makes you say one more thing." diff --git a/html/changelogs/AutoChangeLog-pr-7000.yml b/html/changelogs/AutoChangeLog-pr-7000.yml new file mode 100644 index 0000000000..c4aaff36e6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7000.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "fixed hydroponics tray weed light staying on when removing weeds with integrated circuits" diff --git a/html/changelogs/AutoChangeLog-pr-7001.yml b/html/changelogs/AutoChangeLog-pr-7001.yml new file mode 100644 index 0000000000..2721ba92e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7001.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - code_imp: "removed unnecessary getFlatIcons from holocalls" diff --git a/html/changelogs/AutoChangeLog-pr-7002.yml b/html/changelogs/AutoChangeLog-pr-7002.yml new file mode 100644 index 0000000000..df3104e20f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7002.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - bugfix: "Screwdrivers and other items with overlays now show the proper appearance of the item when attacking something with them, or when put on a tray." diff --git a/html/changelogs/AutoChangeLog-pr-7003.yml b/html/changelogs/AutoChangeLog-pr-7003.yml new file mode 100644 index 0000000000..c60bd62fcf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7003.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Atom initialization and icon smoothing no longer race, causing late-loading mineral turfs to have no icon." diff --git a/html/changelogs/AutoChangeLog-pr-7004.yml b/html/changelogs/AutoChangeLog-pr-7004.yml new file mode 100644 index 0000000000..a981bcaf98 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7004.yml @@ -0,0 +1,4 @@ +author: "yenwodyah" +delete-after: True +changes: + - bugfix: "A few virus threshold effects should work now" diff --git a/html/changelogs/AutoChangeLog-pr-7005.yml b/html/changelogs/AutoChangeLog-pr-7005.yml new file mode 100644 index 0000000000..ca71f91693 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7005.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "Adds the wheelofsalt command to TGS3. Spin the wheel of salt to find out what the Citadel Station 13 players are salting about today!" diff --git a/html/changelogs/AutoChangeLog-pr-7006.yml b/html/changelogs/AutoChangeLog-pr-7006.yml new file mode 100644 index 0000000000..afe3a639db --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7006.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "You can now slam or slap your hands onto tables by right clicking them in combat mode." diff --git a/html/changelogs/AutoChangeLog-pr-7007.yml b/html/changelogs/AutoChangeLog-pr-7007.yml new file mode 100644 index 0000000000..9dcc0d988f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7007.yml @@ -0,0 +1,4 @@ +author: "MrDoomBringer" +delete-after: True +changes: + - admin: "Central Command can now smite misbehaving crewmembers with supply pods (filled with whatever their hearts desire!)" diff --git a/html/changelogs/AutoChangeLog-pr-7008.yml b/html/changelogs/AutoChangeLog-pr-7008.yml new file mode 100644 index 0000000000..87b0ecdac1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7008.yml @@ -0,0 +1,4 @@ +author: "Beachsprites" +delete-after: True +changes: + - imageadd: "added directional beach sprites" diff --git a/html/changelogs/AutoChangeLog-pr-7012.yml b/html/changelogs/AutoChangeLog-pr-7012.yml new file mode 100644 index 0000000000..b4ff596298 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7012.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - spellcheck: "Faceless persons no longer \"melt their face off\" in energy gun suicides." diff --git a/html/changelogs/AutoChangeLog-pr-7013.yml b/html/changelogs/AutoChangeLog-pr-7013.yml new file mode 100644 index 0000000000..51fda8cec2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7013.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The Lightning Bolt spell now works again." diff --git a/html/changelogs/AutoChangeLog-pr-7015.yml b/html/changelogs/AutoChangeLog-pr-7015.yml new file mode 100644 index 0000000000..e15283155d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7015.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - bugfix: "Swarmers can no longer attack field generators and turret covers." diff --git a/html/changelogs/AutoChangeLog-pr-7016.yml b/html/changelogs/AutoChangeLog-pr-7016.yml new file mode 100644 index 0000000000..f8daa8581f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7016.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - rscadd: "Arcades have been stocked with preloaded tactical snack rigs." diff --git a/html/changelogs/AutoChangeLog-pr-7019.yml b/html/changelogs/AutoChangeLog-pr-7019.yml new file mode 100644 index 0000000000..5cf456ab6c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7019.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - code_imp: "moved /datum.isprocessing into datum flags" diff --git a/html/changelogs/AutoChangeLog-pr-7020.yml b/html/changelogs/AutoChangeLog-pr-7020.yml new file mode 100644 index 0000000000..33f65b25df --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7020.yml @@ -0,0 +1,4 @@ +author: "MrDoomBringer" +delete-after: True +changes: + - admin: "CentCom Supplypods now stun their target before landing, and won't damage the station as much" diff --git a/html/changelogs/AutoChangeLog-pr-7021.yml b/html/changelogs/AutoChangeLog-pr-7021.yml new file mode 100644 index 0000000000..db52a1d046 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7021.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Fixes a sentience related exploit by blacklisting it in restricted uplinks." diff --git a/html/changelogs/AutoChangeLog-pr-7022.yml b/html/changelogs/AutoChangeLog-pr-7022.yml new file mode 100644 index 0000000000..7c9f43d2de --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7022.yml @@ -0,0 +1,5 @@ +author: "iksyp" +delete-after: True +changes: + - bugfix: "Ever since the great emotion purge of 2558, people were able to work at top efficiency, even while starving to death. This is no longer the case, Nanotrasen Scientists say." + - admin: "Hunger slowdown only applies if mood is disabled in the config." diff --git a/html/changelogs/AutoChangeLog-pr-7024.yml b/html/changelogs/AutoChangeLog-pr-7024.yml new file mode 100644 index 0000000000..133c0feb43 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7024.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - bugfix: "The Pubbystation maint bar Booze-O-Mat now shows its contents correctly." diff --git a/html/changelogs/AutoChangeLog-pr-7030.yml b/html/changelogs/AutoChangeLog-pr-7030.yml new file mode 100644 index 0000000000..5f89cc6abb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7030.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "Vehicle speed changes now happen immediately instead of on the next movement cycle" diff --git a/html/changelogs/AutoChangeLog-pr-7031.yml b/html/changelogs/AutoChangeLog-pr-7031.yml new file mode 100644 index 0000000000..cb65231c9e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7031.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Picture-in-picture objects now are no longer overlapped by other certain objects" diff --git a/html/changelogs/AutoChangeLog-pr-7039.yml b/html/changelogs/AutoChangeLog-pr-7039.yml new file mode 100644 index 0000000000..4c5fce38d2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7039.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "A pAI dying while in holoform no longer deletes the card, instead merely emptying it." diff --git a/html/changelogs/AutoChangeLog-pr-7040.yml b/html/changelogs/AutoChangeLog-pr-7040.yml new file mode 100644 index 0000000000..0da19e008e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7040.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Added a warning to the shuttle purchase menu." diff --git a/html/changelogs/AutoChangeLog-pr-7041.yml b/html/changelogs/AutoChangeLog-pr-7041.yml new file mode 100644 index 0000000000..c6f54eb459 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7041.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The thermal sight benefits of lantern wisps no longer disappear if you change glasses." diff --git a/html/changelogs/AutoChangeLog-pr-7042.yml b/html/changelogs/AutoChangeLog-pr-7042.yml new file mode 100644 index 0000000000..2a5553f3e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7042.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - imageadd: "sandstone wall sprite for indestructible object" diff --git a/html/changelogs/AutoChangeLog-pr-7045.yml b/html/changelogs/AutoChangeLog-pr-7045.yml new file mode 100644 index 0000000000..65bd3e0c46 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7045.yml @@ -0,0 +1,5 @@ +author: "Toriate" +delete-after: True +changes: + - rscadd: "It appears that ancient pieces of armor have wound up on the open market! These armors have degraded beyond usefulness. Grab one now in the loadout!" + - imageadd: "added flak jacket and M1 Helmet sprites" diff --git a/html/changelogs/AutoChangeLog-pr-7056.yml b/html/changelogs/AutoChangeLog-pr-7056.yml new file mode 100644 index 0000000000..0f580b7a48 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7056.yml @@ -0,0 +1,6 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Stabilized gold extracts now respawn the familiar properly." + - bugfix: "Stabilized gold familiars retain the proper languages even after respawning." + - tweak: "Stabilized gold familiars can be renamed and have their positions reset at will." diff --git a/html/changelogs/AutoChangeLog-pr-7059.yml b/html/changelogs/AutoChangeLog-pr-7059.yml new file mode 100644 index 0000000000..ee666b26e1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7059.yml @@ -0,0 +1,4 @@ +author: "XDTM" +delete-after: True +changes: + - bugfix: "Fixed anti-magic not working at all." diff --git a/html/changelogs/AutoChangeLog-pr-7062.yml b/html/changelogs/AutoChangeLog-pr-7062.yml new file mode 100644 index 0000000000..7a7917c2f3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7062.yml @@ -0,0 +1,4 @@ +author: "CameronWoof" +delete-after: True +changes: + - tweak: "Quartermaster added to the list of changeling and traitor restricted jobs" diff --git a/html/changelogs/AutoChangeLog-pr-7065.yml b/html/changelogs/AutoChangeLog-pr-7065.yml new file mode 100644 index 0000000000..87272ee07c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7065.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Pulling objects diagonally no longer causes them to flail about when changing directions." + - bugfix: "Riders are no longer left behind if you move while pulling something that has since been anchored." diff --git a/html/changelogs/AutoChangeLog-pr-7066.yml b/html/changelogs/AutoChangeLog-pr-7066.yml new file mode 100644 index 0000000000..b4aff3cfa1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7066.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "Fire alarms now redden all the room's lights, and emit light themselves, rather than applying an area-wide overlay." + - bugfix: "Fire alarms no longer visually conflict with radiation storms." diff --git a/html/changelogs/AutoChangeLog-pr-7069.yml b/html/changelogs/AutoChangeLog-pr-7069.yml new file mode 100644 index 0000000000..6025d9f1f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7069.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Plasmamen now receive their suit and internals when entering VR." diff --git a/html/changelogs/AutoChangeLog-pr-7070.yml b/html/changelogs/AutoChangeLog-pr-7070.yml new file mode 100644 index 0000000000..ba904bd4af --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7070.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Deaf people can no longer hear cyborg system error alarms." diff --git a/html/changelogs/AutoChangeLog-pr-7072.yml b/html/changelogs/AutoChangeLog-pr-7072.yml new file mode 100644 index 0000000000..08ecf0313a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7072.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Lockboxes are now actually locked again." diff --git a/html/changelogs/AutoChangeLog-pr-7073.yml b/html/changelogs/AutoChangeLog-pr-7073.yml new file mode 100644 index 0000000000..608fb8d17d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7073.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Legion cores and admin revives now heal confusion." diff --git a/html/changelogs/AutoChangeLog-pr-7078.yml b/html/changelogs/AutoChangeLog-pr-7078.yml new file mode 100644 index 0000000000..03b49a795d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7078.yml @@ -0,0 +1,5 @@ +author: "Toriate" +delete-after: True +changes: + - rscadd: "Gives the flak helmet a tiny storage compartment" + - balance: "Made the flak helmet even weaker against acid and fire so it crumbles into dust easier" diff --git a/html/changelogs/AutoChangeLog-pr-7081.yml b/html/changelogs/AutoChangeLog-pr-7081.yml new file mode 100644 index 0000000000..171ca4cf8a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7081.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Botany trays don't magically refill anymore with a rped." diff --git a/html/changelogs/AutoChangeLog-pr-7082.yml b/html/changelogs/AutoChangeLog-pr-7082.yml new file mode 100644 index 0000000000..f66cb4ee49 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7082.yml @@ -0,0 +1,4 @@ +author: "XDTM" +delete-after: True +changes: + - bugfix: "Diseases now properly lose scan invisibility if their stealth drops below the required threshold." diff --git a/html/changelogs/AutoChangeLog-pr-7084.yml b/html/changelogs/AutoChangeLog-pr-7084.yml new file mode 100644 index 0000000000..6db9a9182d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7084.yml @@ -0,0 +1,5 @@ +author: "XDTM" +delete-after: True +changes: + - tweak: "Coldproof mobs can now be cooled down, but are still immune to the negative effects of cold." + - bugfix: "This also fixes some edge cases (freezing beams) where mobs could be cooled down and damaged despite cold resistance." diff --git a/html/changelogs/AutoChangeLog-pr-7091.yml b/html/changelogs/AutoChangeLog-pr-7091.yml new file mode 100644 index 0000000000..2e20d82152 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7091.yml @@ -0,0 +1,4 @@ +author: "XDTM" +delete-after: True +changes: + - balance: "Androids are now immune to radiation." diff --git a/html/changelogs/AutoChangeLog-pr-7092.yml b/html/changelogs/AutoChangeLog-pr-7092.yml new file mode 100644 index 0000000000..26f4e3f19a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7092.yml @@ -0,0 +1,4 @@ +author: "Mickyan" +delete-after: True +changes: + - bugfix: "Fixed pacifists being able to harm using bottles/screwdrivers" diff --git a/html/changelogs/AutoChangeLog-pr-7094.yml b/html/changelogs/AutoChangeLog-pr-7094.yml new file mode 100644 index 0000000000..4e8220596c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7094.yml @@ -0,0 +1,4 @@ +author: "Armhulen code, Keekenox sprites and S_____ as the ideas guy :roll_eyes:" +delete-after: True +changes: + - rscadd: "New drinks: Peppermint Patty and the Candyland Extract!!" diff --git a/html/changelogs/AutoChangeLog-pr-7095.yml b/html/changelogs/AutoChangeLog-pr-7095.yml new file mode 100644 index 0000000000..82f3de8e7e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7095.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - balance: "It's now easier to become fat. Don't eat so much." diff --git a/html/changelogs/AutoChangeLog-pr-7101.yml b/html/changelogs/AutoChangeLog-pr-7101.yml new file mode 100644 index 0000000000..6c81196166 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7101.yml @@ -0,0 +1,6 @@ +author: "cacogen" +delete-after: True +changes: + - rscadd: "You can now see what other people are eating or drinking." + - rscadd: "Borg shaker can now synthesise milk, lemon juice, banana juice and coffee" + - bugfix: "Renamed drinks no longer revert to their original name when their reagents change" diff --git a/html/changelogs/AutoChangeLog-pr-7102.yml b/html/changelogs/AutoChangeLog-pr-7102.yml new file mode 100644 index 0000000000..104a236587 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7102.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "checks to see if bullets are deleted if they are the ammo type and the bullet chambered." diff --git a/html/changelogs/AutoChangeLog-pr-7104.yml b/html/changelogs/AutoChangeLog-pr-7104.yml new file mode 100644 index 0000000000..d9834f2718 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7104.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - spellcheck: "Capitalization, propriety, and plurality on turfs have been improved." diff --git a/html/changelogs/AutoChangeLog-pr-7110.yml b/html/changelogs/AutoChangeLog-pr-7110.yml new file mode 100644 index 0000000000..f91aa7fe01 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7110.yml @@ -0,0 +1,5 @@ +author: "Toriate" +delete-after: True +changes: + - rscadd: "Added the Corporate Uniform and the Silver Bike Horn" + - imageadd: "added sprites for the Corporate Uniform and Silver Bike Horn" diff --git a/html/changelogs/AutoChangeLog-pr-7116.yml b/html/changelogs/AutoChangeLog-pr-7116.yml new file mode 100644 index 0000000000..776a414f4e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7116.yml @@ -0,0 +1,6 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Fixed missing grilles under brig windows of the pubby shuttle." + - rscadd: "For the pubby shuttle, added some food in the fridge, mostly pie slices. Also added a sleeper to the minimedbay." + - tweak: "Reworded pubby shuttle description to be more inline with the new train shuttle." diff --git a/html/changelogs/AutoChangeLog-pr-7117.yml b/html/changelogs/AutoChangeLog-pr-7117.yml new file mode 100644 index 0000000000..ceabfe240e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7117.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Unbreakable ladders are now left behind when shuttles move." diff --git a/html/changelogs/AutoChangeLog-pr-7120.yml b/html/changelogs/AutoChangeLog-pr-7120.yml new file mode 100644 index 0000000000..48da0e70f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7120.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "Players who edited a circuit assembly can scan it as a ghost." diff --git a/html/changelogs/AutoChangeLog-pr-7121.yml b/html/changelogs/AutoChangeLog-pr-7121.yml new file mode 100644 index 0000000000..c4ffb99f93 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7121.yml @@ -0,0 +1,4 @@ +author: "Pubby" +delete-after: True +changes: + - bugfix: "PubbyStation: Fixed disposals issue in security hallway" diff --git a/html/changelogs/AutoChangeLog-pr-7123.yml b/html/changelogs/AutoChangeLog-pr-7123.yml new file mode 100644 index 0000000000..5c67a9ef6e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7123.yml @@ -0,0 +1,5 @@ +author: "Dax Dupont" +delete-after: True +changes: + - refactor: "Syndicate and Centcom messages have been squashed together." + - admin: "You can now send both Syndicate and Centcom headset messages. Be mindful that the button was changed to HM in the playerpanel" diff --git a/html/changelogs/AutoChangeLog-pr-7125.yml b/html/changelogs/AutoChangeLog-pr-7125.yml new file mode 100644 index 0000000000..6e8960fa5e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7125.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Fixes missing cream pies in the cream pie fridge." diff --git a/html/changelogs/AutoChangeLog-pr-7131.yml b/html/changelogs/AutoChangeLog-pr-7131.yml new file mode 100644 index 0000000000..1a809b9548 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7131.yml @@ -0,0 +1,8 @@ +author: "cyclowns" +delete-after: True +changes: + - rscadd: "Fusion has been re-enabled! It works similarly to before, but with some slight modification." + - tweak: "Fusion now requires huge amounts of plasma and tritium, as well as a very high thermal energy and temperature to start. There are several tiers of fusion that cause different benefits and effects." + - tweak: "The fusion power of most gases has been tweaked to allow for more interesting interactions." + - tweak: "BZ now takes N2O and plasma to create, rather than tritium and plasma." + - bugfix: "Fusion no longer delivers server-crashingly large amounts of radiation and stationwide EMPs." diff --git a/html/changelogs/AutoChangeLog-pr-7133.yml b/html/changelogs/AutoChangeLog-pr-7133.yml new file mode 100644 index 0000000000..28f3ed6e91 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7133.yml @@ -0,0 +1,6 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Chem synths overlays aren't all kinds of fucked anymore." + - refactor: "Unfucked all of the remaining chem synth code." + - refactor: "Reagents no longer have an unused var that's always set to true. Who did this?" diff --git a/html/changelogs/AutoChangeLog-pr-7134.yml b/html/changelogs/AutoChangeLog-pr-7134.yml new file mode 100644 index 0000000000..73e6fb0cf2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7134.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - balance: "Pirates and Syndicate salvage workers have been beefed up around the caravan ambush ruin." diff --git a/html/changelogs/AutoChangeLog-pr-7137.yml b/html/changelogs/AutoChangeLog-pr-7137.yml new file mode 100644 index 0000000000..2fe89fa80f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7137.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "It is no longer possible to pull the mirages images at space transitions, and some other abstract effects." diff --git a/html/changelogs/AutoChangeLog-pr-7138.yml b/html/changelogs/AutoChangeLog-pr-7138.yml new file mode 100644 index 0000000000..3014c1edee --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7138.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Moving large amounts of items with bluespace launchpads no longer creates a laggy amount of sparks." diff --git a/html/changelogs/AutoChangeLog-pr-7142.yml b/html/changelogs/AutoChangeLog-pr-7142.yml new file mode 100644 index 0000000000..cbbc1c647e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7142.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - balance: "Makes the xeno nest ruin harder to cheese." diff --git a/html/changelogs/AutoChangeLog-pr-7145.yml b/html/changelogs/AutoChangeLog-pr-7145.yml new file mode 100644 index 0000000000..408aaf8095 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7145.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The escape pod hallways on MetaStation and DeltaStation now have air again." diff --git a/html/changelogs/AutoChangeLog-pr-7146.yml b/html/changelogs/AutoChangeLog-pr-7146.yml new file mode 100644 index 0000000000..ad649a7065 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7146.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - tweak: "Non-admins can no longer use LOOC while dead, unconscious, in crit, or while ghosting." diff --git a/html/changelogs/AutoChangeLog-pr-7148.yml b/html/changelogs/AutoChangeLog-pr-7148.yml new file mode 100644 index 0000000000..b836a75771 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7148.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - balance: "Dogborgs will now reduce firestacks when they use their tongue to lick someone's face." diff --git a/html/changelogs/AutoChangeLog-pr-7151.yml b/html/changelogs/AutoChangeLog-pr-7151.yml new file mode 100644 index 0000000000..d881249df5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7151.yml @@ -0,0 +1,5 @@ +author: "LetterN" +delete-after: True +changes: + - bugfix: "Fixes shock collars, they now fit on the neck slot" + - bugfix: "you can't put them on pockets anymore" diff --git a/html/changelogs/AutoChangeLog-pr-7153.yml b/html/changelogs/AutoChangeLog-pr-7153.yml new file mode 100644 index 0000000000..ff400b0661 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7153.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "It is no longer possible to repair cyborg headlamps even when their panel is closed." diff --git a/html/changelogs/AutoChangeLog-pr-7154.yml b/html/changelogs/AutoChangeLog-pr-7154.yml new file mode 100644 index 0000000000..5ac0eb3f80 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7154.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Item fortification scrolls no longer add multiple prefixes when applied to the same item." diff --git a/html/changelogs/AutoChangeLog-pr-7157.yml b/html/changelogs/AutoChangeLog-pr-7157.yml new file mode 100644 index 0000000000..3817543206 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7157.yml @@ -0,0 +1,6 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "The blob core (and only the blob core) now respawns randomly on the station when the core is taken off z-level" + - bugfix: "Prevents the round from going into an unending state" + - code_imp: "Added a variable to the stationloving component for objects that can be destroyed but not moved off z-level" diff --git a/html/changelogs/AutoChangeLog-pr-7158.yml b/html/changelogs/AutoChangeLog-pr-7158.yml new file mode 100644 index 0000000000..22c94970c7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7158.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "NanoTours is proud to announce that the Lavaland beach club has been outfitted with a dance machine, state of the art bar equipment and more." diff --git a/html/changelogs/AutoChangeLog-pr-7160.yml b/html/changelogs/AutoChangeLog-pr-7160.yml new file mode 100644 index 0000000000..84c981026d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7160.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "After years of protests NT decided to update the fire security standards by adding 3 (three) advanced fire extinguishers to all the new stations." diff --git a/html/changelogs/AutoChangeLog-pr-7162.yml b/html/changelogs/AutoChangeLog-pr-7162.yml new file mode 100644 index 0000000000..7aa07cedd9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7162.yml @@ -0,0 +1,4 @@ +author: "and Fel" +delete-after: True +changes: + - imageadd: "New chairs are on most shuttles! Finally, you can relax in style while escaping a metal death trap." diff --git a/html/changelogs/AutoChangeLog-pr-7164.yml b/html/changelogs/AutoChangeLog-pr-7164.yml new file mode 100644 index 0000000000..ade99d0165 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7164.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Hyperspace ripples now remain visible until the shuttle arrives, even during extreme lag." + - bugfix: "Ripples now correctly take the shape of the shuttle, rather than always being a rectangle." diff --git a/html/changelogs/AutoChangeLog-pr-7165.yml b/html/changelogs/AutoChangeLog-pr-7165.yml new file mode 100644 index 0000000000..9992f774c5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7165.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Fixes the bathroom being airless in the Space Ninja anime jail." diff --git a/html/changelogs/AutoChangeLog-pr-7166.yml b/html/changelogs/AutoChangeLog-pr-7166.yml new file mode 100644 index 0000000000..d69c45ccd3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7166.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Non-secure windoors now properly support the \"One Required\" access mode of airlock electronics." diff --git a/html/changelogs/AutoChangeLog-pr-7171.yml b/html/changelogs/AutoChangeLog-pr-7171.yml new file mode 100644 index 0000000000..c103f34898 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7171.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The gulag shuttle no longer moves instantly when returned via the claim console." diff --git a/html/changelogs/AutoChangeLog-pr-7172.yml b/html/changelogs/AutoChangeLog-pr-7172.yml new file mode 100644 index 0000000000..bf2f9c13bd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7172.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - admin: "It is now possible to use the \".p\" (Asay) and \".d\" (Dsay) prefixes while an admin ghost." diff --git a/html/changelogs/AutoChangeLog-pr-7177.yml b/html/changelogs/AutoChangeLog-pr-7177.yml new file mode 100644 index 0000000000..1126202b20 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7177.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - admin: "Speaking in deadchat now shows your rank instead of ADMIN" diff --git a/html/changelogs/AutoChangeLog-pr-7183.yml b/html/changelogs/AutoChangeLog-pr-7183.yml new file mode 100644 index 0000000000..746baf1eb1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7183.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - bugfix: "The repo compiles again" diff --git a/html/changelogs/AutoChangeLog-pr-7188.yml b/html/changelogs/AutoChangeLog-pr-7188.yml new file mode 100644 index 0000000000..d27aee5b1b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7188.yml @@ -0,0 +1,8 @@ +author: "JStheguy" +delete-after: True +changes: + - rscadd: "Added the data card reader circuit, a circuit that is able to read data cards, as well as write to them." + - tweak: "Data cards are now longer inexplicably called data disks despite clearly being cards, and can be printed from the \"tools\" section of the integrated circuit printer." + - tweak: "Data cards no longer have a special \"label card\" verb and instead can have their names and descriptions changed with a pen." + - rscadd: "Also, some aesthetically different variants of the data cards, because why not." + - imageadd: "Data cards have new sprites, with support for coloring them via the assembly detailer." diff --git a/html/changelogs/AutoChangeLog-pr-7189.yml b/html/changelogs/AutoChangeLog-pr-7189.yml new file mode 100644 index 0000000000..f0718609b9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7189.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "Added a pink scarf to vendomats" diff --git a/html/changelogs/AutoChangeLog-pr-7190.yml b/html/changelogs/AutoChangeLog-pr-7190.yml new file mode 100644 index 0000000000..ac2f2cf485 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7190.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "Players can now ctrl-click the PDA to remove the item in its pen slot" diff --git a/html/changelogs/AutoChangeLog-pr-7195.yml b/html/changelogs/AutoChangeLog-pr-7195.yml new file mode 100644 index 0000000000..2484f15f1f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7195.yml @@ -0,0 +1,4 @@ +author: "ninjanomnom" +delete-after: True +changes: + - rscadd: "A plush that knows too much has found its way to the bus ruin." diff --git a/html/changelogs/AutoChangeLog-pr-7199.yml b/html/changelogs/AutoChangeLog-pr-7199.yml new file mode 100644 index 0000000000..d7dbe7c589 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7199.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "added a clamp so you can't set a negative multiplier to create materials and create more than 50 items." diff --git a/html/changelogs/AutoChangeLog-pr-7201.yml b/html/changelogs/AutoChangeLog-pr-7201.yml new file mode 100644 index 0000000000..562c8e4190 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7201.yml @@ -0,0 +1,5 @@ +author: "Cobby" +delete-after: True +changes: + - rscdel: "Removed Advanced Mining Scanner from roundstart voucher kits." + - rscdel: "Removed Explorer Webbing from all voucher kits besides the shelter capsule pack." diff --git a/html/changelogs/AutoChangeLog-pr-7207.yml b/html/changelogs/AutoChangeLog-pr-7207.yml new file mode 100644 index 0000000000..ebdd247f5c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7207.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "anomaly cores no longer tend to dust" diff --git a/html/changelogs/AutoChangeLog-pr-7218.yml b/html/changelogs/AutoChangeLog-pr-7218.yml new file mode 100644 index 0000000000..6bb568d088 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7218.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - spellcheck: "Plant disks with potency genes clarify the percent is for potency scaling and not relative to max volume on examine." diff --git a/html/changelogs/AutoChangeLog-pr-7219.yml b/html/changelogs/AutoChangeLog-pr-7219.yml new file mode 100644 index 0000000000..b50be06a75 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7219.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - admin: "Create antags now checks for people being on station before applying." diff --git a/html/changelogs/AutoChangeLog-pr-7220.yml b/html/changelogs/AutoChangeLog-pr-7220.yml new file mode 100644 index 0000000000..ba87335d1e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7220.yml @@ -0,0 +1,6 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "Blast cannons have been fixed and are now available for purchase by traitorous scientists for a low low price of 14TC." + - rscadd: "Blast cannons take the explosive power of a TTV bomb and ejects a linear projectile that will apply what the bomb would do to a certain tile at that distance to that tile. However, this will not cause breaches, or gib mobs, unless the gods (admins) so will it. +experimental: Blast cannons do not respect maxcap. (Unless the admins so will it.)" diff --git a/html/changelogs/AutoChangeLog-pr-7222.yml b/html/changelogs/AutoChangeLog-pr-7222.yml new file mode 100644 index 0000000000..1fb99a2d63 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7222.yml @@ -0,0 +1,4 @@ +author: "Kor" +delete-after: True +changes: + - rscadd: "Bubblegum has regained his original (deadlier) move set." diff --git a/html/changelogs/AutoChangeLog-pr-7228.yml b/html/changelogs/AutoChangeLog-pr-7228.yml new file mode 100644 index 0000000000..fd95cb055c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7228.yml @@ -0,0 +1,4 @@ +author: "Improvedname" +delete-after: True +changes: + - rscadd: "Adds rubbershot secrifle shots" diff --git a/html/changelogs/AutoChangeLog-pr-7230.yml b/html/changelogs/AutoChangeLog-pr-7230.yml new file mode 100644 index 0000000000..b1674293b5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7230.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "Cyborgs now drop keys on deconstruction/detonation" diff --git a/html/changelogs/AutoChangeLog-pr-7231.yml b/html/changelogs/AutoChangeLog-pr-7231.yml new file mode 100644 index 0000000000..4bd894c04e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7231.yml @@ -0,0 +1,4 @@ +author: "Time-Green" +delete-after: True +changes: + - bugfix: "Soda is no longer intangible to the laws of physics" diff --git a/html/changelogs/AutoChangeLog-pr-7238.yml b/html/changelogs/AutoChangeLog-pr-7238.yml new file mode 100644 index 0000000000..ea7e40df5f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7238.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The \"Save Logs\" option in the chat now actually works (IE 10+ only)." diff --git a/html/changelogs/AutoChangeLog-pr-7240.yml b/html/changelogs/AutoChangeLog-pr-7240.yml new file mode 100644 index 0000000000..4bc6b87ee7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7240.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Fixed cyborgs not getting their names at round start" + - bugfix: "Fixed cyborgs and A.I.s being able to bypass appearance bans" diff --git a/html/changelogs/AutoChangeLog-pr-7244.yml b/html/changelogs/AutoChangeLog-pr-7244.yml new file mode 100644 index 0000000000..e90d1d33d0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7244.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "fixes cult shuttle message repeating" diff --git a/html/changelogs/AutoChangeLog-pr-7245.yml b/html/changelogs/AutoChangeLog-pr-7245.yml new file mode 100644 index 0000000000..764069b653 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7245.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - admin: "Malf AI machine overloads now are logged/admin messaged." diff --git a/html/changelogs/AutoChangeLog-pr-7249.yml b/html/changelogs/AutoChangeLog-pr-7249.yml new file mode 100644 index 0000000000..8adf528526 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7249.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Hardsuit helmets now protect the wearer from pepperspray" diff --git a/html/changelogs/AutoChangeLog-pr-7250.yml b/html/changelogs/AutoChangeLog-pr-7250.yml new file mode 100644 index 0000000000..5036847eef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7250.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - code_imp: "Removed unused effect object that could be used to spawn a list of humans" diff --git a/html/changelogs/AutoChangeLog-pr-7251.yml b/html/changelogs/AutoChangeLog-pr-7251.yml new file mode 100644 index 0000000000..1f4c5cf012 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7251.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "It is once again possible for Cargo to export mechs." diff --git a/html/changelogs/AutoChangeLog-pr-7253.yml b/html/changelogs/AutoChangeLog-pr-7253.yml new file mode 100644 index 0000000000..153cb9131e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7253.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "tourettes doesnt stack on itself anymore" diff --git a/html/changelogs/AutoChangeLog-pr-7254.yml b/html/changelogs/AutoChangeLog-pr-7254.yml new file mode 100644 index 0000000000..f9295c0c92 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7254.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - refactor: "AI static now uses visual contents and should perform better in theory." diff --git a/html/changelogs/AutoChangeLog-pr-7259.yml b/html/changelogs/AutoChangeLog-pr-7259.yml new file mode 100644 index 0000000000..c99b4f74e3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7259.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Bucket helmets cannot have reagents transferred into them until after they are removed" diff --git a/html/changelogs/AutoChangeLog-pr-7262.yml b/html/changelogs/AutoChangeLog-pr-7262.yml new file mode 100644 index 0000000000..13c4d49dbf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7262.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "R&D deconstructors can now destroy things regardless of if there's a point value or material" diff --git a/html/changelogs/AutoChangeLog-pr-7264.yml b/html/changelogs/AutoChangeLog-pr-7264.yml new file mode 100644 index 0000000000..2bc45d3036 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7264.yml @@ -0,0 +1,4 @@ +author: "Zxaber" +delete-after: True +changes: + - rscadd: "Cyborgs can wear more hats now." diff --git a/html/changelogs/AutoChangeLog-pr-7265.yml b/html/changelogs/AutoChangeLog-pr-7265.yml new file mode 100644 index 0000000000..de2d14842a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7265.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "You should now receive your destroy AI objectives properly during IAA" diff --git a/html/changelogs/AutoChangeLog-pr-7267.yml b/html/changelogs/AutoChangeLog-pr-7267.yml new file mode 100644 index 0000000000..8777f7780b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7267.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Did you know that honey has antibiotic properties?" diff --git a/html/changelogs/AutoChangeLog-pr-7273.yml b/html/changelogs/AutoChangeLog-pr-7273.yml new file mode 100644 index 0000000000..1535cbe95d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7273.yml @@ -0,0 +1,4 @@ +author: "Thunder12345" +delete-after: True +changes: + - rscadd: "Added a colour picker component for use with circuits." diff --git a/html/changelogs/AutoChangeLog-pr-7277.yml b/html/changelogs/AutoChangeLog-pr-7277.yml new file mode 100644 index 0000000000..b9ff0d8680 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7277.yml @@ -0,0 +1,7 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Deconstructable TEG now propertly connects to pipes." + - bugfix: "Fix of inverted TEG sprite of slow turbine turning. +add:Now you can flip circulator and make TEG of your dream. +add:Add TEG and circulator to \"Advanced Power Manipulation\" techweb node." diff --git a/html/changelogs/AutoChangeLog-pr-7280.yml b/html/changelogs/AutoChangeLog-pr-7280.yml new file mode 100644 index 0000000000..f5813ae632 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7280.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - imageadd: "New icon for plastic flaps that actually looks airtight." + - code_imp: "Update to plastic flaps code to use tool procs rather than attackby and removed two pointless states." diff --git a/html/changelogs/AutoChangeLog-pr-7294.yml b/html/changelogs/AutoChangeLog-pr-7294.yml new file mode 100644 index 0000000000..8ac886a45d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7294.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Printing the TEG and circulator boards no longer prints the completed machinery instead." diff --git a/html/changelogs/AutoChangeLog-pr-7327.yml b/html/changelogs/AutoChangeLog-pr-7327.yml new file mode 100644 index 0000000000..03f67c3307 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7327.yml @@ -0,0 +1,9 @@ +author: "Naksu" +delete-after: True +changes: + - tweak: "The ladders in the tear in the fabric of reality no longer spawn their endpoints when the area is loaded, but only when the tear is made accessible via a BoH bomb." + - tweak: "CentCom is no longer accessible via the space ladder in the tear." + - tweak: "The lavaland endpoint can no longer spawn completely surrounded by lava, unless it spawns on an island" + - code_imp: "ChangeTurf can now conditionally inherit the air of the turf it is replacing, via the CHANGETURF_INHERIT_AIR flag." + - bugfix: "when ladder endpoints are created, the binary turfs that are created inherit the air of the turfs they are replacing. This means the lavaland ladder endpoint will have the lavaland airmix, instead of a vacuum." + - code_imp: "navigation beacons are now properly deregistered from their Z-level list and re-registered on the correct one if moved across Z-levels by an effect such as teleportation or a BoH-induced chasm." diff --git a/html/changelogs/AutoChangeLog-pr-7340.yml b/html/changelogs/AutoChangeLog-pr-7340.yml new file mode 100644 index 0000000000..958f97164b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7340.yml @@ -0,0 +1,4 @@ +author: "Jegub" +delete-after: True +changes: + - imageadd: "Glowcaps now have their own sprite." diff --git a/html/changelogs/AutoChangeLog-pr-7342.yml b/html/changelogs/AutoChangeLog-pr-7342.yml new file mode 100644 index 0000000000..67c44271e7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7342.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - imageadd: "Medical HUDs will now show an icon if the body has died recently enough to be defibbed" diff --git a/html/changelogs/AutoChangeLog-pr-7346.yml b/html/changelogs/AutoChangeLog-pr-7346.yml new file mode 100644 index 0000000000..6e9bf5a1e3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7346.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - spellcheck: "Improved supply shuttle messages and firefighting foam descs." diff --git a/html/changelogs/AutoChangeLog-pr-7349.yml b/html/changelogs/AutoChangeLog-pr-7349.yml new file mode 100644 index 0000000000..317863b6c3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7349.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - bugfix: "Supply shuttles will no longer spill containers on docking." diff --git a/html/changelogs/AutoChangeLog-pr-7353.yml b/html/changelogs/AutoChangeLog-pr-7353.yml new file mode 100644 index 0000000000..2041055337 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7353.yml @@ -0,0 +1,4 @@ +author: "MacHac" +delete-after: True +changes: + - bugfix: "Bedsheets once again properly influence the dreams of those who sleep under them." diff --git a/html/changelogs/AutoChangeLog-pr-7355.yml b/html/changelogs/AutoChangeLog-pr-7355.yml new file mode 100644 index 0000000000..1983db7d0f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7355.yml @@ -0,0 +1,5 @@ +author: "Naksu" +delete-after: True +changes: + - bugfix: "constructed directional windows no longer leak atmos across them" + - code_imp: "setting the value of anchored for objects should be done via the setAnchored proc to properly handle things like atmos updates in one place" diff --git a/html/changelogs/AutoChangeLog-pr-7358.yml b/html/changelogs/AutoChangeLog-pr-7358.yml new file mode 100644 index 0000000000..911196dceb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7358.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - bugfix: "The flag cape donor item should render properly now." diff --git a/html/create_object.html b/html/create_object.html index 619da3ec47..3609e46916 100644 --- a/html/create_object.html +++ b/html/create_object.html @@ -35,7 +35,7 @@ R
    Number: - Dir: + Dir: Name:
    Where: