diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..47b5635599 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "tools/tgstation-server"] + path = tools/tgstation-server + url = https://github.com/tgstation/tgstation-server + branch = master diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt index d28b33a8eb..5d3c3ccec2 100644 --- a/SQL/database_changelog.txt +++ b/SQL/database_changelog.txt @@ -5,11 +5,13 @@ Once created this table is populated with rows from the `feedback` table. START TRANSACTION; CREATE TABLE `feedback`.`round` (`id` INT(11) NOT NULL AUTO_INCREMENT, `start_datetime` DATETIME NOT NULL, `end_datetime` DATETIME NULL, `server_ip` INT(10) UNSIGNED NOT NULL, `server_port` SMALLINT(5) UNSIGNED NOT NULL, `commit_hash` CHAR(40) NULL, `game_mode` VARCHAR(32) NULL, `game_mode_result` VARCHAR(64) NULL, `end_state` VARCHAR(64) NULL, `shuttle_name` VARCHAR(64) NULL, `map_name` VARCHAR(32) NULL, `station_name` VARCHAR(80) NULL, PRIMARY KEY (`id`)); +ALTER TABLE `feedback`.`feedback` ADD INDEX `tmp` (`round_id` ASC, `var_name` ASC); INSERT INTO `feedback`.`round` (`id`, `start_datetime`, `end_datetime`, `server_ip`, `server_port`, `commit_hash`, `game_mode`, `game_mode_result`, `end_state`, `shuttle_name`, `map_name`, `station_name`) SELECT DISTINCT ri.round_id, IFNULL(STR_TO_DATE(st.details,'%a %b %e %H:%i:%s %Y'), TIMESTAMP(0)), STR_TO_DATE(et.details,'%a %b %e %H:%i:%s %Y'), IFNULL(INET_ATON(SUBSTRING_INDEX(IF(si.details = '', '0', IF(SUBSTRING_INDEX(si.details, ':', 1) LIKE '%_._%', si.details, '0')), ':', 1)), INET_ATON(0)), IFNULL(IF(si.details LIKE '%:_%', CAST(SUBSTRING_INDEX(si.details, ':', -1) AS UNSIGNED), '0'), '0'), ch.details, gm.details, mr.details, IFNULL(es.details, ep.details), ss.details, mn.details, sn.details FROM `feedback`.`feedback`AS ri LEFT JOIN `feedback`.`feedback` AS st ON ri.round_id = st.round_id AND st.var_name = "round_start" LEFT JOIN `feedback`.`feedback` AS et ON ri.round_id = et.round_id AND et.var_name = "round_end" LEFT JOIN `feedback`.`feedback` AS si ON ri.round_id = si.round_id AND si.var_name = "server_ip" LEFT JOIN `feedback`.`feedback` AS ch ON ri.round_id = ch.round_id AND ch.var_name = "revision" LEFT JOIN `feedback`.`feedback` AS gm ON ri.round_id = gm.round_id AND gm.var_name = "game_mode" LEFT JOIN `feedback`.`feedback` AS mr ON ri.round_id = mr.round_id AND mr.var_name = "round_end_result" LEFT JOIN `feedback`.`feedback` AS es ON ri.round_id = es.round_id AND es.var_name = "end_state" LEFT JOIN `feedback`.`feedback` AS ep ON ri.round_id = ep.round_id AND ep.var_name = "end_proper" LEFT JOIN `feedback`.`feedback` AS ss ON ri.round_id = ss.round_id AND ss.var_name = "emergency_shuttle" LEFT JOIN `feedback`.`feedback` AS mn ON ri.round_id = mn.round_id AND mn.var_name = "map_name" LEFT JOIN `feedback`.`feedback` AS sn ON ri.round_id = sn.round_id AND sn.var_name = "station_renames"; +ALTER TABLE `feedback`.`feedback` DROP INDEX `tmp`; COMMIT; It's not necessary to delete the rows from the `feedback` table but henceforth these datapoints will be in the `round` table. diff --git a/_maps/RandomRuins/SpaceRuins/dragoontomb.dmm b/_maps/RandomRuins/SpaceRuins/dragoontomb.dmm deleted file mode 100644 index 94d7274849..0000000000 --- a/_maps/RandomRuins/SpaceRuins/dragoontomb.dmm +++ /dev/null @@ -1,1888 +0,0 @@ -//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/airless, -/area/ruin/unpowered/no_grav) -"c" = ( -/turf/closed/mineral/volcanic/lava_land_surface{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/ruin/unpowered/no_grav) -"d" = ( -/mob/living/simple_animal/hostile/flan/water, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"e" = ( -/mob/living/simple_animal/hostile/flan/fire, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"f" = ( -/obj/structure/lattice, -/turf/template_noop, -/area/template_noop) -"g" = ( -/obj/item/weapon/bikehorn, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"h" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/unpowered/no_grav) -"i" = ( -/obj/structure/rack, -/obj/item/weapon/kitchen/knife/combat/survival, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"j" = ( -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"k" = ( -/obj/structure/rack, -/obj/item/weapon/twohanded/spear, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"l" = ( -/obj/structure/rack, -/obj/item/weapon/relic, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"m" = ( -/obj/structure/mineral_door/wood, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"n" = ( -/obj/structure/rack, -/obj/item/weapon/dice/d4, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"o" = ( -/obj/structure/rack, -/obj/item/weapon/dice/d8, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"p" = ( -/obj/structure/rack, -/obj/item/weapon/dice/d12, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"q" = ( -/obj/structure/rack, -/obj/item/weapon/dice/d00, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"r" = ( -/obj/structure/rack, -/obj/item/weapon/dice/d20, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"s" = ( -/obj/structure/statue/silver/sec, -/turf/open/floor/mineral/silver, -/area/ruin/unpowered/no_grav) -"t" = ( -/obj/structure/statue/silver/md, -/turf/open/floor/mineral/silver, -/area/ruin/unpowered/no_grav) -"u" = ( -/obj/structure/table/wood/fancy, -/obj/item/weapon/twohanded/skybulge, -/turf/open/floor/mineral/silver, -/area/ruin/unpowered/no_grav) -"v" = ( -/turf/open/floor/mineral/silver, -/area/ruin/unpowered/no_grav) -"w" = ( -/obj/structure/mineral_door/silver, -/turf/open/floor/mineral/silver, -/area/ruin/unpowered/no_grav) -"x" = ( -/obj/structure/closet/coffin, -/obj/item/stack/sheet/bone, -/turf/open/floor/mineral/silver, -/area/ruin/unpowered/no_grav) -"y" = ( -/mob/living/simple_animal/hostile/flan/fire, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) -"z" = ( -/obj/structure/statue/silver/secborg, -/turf/open/floor/mineral/silver, -/area/ruin/unpowered/no_grav) -"A" = ( -/obj/structure/statue/silver/medborg, -/turf/open/floor/mineral/silver, -/area/ruin/unpowered/no_grav) -"B" = ( -/obj/structure/table/wood/fancy, -/obj/item/weapon/reagent_containers/food/snacks/donkpocket, -/turf/open/floor/mineral/silver, -/area/ruin/unpowered/no_grav) -"C" = ( -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 8 - }, -/turf/open/floor/plating/astplate{ - icon_state = "astplate_warn"; - initial_gas_mix = "TEMP=2.7"; - tag = "icon-astplate_warn (WEST)" - }, -/area/ruin/unpowered/no_grav) -"D" = ( -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 4 - }, -/turf/open/floor/plating/astplate{ - icon_state = "astplate_warn"; - initial_gas_mix = "TEMP=2.7"; - tag = "icon-astplate_warn (EAST)" - }, -/area/ruin/unpowered/no_grav) -"E" = ( -/obj/item/weapon/dice/d10, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"F" = ( -/obj/structure/grille, -/turf/template_noop, -/area/ruin/unpowered/no_grav) -"G" = ( -/obj/item/weapon/dice/d100, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"H" = ( -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 10 - }, -/turf/open/floor/plating/astplate{ - icon_state = "astplate_warn"; - initial_gas_mix = "TEMP=2.7"; - tag = "icon-astplate_warn (SOUTHWEST)" - }, -/area/ruin/unpowered/no_grav) -"I" = ( -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 6 - }, -/turf/open/floor/plating/astplate{ - icon_state = "astplate_warn"; - initial_gas_mix = "TEMP=2.7"; - tag = "icon-astplate_warn (SOUTHEAST)" - }, -/area/ruin/unpowered/no_grav) -"J" = ( -/obj/item/weapon/crowbar/red, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"K" = ( -/obj/item/weapon/dice/d1, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"L" = ( -/turf/open/floor/mineral/silver{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) - -(1,1,1) = {" -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 -"} -(2,1,1) = {" -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 -"} -(3,1,1) = {" -a -a -a -a -a -a -a -b -b -c -c -c -c -a -a -a -a -c -c -c -c -c -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(4,1,1) = {" -a -a -a -a -a -a -b -b -b -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -b -b -b -c -c -c -a -a -a -a -c -c -c -a -a -a -"} -(5,1,1) = {" -a -a -a -a -a -a -b -b -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -a -a -a -"} -(6,1,1) = {" -a -a -a -a -a -b -b -b -c -c -c -c -c -c -c -c -c -c -c -b -c -c -c -c -c -c -c -c -c -b -b -b -b -c -c -c -c -c -a -a -"} -(7,1,1) = {" -a -a -a -a -b -b -b -b -b -b -b -c -b -c -c -c -c -c -b -b -c -c -b -b -c -c -c -b -c -b -c -c -b -c -c -c -c -c -a -a -"} -(8,1,1) = {" -a -b -b -b -b -b -c -c -b -b -b -b -b -d -c -c -c -c -b -b -c -c -c -b -b -c -b -b -c -c -c -c -c -c -b -c -c -a -a -a -"} -(9,1,1) = {" -a -a -c -c -c -c -c -c -c -c -c -c -c -b -c -c -c -b -b -b -b -c -c -c -b -b -b -c -c -c -c -b -c -c -b -c -c -c -a -a -"} -(10,1,1) = {" -a -a -c -c -c -c -c -c -c -c -c -c -c -b -c -c -c -b -b -b -b -c -c -c -b -d -c -c -c -c -b -b -c -c -b -c -c -c -c -a -"} -(11,1,1) = {" -a -a -a -c -c -c -c -c -b -b -b -c -c -b -b -c -c -c -c -b -E -c -b -c -b -c -c -c -c -b -b -c -c -b -b -c -c -c -a -a -"} -(12,1,1) = {" -a -a -a -c -c -c -c -b -d -b -b -c -c -b -b -b -c -c -c -c -c -c -G -c -b -c -c -c -b -b -c -c -c -b -b -c -c -b -b -a -"} -(13,1,1) = {" -a -a -a -c -c -c -c -b -b -b -e -b -c -c -b -b -b -b -c -c -c -c -c -c -b -b -c -c -b -b -c -c -c -c -c -c -c -b -a -a -"} -(14,1,1) = {" -a -a -a -c -c -c -c -b -b -c -b -b -b -c -c -c -c -b -b -b -b -b -c -c -c -b -b -c -b -c -c -c -c -c -c -b -b -a -a -a -"} -(15,1,1) = {" -a -a -a -c -c -c -c -c -b -c -c -b -g -c -c -c -c -c -b -b -b -b -c -c -c -b -b -c -b -c -c -c -c -c -c -b -b -a -a -a -"} -(16,1,1) = {" -a -a -a -c -c -c -c -c -c -c -c -b -b -b -b -c -c -c -c -c -b -b -c -b -b -c -b -c -b -c -c -b -b -b -b -b -b -a -a -a -"} -(17,1,1) = {" -a -a -a -a -c -c -c -c -c -c -b -d -b -b -c -c -c -c -c -c -c -b -b -b -c -c -b -b -b -b -b -b -b -b -b -b -b -a -a -a -"} -(18,1,1) = {" -a -a -a -a -c -c -c -c -c -b -b -c -c -c -c -f -c -c -c -c -c -b -b -c -c -b -b -b -d -b -c -c -c -c -b -b -b -a -a -a -"} -(19,1,1) = {" -a -a -a -a -c -c -c -c -c -c -c -c -a -a -a -f -a -a -f -a -a -c -b -b -c -b -b -b -b -b -b -c -c -c -c -b -b -a -a -a -"} -(20,1,1) = {" -a -a -a -a -b -b -c -c -c -c -a -a -h -h -h -h -h -h -h -h -f -c -c -b -b -b -b -c -c -b -b -c -c -c -c -c -b -a -a -a -"} -(21,1,1) = {" -a -a -a -a -b -b -b -b -c -c -c -f -h -i -j -h -n -j -j -h -a -f -c -c -b -b -b -c -c -c -b -b -c -c -c -c -b -b -a -a -"} -(22,1,1) = {" -a -a -a -a -a -b -b -b -c -c -c -a -h -j -j -m -j -j -j -h -F -F -c -c -J -b -c -c -c -c -c -b -c -c -c -c -c -c -a -a -"} -(23,1,1) = {" -a -a -a -a -a -b -b -b -c -c -a -a -h -k -j -h -o -j -j -C -C -C -H -b -b -b -c -b -b -b -c -b -c -c -c -c -c -a -a -a -"} -(24,1,1) = {" -a -a -a -a -a -a -b -b -c -c -c -a -h -h -h -h -p -j -y -D -D -D -I -b -b -d -c -c -b -b -c -b -c -c -c -c -c -a -a -a -"} -(25,1,1) = {" -a -a -a -a -a -a -b -b -b -c -c -f -h -l -j -h -q -j -j -h -F -F -c -b -b -c -c -c -b -K -c -b -c -c -c -c -c -c -a -a -"} -(26,1,1) = {" -a -a -a -a -a -a -a -b -b -c -c -a -h -j -j -m -j -j -j -h -f -c -c -b -b -c -b -c -c -c -c -b -c -b -c -c -c -c -a -a -"} -(27,1,1) = {" -a -a -a -a -a -a -a -b -b -c -c -f -h -k -j -h -r -L -j -h -a -c -b -b -c -c -b -c -c -c -c -c -c -b -c -c -b -b -a -a -"} -(28,1,1) = {" -a -a -a -a -a -a -a -b -b -c -a -f -h -h -h -h -h -w -h -h -a -c -b -c -c -b -b -c -c -b -c -c -c -b -d -b -b -b -a -a -"} -(29,1,1) = {" -a -a -a -a -a -a -a -b -b -c -a -f -a -a -a -h -s -v -z -h -f -c -b -c -b -b -c -c -c -b -c -c -c -b -c -c -c -a -a -a -"} -(30,1,1) = {" -a -a -a -a -a -a -a -a -b -c -c -c -c -f -f -h -h -v -h -h -a -c -c -c -b -d -c -b -c -b -c -c -c -b -c -c -b -b -a -a -"} -(31,1,1) = {" -a -a -a -a -a -a -a -a -a -c -c -c -c -a -a -h -t -v -A -h -a -a -c -c -c -b -c -b -c -b -b -b -b -b -c -c -b -a -a -a -"} -(32,1,1) = {" -a -a -a -a -a -a -a -a -a -c -c -c -c -c -a -h -h -v -h -h -f -f -f -c -b -b -c -c -c -c -b -b -c -c -c -c -c -a -a -a -"} -(33,1,1) = {" -a -a -a -a -a -a -a -a -a -a -c -c -c -c -f -h -u -v -B -h -a -a -c -c -b -b -b -c -c -c -b -c -c -c -c -c -c -c -a -a -"} -(34,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -c -c -c -a -h -h -x -h -h -a -a -c -c -c -b -b -c -b -b -b -c -c -c -c -c -c -c -a -a -"} -(35,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -c -c -c -h -h -h -f -a -c -c -c -c -c -b -b -b -c -c -c -c -c -c -c -c -a -a -a -"} -(36,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -c -c -c -a -f -c -c -c -c -b -b -b -b -c -c -c -c -c -c -c -a -a -a -a -a -"} -(37,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -c -c -c -c -c -c -b -b -b -b -b -b -b -c -c -c -c -c -a -a -a -a -a -a -"} -(38,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -c -c -b -b -b -b -a -a -a -a -b -b -c -c -c -a -a -a -a -a -a -a -"} -(39,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -"} -(40,1,1) = {" -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/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index ca178aa8aa..9290c25c95 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -62,8 +62,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/structure/lattice/catwalk, /turf/open/space, @@ -102,8 +101,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/cable{ d1 = 1; @@ -142,8 +140,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/cable{ d1 = 2; @@ -293,9 +290,7 @@ icon_state = "2-4" }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) @@ -389,7 +384,6 @@ /obj/item/device/plant_analyzer, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/floorgrime, @@ -425,8 +419,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/structure/lattice/catwalk, /turf/open/space, @@ -551,14 +544,12 @@ "abm" = ( /obj/machinery/computer/arcade, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "abn" = ( /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel, @@ -599,7 +590,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/barber{ @@ -670,9 +660,7 @@ "abz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -803,8 +791,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/cable{ d1 = 1; @@ -843,8 +830,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/cable{ d1 = 1; @@ -993,7 +979,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -1016,9 +1001,7 @@ "acm" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ @@ -1063,8 +1046,7 @@ }, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plating{ icon_state = "panelscorched" @@ -1139,7 +1121,6 @@ "acx" = ( /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/floorgrime, @@ -1195,9 +1176,7 @@ /obj/machinery/atmospherics/pipe/simple/general/hidden, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/window/reinforced{ dir = 8 @@ -1238,9 +1217,7 @@ "acF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/light, /turf/open/floor/plasteel, @@ -1263,7 +1240,6 @@ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; - pixel_x = 0; pixel_y = -28; prison_radio = 1 }, @@ -1326,7 +1302,6 @@ /area/security/prison) "acO" = ( /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/structure/table/glass, @@ -1345,16 +1320,12 @@ /area/security/prison) "acP" = ( /turf/closed/wall, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "acQ" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, /turf/open/floor/plating, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "acR" = ( /obj/structure/table/glass, /obj/item/weapon/reagent_containers/syringe, @@ -1364,9 +1335,7 @@ /obj/machinery/camera{ c_tag = "Prison Sanitarium"; dir = 2; - network = list("SS13","Prison"); - pixel_x = 0; - pixel_y = 0 + network = list("SS13","Prison") }, /turf/open/floor/plasteel/whitered/side{ dir = 1 @@ -1385,8 +1354,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/lattice/catwalk, /turf/open/space, @@ -1430,7 +1398,6 @@ /obj/machinery/airalarm{ desc = "This particular atmos control unit appears to have no access restrictions."; dir = 4; - icon_state = "alarm0"; locked = 0; name = "all-access air alarm"; pixel_x = -24; @@ -1483,8 +1450,7 @@ pixel_x = 3 }, /obj/item/device/taperecorder{ - pixel_x = -3; - pixel_y = 0 + pixel_x = -3 }, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/device/assembly/flash/handheld, @@ -1640,9 +1606,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "adk" = ( /obj/structure/shuttle/engine/propulsion/burst{ dir = 8 @@ -1656,8 +1620,7 @@ /obj/structure/table, /obj/item/device/flashlight/lamp, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = -29; - pixel_y = 0 + pixel_x = -29 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -1682,9 +1645,7 @@ "adp" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/black, /area/prison/execution_room) @@ -1724,7 +1685,6 @@ id = "permabolt3"; name = "Cell Bolt Control"; normaldoorcontrol = 1; - pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4 @@ -1757,7 +1717,6 @@ id = "permabolt2"; name = "Cell Bolt Control"; normaldoorcontrol = 1; - pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4 @@ -1783,7 +1742,6 @@ id = "permabolt1"; name = "Cell Bolt Control"; normaldoorcontrol = 1; - pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4 @@ -1798,17 +1756,14 @@ "adA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/light{ dir = 8 }, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/white, /area/security/prison) @@ -1842,9 +1797,7 @@ /area/space) "adE" = ( /turf/open/floor/plating, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "adF" = ( /obj/machinery/door/airlock/titanium{ name = "Escape Pod Airlock" @@ -1872,8 +1825,7 @@ /obj/machinery/status_display{ density = 0; layer = 3; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/machinery/computer/shuttle/pod{ pixel_x = -32; @@ -1892,8 +1844,7 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /obj/structure/table, /obj/item/weapon/storage/backpack/dufflebag/sec{ @@ -1932,7 +1883,6 @@ id = "prisonereducation"; name = "Door Bolt Control"; normaldoorcontrol = 1; - pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4 @@ -1947,8 +1897,7 @@ /area/prison/execution_room) "adN" = ( /obj/machinery/light_switch{ - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/structure/cable/yellow{ d1 = 1; @@ -1980,9 +1929,7 @@ /obj/item/weapon/pen, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) @@ -2020,9 +1967,7 @@ /obj/item/weapon/paper, /obj/item/weapon/pen, /obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) @@ -2127,9 +2072,7 @@ dir = 2 }, /turf/open/floor/plating, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aee" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -2291,7 +2234,6 @@ "aet" = ( /obj/structure/table/wood, /obj/machinery/newscaster/security_unit{ - pixel_x = 0; pixel_y = 32 }, /obj/item/weapon/folder/red, @@ -2344,17 +2286,13 @@ name = "Escape Pod Three" }, /turf/open/floor/plating, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aeB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/closed/wall, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aeC" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -2362,9 +2300,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aeD" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -2373,9 +2309,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aeE" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -2383,9 +2317,7 @@ dir = 10 }, /turf/open/floor/plating, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aeF" = ( /obj/effect/landmark/xeno_spawn, /obj/structure/lattice/catwalk, @@ -2541,7 +2473,6 @@ desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); - pixel_x = 0; pixel_y = 30 }, /obj/machinery/camera{ @@ -2625,7 +2556,6 @@ desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/plasteel/red/corner{ @@ -2798,8 +2728,7 @@ /area/security/prison) "afd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/item/weapon/twohanded/required/kirbyplants{ icon_state = "plant-16"; @@ -2824,7 +2753,6 @@ department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; - pixel_x = 0; pixel_y = 30 }, /obj/machinery/computer/med_data/laptop, @@ -2870,7 +2798,6 @@ }, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/item/device/radio/intercom{ @@ -2927,9 +2854,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 2; @@ -2943,8 +2868,7 @@ dir = 4 }, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/structure/extinguisher_cabinet{ pixel_x = 27; @@ -2979,7 +2903,6 @@ /area/security/range) "afs" = ( /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/machinery/door/window/eastright{ @@ -2989,15 +2912,11 @@ name = "shower" }, /turf/open/floor/plasteel/freezer, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aft" = ( /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "afu" = ( /obj/structure/table, /obj/item/weapon/reagent_containers/food/drinks/sillycup{ @@ -3018,61 +2937,43 @@ pixel_y = 3 }, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "afv" = ( /obj/structure/easel, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "afw" = ( /obj/structure/closet/masks, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "afx" = ( /obj/structure/closet/athletic_mixed, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "afy" = ( /obj/structure/closet/boxinggloves, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "afz" = ( /obj/structure/closet/emcloset, /obj/structure/sign/pods{ pixel_y = 30 }, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "afA" = ( /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "afB" = ( /obj/machinery/computer/arcade, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "afC" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "afD" = ( /turf/open/floor/engine{ name = "Holodeck Projector Floor" @@ -3145,7 +3046,6 @@ dir = 4 }, /obj/machinery/newscaster/security_unit{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/red/corner{ @@ -3192,7 +3092,6 @@ dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/red/corner{ @@ -3207,7 +3106,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/red/corner{ @@ -3272,9 +3170,7 @@ "afU" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/red/corner{ dir = 1 @@ -3294,9 +3190,7 @@ "afX" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/item/weapon/storage/secure/safe{ name = "armory safe B"; @@ -3304,8 +3198,7 @@ pixel_y = 28 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/black, /area/ai_monitored/security/armory) @@ -3318,7 +3211,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 24 }, /obj/structure/rack, @@ -3516,7 +3408,6 @@ /area/maintenance/fore) "agr" = ( /obj/structure/sink{ - icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2 @@ -3525,7 +3416,6 @@ id = "FitnessShower"; name = "Lock Control"; normaldoorcontrol = 1; - pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4 @@ -3535,18 +3425,14 @@ }, /obj/machinery/light/small, /turf/open/floor/plasteel/freezer, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ags" = ( /obj/machinery/door/airlock{ id_tag = "FitnessShower"; name = "Fitness Room Shower" }, /turf/open/floor/plasteel/freezer, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "agt" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -3556,9 +3442,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "agu" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -3568,9 +3452,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "agv" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -3587,9 +3469,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "agw" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -3597,9 +3477,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "agx" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -3609,9 +3487,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "agy" = ( /obj/machinery/light{ dir = 1 @@ -3619,7 +3495,6 @@ /obj/machinery/power/apc{ dir = 1; name = "Recreation Area APC"; - pixel_x = 0; pixel_y = 24 }, /obj/structure/cable/yellow{ @@ -3629,16 +3504,12 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "agz" = ( /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "agA" = ( /turf/closed/wall/r_wall, /area/maintenance/solars/port/fore) @@ -3676,8 +3547,7 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plating{ icon_state = "platingdmg2" @@ -3777,7 +3647,6 @@ pixel_y = 4 }, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/vault, @@ -3805,9 +3674,7 @@ "agR" = ( /obj/machinery/airalarm{ dir = 4; - locked = 0; - pixel_x = -23; - pixel_y = 0 + pixel_x = -22 }, /obj/structure/rack, /obj/item/weapon/storage/fancy/donut_box, @@ -3920,11 +3787,9 @@ "ahb" = ( /obj/structure/table/wood, /obj/item/device/taperecorder{ - pixel_x = -4; - pixel_y = 0 + pixel_x = -4 }, /obj/item/device/radio/off{ - pixel_x = 0; pixel_y = 3 }, /turf/open/floor/plasteel/black, @@ -3949,60 +3814,44 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahg" = ( /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahh" = ( /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahi" = ( /obj/structure/chair, /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahj" = ( /obj/structure/chair, /obj/effect/landmark/start/assistant, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahk" = ( /obj/structure/chair, /turf/open/floor/plasteel/neutral/corner{ dir = 8 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahl" = ( /turf/open/floor/plasteel/neutral/corner{ dir = 8 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahm" = ( /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 2; on = 1 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahn" = ( /obj/structure/chair{ dir = 4 @@ -4010,17 +3859,13 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aho" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ req_access_txt = "0" }, /turf/closed/wall, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahp" = ( /turf/closed/wall, /area/maintenance/disposal) @@ -4083,8 +3928,7 @@ /area/security/brig) "ahw" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/suit_storage_unit/security, /turf/open/floor/plasteel/vault{ @@ -4153,8 +3997,7 @@ /obj/item/clothing/head/helmet/riot, /obj/machinery/firealarm{ dir = 4; - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /turf/open/floor/plasteel/vault{ dir = 4 @@ -4248,7 +4091,6 @@ id = "armory"; name = "Armory Shutters"; pixel_x = 28; - pixel_y = 0; req_access_txt = "3" }, /turf/open/floor/plasteel/vault{ @@ -4259,8 +4101,7 @@ /obj/machinery/disposal/bin, /obj/machinery/firealarm{ dir = 8; - pixel_x = -24; - pixel_y = 0 + pixel_x = -24 }, /obj/machinery/light_switch{ pixel_x = -24; @@ -4274,7 +4115,6 @@ dir = 1; name = "Head of Security's Monitor"; network = list("Prison","MiniSat","tcomm"); - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/vault, @@ -4402,9 +4242,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahW" = ( /obj/structure/window/reinforced{ dir = 1 @@ -4416,17 +4254,13 @@ name = "Fitness Ring" }, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahX" = ( /obj/structure/window/reinforced{ dir = 1 }, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahY" = ( /obj/structure/window/reinforced{ dir = 1 @@ -4435,17 +4269,13 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ahZ" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aia" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -4453,9 +4283,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aib" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -4465,9 +4293,7 @@ name = "Holodeck Door" }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aic" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -4477,9 +4303,7 @@ name = "Holodeck Door" }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aid" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -4491,9 +4315,7 @@ pixel_y = 27 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aie" = ( /obj/machinery/airalarm{ pixel_y = 24 @@ -4503,9 +4325,7 @@ on = 1 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aif" = ( /obj/machinery/door/poddoor{ id = "trash"; @@ -4682,7 +4502,6 @@ id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = 26; - pixel_y = 0; req_access_txt = "2" }, /turf/open/floor/plasteel/red/side{ @@ -4900,15 +4719,12 @@ icon_state = "1-2" }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aiR" = ( /obj/structure/table, /obj/item/clothing/under/sl_suit{ @@ -4918,24 +4734,18 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aiS" = ( /obj/structure/window/reinforced{ dir = 8 }, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aiT" = ( /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aiU" = ( /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 2; @@ -4944,17 +4754,13 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aiV" = ( /obj/structure/window/reinforced{ dir = 4 }, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aiW" = ( /obj/structure/chair{ dir = 8 @@ -4962,38 +4768,28 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 8 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aiX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aiY" = ( /obj/structure/chair{ dir = 4 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aiZ" = ( /obj/machinery/computer/holodeck, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aja" = ( /obj/structure/chair{ dir = 8 }, /obj/effect/landmark/start/assistant, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ajb" = ( /turf/closed/wall/r_wall, /area/engine/gravity_generator) @@ -5061,8 +4857,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_y = 0 + name = "HIGH VOLTAGE" }, /turf/closed/wall, /area/maintenance/solars/port/fore) @@ -5139,8 +4934,7 @@ }, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; @@ -5187,9 +4981,7 @@ "ajv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/yellow{ @@ -5219,7 +5011,6 @@ /area/security/warden) "ajy" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = 30 }, /obj/structure/closet/secure_closet/security/sec, @@ -5250,7 +5041,6 @@ desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/plasteel/vault, @@ -5290,9 +5080,7 @@ "ajI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/effect/landmark/secequipment, /turf/open/floor/plasteel/vault, @@ -5352,8 +5140,7 @@ dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -5394,9 +5181,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ajS" = ( /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5404,9 +5189,7 @@ }, /obj/item/weapon/storage/firstaid/brute, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ajT" = ( /obj/structure/window/reinforced{ dir = 8 @@ -5415,9 +5198,7 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ajU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -5425,9 +5206,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ajV" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -5435,16 +5214,12 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ajW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/holopad, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ajX" = ( /obj/structure/table, /obj/item/weapon/paper{ @@ -5457,17 +5232,13 @@ pixel_y = -3 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ajY" = ( /obj/structure/chair{ dir = 8 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ajZ" = ( /turf/open/floor/plasteel/black, /area/engine/gravity_generator) @@ -5481,7 +5252,6 @@ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/vault{ @@ -5699,7 +5469,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 26 }, /obj/machinery/light/small{ @@ -5765,8 +5534,7 @@ "akz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/sign/pods{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plasteel/red/side{ dir = 5 @@ -5802,8 +5570,7 @@ /area/security/warden) "akC" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/machinery/camera{ c_tag = "Security - Secure Gear Storage"; @@ -5847,9 +5614,7 @@ "akH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/closet/secure_closet/security/sec, /turf/open/floor/plasteel/showroomfloor, @@ -5919,7 +5684,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 26 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -6111,7 +5875,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/camera{ @@ -6156,9 +5919,7 @@ "alf" = ( /obj/structure/closet/firecloset, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "alg" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -6169,9 +5930,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 8 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "alh" = ( /obj/structure/table, /obj/item/weapon/paper_bin{ @@ -6182,30 +5941,22 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "ali" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "alj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "alk" = ( /obj/structure/chair{ dir = 8 @@ -6213,9 +5964,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "all" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -6223,9 +5972,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "alm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -6235,9 +5982,7 @@ name = "Holodeck Door" }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aln" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -6247,9 +5992,7 @@ name = "Holodeck Door" }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "alo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -6262,24 +6005,18 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -28 }, /obj/machinery/light/small, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "alp" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "alq" = ( /turf/closed/wall, /area/maintenance/starboard) @@ -6389,8 +6126,7 @@ /obj/machinery/mineral/stacking_unit_console{ dir = 2; machinedir = 8; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/structure/cable/yellow{ d1 = 1; @@ -6487,8 +6223,7 @@ /obj/item/weapon/reagent_containers/glass/bottle/charcoal, /obj/item/weapon/reagent_containers/syringe, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/whitered/side{ dir = 10 @@ -6749,9 +6484,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 2; @@ -6773,8 +6506,7 @@ cell_type = 5000; dir = 8; name = "Brig Control APC"; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/structure/cable/yellow, /turf/open/floor/plasteel/showroomfloor, @@ -6893,9 +6625,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -6942,8 +6672,7 @@ cell_type = 2500; dir = 4; name = "Shooting Range APC"; - pixel_x = 24; - pixel_y = 0 + pixel_x = 24 }, /obj/structure/cable/yellow{ d2 = 8; @@ -6970,9 +6699,7 @@ "amv" = ( /obj/structure/closet/emcloset, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "amw" = ( /obj/structure/window/reinforced, /obj/machinery/door/window/eastright{ @@ -6982,45 +6709,33 @@ name = "Fitness Ring" }, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "amx" = ( /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "amy" = ( /obj/structure/window/reinforced, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "amz" = ( /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "amA" = ( /obj/structure/window/reinforced{ dir = 4 }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/black, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "amB" = ( /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "amC" = ( /obj/structure/chair{ dir = 4 @@ -7029,23 +6744,17 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "amD" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "amE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "amF" = ( /obj/machinery/door/airlock/maintenance{ name = "maintenance access"; @@ -7101,9 +6810,7 @@ /obj/machinery/camera{ c_tag = "Gravity Generator Room"; dir = 8; - network = list("SS13"); - pixel_x = 0; - pixel_y = 0 + network = list("SS13") }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -7309,8 +7016,7 @@ dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -7332,9 +7038,7 @@ "anl" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/vault, /area/security/warden) @@ -7358,8 +7062,7 @@ /obj/machinery/light/small, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -7477,8 +7180,7 @@ cell_type = 5000; dir = 4; name = "Security Office APC"; - pixel_x = 24; - pixel_y = 0 + pixel_x = 24 }, /obj/structure/cable/yellow, /turf/open/floor/plasteel/red/side{ @@ -7521,20 +7223,14 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 8 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "anG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "anH" = ( /obj/structure/chair{ dir = 1 @@ -7543,17 +7239,13 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "anI" = ( /obj/structure/chair{ dir = 1 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "anJ" = ( /obj/structure/chair{ dir = 1 @@ -7564,9 +7256,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "anK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -7574,17 +7264,13 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "anL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "anM" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -7613,9 +7299,7 @@ "anR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/black, /area/engine/gravity_generator) @@ -7688,8 +7372,7 @@ "anZ" = ( /obj/effect/decal/cleanable/oil, /obj/machinery/light_switch{ - pixel_x = 25; - pixel_y = 0 + pixel_x = 25 }, /obj/machinery/light/small{ dir = 4 @@ -7890,9 +7573,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -8143,7 +7824,6 @@ /obj/machinery/power/apc{ dir = 2; name = "Disposal APC"; - pixel_x = 0; pixel_y = -24 }, /obj/structure/cable/yellow, @@ -8217,9 +7897,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 8 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aoU" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -8232,9 +7910,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 8 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aoV" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -8247,9 +7923,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 8 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aoW" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -8263,9 +7937,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 8 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aoX" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -8281,9 +7953,7 @@ location = "14.5-Recreation" }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aoY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -8292,9 +7962,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aoZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -8302,9 +7970,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "apa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -8312,9 +7978,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "apb" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -8325,20 +7989,16 @@ "apd" = ( /obj/structure/table, /obj/item/weapon/tank/internals/emergency_oxygen{ - pixel_x = -8; - pixel_y = 0 + pixel_x = -8 }, /obj/item/weapon/tank/internals/emergency_oxygen{ - pixel_x = -8; - pixel_y = 0 + pixel_x = -8 }, /obj/item/clothing/mask/breath{ - pixel_x = 4; - pixel_y = 0 + pixel_x = 4 }, /obj/item/clothing/mask/breath{ - pixel_x = 4; - pixel_y = 0 + pixel_x = 4 }, /obj/effect/decal/cleanable/cobweb, /obj/structure/sign/securearea{ @@ -8346,7 +8006,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plating, @@ -8474,8 +8133,7 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, @@ -8500,7 +8158,6 @@ /obj/machinery/door/window/northright{ dir = 2; name = "delivery door"; - pixel_y = 0; req_access_txt = "31" }, /obj/structure/disposalpipe/segment, @@ -8516,8 +8173,7 @@ /area/maintenance/disposal) "apt" = ( /obj/structure/sign/securearea{ - name = "\improper STAY CLEAR HEAVY MACHINERY"; - pixel_y = 0 + name = "\improper STAY CLEAR HEAVY MACHINERY" }, /turf/closed/wall, /area/maintenance/disposal) @@ -8636,8 +8292,7 @@ "apE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/red/corner{ dir = 1 @@ -8753,8 +8408,7 @@ /area/security/warden) "apQ" = ( /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/structure/closet/wardrobe/red, /obj/machinery/camera{ @@ -8767,8 +8421,7 @@ "apR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -8812,8 +8465,7 @@ /area/security/main) "apZ" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/camera{ c_tag = "Security - Office - Starboard"; @@ -8840,9 +8492,7 @@ "aqc" = ( /obj/structure/closet/lasertag/red, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqd" = ( /obj/structure/rack, /obj/item/clothing/under/color/red, @@ -8850,15 +8500,11 @@ /obj/item/clothing/neck/tie/red, /obj/item/clothing/head/soft/red, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqf" = ( /obj/structure/closet/lasertag/blue, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqg" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -8867,9 +8513,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 8 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqh" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -8881,9 +8525,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment{ @@ -8892,13 +8534,10 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqj" = ( /obj/machinery/disposal/bin, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = -26 }, /obj/structure/disposalpipe/trunk{ @@ -8909,63 +8548,47 @@ dir = 1 }, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqk" = ( /obj/machinery/vending/coffee, /obj/item/device/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -28 }, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aql" = ( /obj/machinery/light, /obj/machinery/vending/cola/random, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqm" = ( /obj/machinery/vending/cigarette, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqp" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, /turf/closed/wall, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "aqq" = ( /obj/item/weapon/cigbutt, /turf/open/floor/plating, @@ -9013,8 +8636,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/cable{ d1 = 1; @@ -9030,8 +8652,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -9045,8 +8666,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4; @@ -9061,8 +8681,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/structure/cable{ d1 = 2; @@ -9127,7 +8746,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plating, @@ -9172,7 +8790,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plating{ @@ -9318,8 +8935,7 @@ dir = 2; name = "Prison Monitor"; network = list("Prison"); - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) @@ -9353,9 +8969,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) @@ -9702,7 +9316,6 @@ "arQ" = ( /obj/machinery/airalarm{ dir = 1; - icon_state = "alarm0"; pixel_y = -22 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -9717,9 +9330,7 @@ "arR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/power/terminal, /obj/effect/turf_decal/stripes/line{ @@ -9735,8 +9346,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/structure/chair/office/light, /obj/effect/turf_decal/stripes/line{ @@ -9822,7 +9432,6 @@ /obj/machinery/button/door{ id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; - pixel_x = 0; pixel_y = 27; req_access_txt = "0" }, @@ -9873,7 +9482,6 @@ /obj/machinery/button/door{ id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; - pixel_x = 0; pixel_y = 27; req_access_txt = "0" }, @@ -10094,7 +9702,6 @@ icon_state = "4-8" }, /obj/machinery/newscaster/security_unit{ - pixel_x = 0; pixel_y = -30 }, /obj/item/weapon/folder/red, @@ -10114,7 +9721,6 @@ }, /obj/item/weapon/pen, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel/showroomfloor, @@ -10157,7 +9763,6 @@ /obj/machinery/button/door{ id = "Prison Gate"; name = "Prison Wing Lockdown"; - pixel_x = 0; pixel_y = 7; req_access_txt = "2" }, @@ -10336,7 +9941,6 @@ "asG" = ( /obj/machinery/light, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = -32 }, /obj/structure/disposalpipe/segment{ @@ -10395,9 +9999,7 @@ "asL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/red/side{ dir = 6 @@ -10415,7 +10017,6 @@ layer = 4; name = "interrogation monitor"; network = list("interrogation"); - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/grimy, @@ -10433,7 +10034,6 @@ frequency = 1424; listening = 1; name = "Interrogation Intercom"; - pixel_x = 0; pixel_y = -31 }, /turf/open/floor/plasteel/grimy, @@ -10484,7 +10084,6 @@ }, /obj/structure/table/wood, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/item/weapon/lighter, @@ -10506,7 +10105,6 @@ name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, @@ -10565,15 +10163,12 @@ name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/bed, /obj/item/weapon/bedsheet, @@ -10590,7 +10185,6 @@ "atc" = ( /obj/structure/dresser, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/carpet, @@ -10676,8 +10270,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_y = 0 + name = "HIGH VOLTAGE" }, /turf/closed/wall, /area/maintenance/solars/starboard/fore) @@ -11139,9 +10732,7 @@ "aue" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/wood, /area/crew_quarters/dorms) @@ -11282,7 +10873,6 @@ dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -11310,12 +10900,10 @@ dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -11365,8 +10953,7 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plating, /area/maintenance/starboard/fore) @@ -11387,7 +10974,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/effect/decal/cleanable/cobweb, @@ -11510,8 +11096,7 @@ "auR" = ( /obj/machinery/computer/shuttle/labor, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = -31; - pixel_y = 0 + pixel_x = -31 }, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/labor) @@ -11538,8 +11123,7 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/plasteel/red/corner{ dir = 8 @@ -11580,7 +11164,6 @@ pixel_y = -26 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel/vault, @@ -11651,7 +11234,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 26 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -11666,7 +11248,6 @@ dir = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/plasteel/red/corner{ @@ -11735,8 +11316,7 @@ }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/neutral/corner{ dir = 1 @@ -11754,9 +11334,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) @@ -11766,8 +11344,7 @@ dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 2 @@ -11836,7 +11413,6 @@ dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -11945,7 +11521,6 @@ dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -12058,7 +11633,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -12188,7 +11762,6 @@ /obj/machinery/button/flasher{ id = "gulagshuttleflasher"; name = "Flash Control"; - pixel_x = 0; pixel_y = -26; req_access_txt = "1" }, @@ -12226,7 +11799,6 @@ /obj/machinery/button/door{ id = "prison release"; name = "Labor Camp Shuttle Lockdown"; - pixel_x = 0; pixel_y = -25; req_access_txt = "2" }, @@ -12328,9 +11900,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -12471,9 +12041,7 @@ "awq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 4; @@ -12570,7 +12138,6 @@ dir = 1 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/structure/dresser, @@ -12592,7 +12159,6 @@ name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, @@ -12622,21 +12188,17 @@ name = "Dorm Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/wood, /area/crew_quarters/dorms) "awH" = ( /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/structure/table/wood, @@ -12992,7 +12554,6 @@ }, /obj/machinery/button/flasher{ id = "holdingflash"; - pixel_x = 0; pixel_y = -26; req_access_txt = "1" }, @@ -13048,8 +12609,7 @@ dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/red/side{ dir = 6 @@ -13079,9 +12639,7 @@ "axz" = ( /obj/structure/table, /obj/item/weapon/folder/red, -/obj/item/device/taperecorder{ - pixel_y = 0 - }, +/obj/item/device/taperecorder, /obj/item/device/radio/intercom{ anyai = 1; broadcasting = 1; @@ -13089,7 +12647,6 @@ frequency = 1424; listening = 0; name = "Interrogation Intercom"; - pixel_x = 0; pixel_y = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -13109,9 +12666,7 @@ "axB" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/black, /area/security/brig) @@ -13121,9 +12676,7 @@ "axD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/carpet, /area/crew_quarters/dorms) @@ -13360,7 +12913,6 @@ }, /obj/machinery/shower{ dir = 8; - icon_state = "shower"; name = "emergency shower" }, /obj/structure/sign/securearea{ @@ -13390,8 +12942,7 @@ /obj/item/weapon/tank/internals/emergency_oxygen/engi, /obj/item/weapon/tank/internals/emergency_oxygen/engi, /obj/item/clothing/mask/breath{ - pixel_x = 4; - pixel_y = 0 + pixel_x = 4 }, /turf/open/floor/plasteel/black, /area/engine/engineering) @@ -13494,7 +13045,6 @@ /obj/machinery/power/apc{ dir = 1; name = "Vault APC"; - pixel_x = 0; pixel_y = 25 }, /obj/structure/cable/yellow{ @@ -13518,16 +13068,13 @@ "ayu" = ( /obj/machinery/mineral/labor_claim_console{ machinedir = 1; - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/labor) "ayv" = ( /turf/closed/wall, -/area/prison/solitary{ - name = "Prisoner Education Chamber" - }) +/area/prison/execution_room) "ayw" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -13735,7 +13282,6 @@ /area/security/detectives_office) "ayK" = ( /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -13749,9 +13295,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/airalarm{ pixel_y = 26 @@ -13760,7 +13304,6 @@ /area/crew_quarters/toilet/restrooms) "ayM" = ( /obj/machinery/shower{ - icon_state = "shower"; dir = 8 }, /obj/effect/landmark/start/assistant, @@ -13940,7 +13483,6 @@ /obj/structure/closet/emcloset, /obj/machinery/status_display{ density = 0; - pixel_x = 0; pixel_y = 32; supply_display = 1 }, @@ -13981,7 +13523,6 @@ icon_state = "0-4" }, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = 38 }, /obj/structure/closet/wardrobe/miner, @@ -14091,9 +13632,7 @@ "azv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/vault{ dir = 1 @@ -14163,9 +13702,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) @@ -14196,18 +13733,14 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) "azH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/flasher{ id = "Cell 3"; @@ -14366,7 +13899,6 @@ desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/carpet, @@ -14384,7 +13916,6 @@ /obj/machinery/button/door{ id = "detective_shutters"; name = "detective's office shutters control"; - pixel_x = 0; pixel_y = 26; req_access_txt = "4" }, @@ -14440,7 +13971,6 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /turf/open/floor/plasteel/freezer, @@ -14455,7 +13985,6 @@ pixel_x = 28 }, /obj/machinery/shower{ - icon_state = "shower"; dir = 8 }, /turf/open/floor/plasteel/freezer, @@ -14471,8 +14000,7 @@ pixel_y = 1 }, /obj/item/clothing/under/suit_jacket/really_black{ - pixel_x = -2; - pixel_y = 0 + pixel_x = -2 }, /obj/machinery/light/small{ dir = 1 @@ -14481,7 +14009,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 28 }, /obj/item/clothing/tie/waistcoat, @@ -14653,7 +14180,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/machinery/camera{ @@ -14703,7 +14229,6 @@ "aAw" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10; - pixel_x = 0; initialize_directions = 10 }, /turf/open/floor/plasteel/black, @@ -14776,9 +14301,7 @@ "aAF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/quartermaster/miningoffice) @@ -14854,8 +14377,7 @@ "aAO" = ( /obj/structure/closet/crate, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 3; @@ -14910,8 +14432,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/circuit/green{ luminosity = 2 @@ -15034,8 +14555,7 @@ }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/red/side{ dir = 10 @@ -15052,8 +14572,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/red/side{ dir = 6 @@ -15062,9 +14581,7 @@ "aBf" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/light/small{ dir = 8 @@ -15153,7 +14670,6 @@ "aBp" = ( /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/computer/secure_data, @@ -15204,7 +14720,6 @@ /area/maintenance/fore) "aBt" = ( /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -15219,7 +14734,6 @@ /area/crew_quarters/toilet/restrooms) "aBv" = ( /obj/machinery/shower{ - icon_state = "shower"; dir = 8 }, /turf/open/floor/plasteel/freezer, @@ -15234,8 +14748,7 @@ dir = 6 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 1 @@ -15269,7 +14782,6 @@ /obj/machinery/power/apc{ dir = 1; name = "Dormitories APC"; - pixel_x = 0; pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -15308,8 +14820,7 @@ "aBB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/sign/pods{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/plasteel/neutral/corner{ dir = 2 @@ -15404,7 +14915,6 @@ "aBJ" = ( /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -15488,8 +14998,7 @@ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0 + name = "EXTERNAL AIRLOCK" }, /turf/closed/wall, /area/quartermaster/miningoffice) @@ -15786,23 +15295,19 @@ /obj/structure/table/wood, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/power/apc{ dir = 8; name = "Detective APC"; - pixel_x = -24; - pixel_y = 0 + pixel_x = -24 }, /obj/structure/cable/yellow{ d2 = 4; icon_state = "0-4" }, /obj/item/device/taperecorder{ - pixel_x = 3; - pixel_y = 0 + pixel_x = 3 }, /obj/item/weapon/storage/box/evidence, /obj/item/device/flashlight/seclite, @@ -15959,16 +15464,13 @@ name = "Dorm Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, /obj/effect/decal/cleanable/cobweb, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/carpet, /area/crew_quarters/dorms) @@ -15993,8 +15495,7 @@ /obj/structure/reagent_dispensers/fueltank, /obj/item/device/radio/intercom{ name = "Station Intercom (General)"; - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /obj/effect/turf_decal/bot{ dir = 1 @@ -16038,9 +15539,7 @@ "aCS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/engine/engineering) @@ -16083,8 +15582,7 @@ "aCW" = ( /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/window/reinforced/highpressure/fulltile, /turf/open/floor/plating, @@ -16173,7 +15671,6 @@ /obj/structure/closet/secure_closet/miner, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/brown{ @@ -16220,9 +15717,7 @@ "aDo" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/light_construct/small{ dir = 4 @@ -16278,7 +15773,6 @@ id = "prison release"; name = "Labor Camp Shuttle Lockdown"; pixel_x = -25; - pixel_y = 0; req_access_txt = "2" }, /obj/effect/turf_decal/delivery, @@ -16302,7 +15796,6 @@ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -16314,7 +15807,6 @@ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/camera{ @@ -16333,7 +15825,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -16466,8 +15957,7 @@ "aDI" = ( /obj/machinery/requests_console{ department = "Detective's office"; - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /obj/structure/table/wood, /obj/machinery/light/small{ @@ -16501,7 +15991,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -26 }, /obj/structure/cable/yellow{ @@ -16517,9 +16006,7 @@ "aDM" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 2; @@ -16566,7 +16053,6 @@ dir = 8 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /obj/machinery/button/door{ @@ -16574,7 +16060,6 @@ name = "Lock Control"; normaldoorcontrol = 1; pixel_x = -25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, @@ -16641,11 +16126,9 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/freezer, @@ -16734,7 +16217,6 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/effect/turf_decal/bot{ @@ -16761,9 +16243,7 @@ "aEk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -16862,8 +16342,7 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -16937,8 +16416,7 @@ "aEz" = ( /obj/structure/closet/secure_closet/miner, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/item/clothing/suit/hooded/wintercoat/miner, /turf/open/floor/plasteel/brown{ @@ -16969,7 +16447,6 @@ /obj/machinery/button/door{ id = "qm_warehouse"; name = "Warehouse Door Control"; - pixel_x = 0; pixel_y = -24; req_access_txt = "50" }, @@ -16997,8 +16474,7 @@ /obj/machinery/power/apc{ dir = 4; name = "Warehouse APC"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/structure/cable/yellow{ d2 = 8; @@ -17040,7 +16516,6 @@ "aEI" = ( /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /turf/open/floor/plasteel, @@ -17051,7 +16526,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/light/small{ @@ -17069,9 +16543,7 @@ "aEL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/hallway/primary/fore) @@ -17244,9 +16716,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/black, /area/security/brig) @@ -17258,7 +16728,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/light/small{ @@ -17280,7 +16749,6 @@ /obj/machinery/door/window{ dir = 1; name = "glass door"; - pixel_y = 0; req_access_txt = "0" }, /turf/open/floor/plasteel/black, @@ -17319,7 +16787,6 @@ /obj/machinery/power/apc{ dir = 2; name = "Restrooms APC"; - pixel_x = 0; pixel_y = -26 }, /obj/structure/cable/yellow{ @@ -17570,8 +17037,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/corner, /turf/open/floor/engine, @@ -17584,8 +17050,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, @@ -17603,7 +17068,6 @@ "aFE" = ( /obj/structure/table/wood, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/item/weapon/folder, @@ -17620,7 +17084,6 @@ /obj/machinery/requests_console{ department = "Mining"; departmentType = 0; - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/brown{ @@ -17807,8 +17270,7 @@ }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/machinery/camera{ c_tag = "Storage Wing - Security Access Door"; @@ -17898,7 +17360,6 @@ icon_state = "4-8" }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/red/corner{ @@ -17956,7 +17417,6 @@ cell_type = 5000; dir = 2; name = "Fore Primary Hallway APC"; - pixel_x = 0; pixel_y = -27 }, /obj/structure/cable/yellow, @@ -17981,7 +17441,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -26 }, /turf/open/floor/plasteel/red/corner{ @@ -18064,7 +17523,6 @@ "aGq" = ( /obj/machinery/computer/security, /obj/machinery/newscaster/security_unit{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/black, @@ -18083,7 +17541,6 @@ dir = 1; name = "Prison Monitor"; network = list("Prison"); - pixel_x = 0; pixel_y = -30 }, /obj/item/weapon/restraints/handcuffs, @@ -18101,7 +17558,6 @@ pixel_x = 24 }, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/black, @@ -18177,7 +17633,6 @@ dir = 8 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /obj/effect/landmark/blobstart, @@ -18186,7 +17641,6 @@ name = "Lock Control"; normaldoorcontrol = 1; pixel_x = -25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, @@ -18224,12 +17678,10 @@ /area/maintenance/fore) "aGF" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/restrooms) @@ -18272,7 +17724,6 @@ }, /obj/machinery/airalarm{ dir = 1; - icon_state = "alarm0"; pixel_y = -22 }, /turf/open/floor/plasteel/neutral/corner{ @@ -18437,8 +17888,7 @@ /area/engine/engineering) "aGV" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -18529,7 +17979,6 @@ /obj/machinery/button/door{ id = "qm_warehouse"; name = "Warehouse Door Control"; - pixel_x = 0; pixel_y = 24; req_access_txt = "50" }, @@ -18695,12 +18144,10 @@ "aHt" = ( /obj/machinery/vending/cigarette, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel, @@ -18708,9 +18155,7 @@ "aHu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -18764,7 +18209,6 @@ desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; - pixel_x = 0; pixel_y = 8 }, /turf/closed/wall, @@ -18802,9 +18246,7 @@ "aHI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/light_switch{ pixel_x = -26 @@ -18814,9 +18256,7 @@ "aHJ" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/structure/mirror{ pixel_x = 28 @@ -18898,7 +18338,6 @@ name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, @@ -18906,9 +18345,7 @@ /obj/item/weapon/bedsheet, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/wood, /area/crew_quarters/dorms) @@ -18999,7 +18436,6 @@ /obj/machinery/button/door{ id = "aux_base_shutters"; name = "Public Shutters Control"; - pixel_x = 0; pixel_y = -24; req_access_txt = "0"; req_one_access_txt = "32;47;48" @@ -19020,7 +18456,6 @@ }, /obj/machinery/status_display{ density = 0; - pixel_x = 0; pixel_y = 32; supply_display = 1 }, @@ -19231,14 +18666,11 @@ "aIu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/power/apc{ dir = 2; name = "Storage Wing APC"; - pixel_x = 0; pixel_y = -27 }, /obj/structure/cable/yellow{ @@ -19297,7 +18729,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -26 }, /obj/machinery/camera{ @@ -19411,7 +18842,6 @@ /obj/item/weapon/folder/red, /obj/item/weapon/restraints/handcuffs, /obj/machinery/newscaster/security_unit{ - pixel_x = 0; pixel_y = -30 }, /obj/structure/cable/yellow{ @@ -19532,7 +18962,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/light{ @@ -19575,12 +19004,10 @@ }, /obj/machinery/requests_console{ department = "Law office"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/newscaster{ - pixel_x = -31; - pixel_y = 0 + pixel_x = -31 }, /turf/open/floor/wood, /area/lawoffice) @@ -19593,7 +19020,6 @@ desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/wood, @@ -19659,7 +19085,6 @@ dir = 8 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /obj/effect/landmark/blobstart, @@ -19668,7 +19093,6 @@ name = "Lock Control"; normaldoorcontrol = 1; pixel_x = -25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, @@ -19695,7 +19119,6 @@ id = "Toilet4"; name = "Lock Control"; normaldoorcontrol = 1; - pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4 @@ -19809,8 +19232,7 @@ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0 + name = "EXTERNAL AIRLOCK" }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -20032,8 +19454,7 @@ broadcasting = 1; dir = 8; listening = 0; - name = "Station Intercom (Court)"; - pixel_x = 0 + name = "Station Intercom (Court)" }, /turf/open/floor/plasteel/neutral/side{ dir = 1 @@ -20198,8 +19619,7 @@ }, /obj/structure/table, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -20312,7 +19732,6 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_x = 24; - pixel_y = 0; req_access_txt = "10" }, /obj/machinery/atmospherics/pipe/manifold/general/visible{ @@ -20653,12 +20072,9 @@ "aLr" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/flasher{ - pixel_x = 0; pixel_y = 24; id = "AI" }, @@ -20720,7 +20136,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -20750,9 +20165,7 @@ /area/security/courtroom) "aLD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/light{ icon_state = "tube1"; @@ -20834,7 +20247,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 30 }, /obj/effect/turf_decal/delivery, @@ -20847,7 +20259,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 26 }, /obj/machinery/light/small{ @@ -20857,10 +20268,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aLQ" = ( -/obj/machinery/disposal/bin{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /obj/machinery/camera{ c_tag = "Locker Room Starboard"; @@ -20899,7 +20307,6 @@ /area/crew_quarters/locker) "aLU" = ( /obj/structure/sink{ - icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2 @@ -20925,9 +20332,7 @@ "aLW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/neutral/side{ dir = 5 @@ -20979,8 +20384,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/cable/yellow{ d1 = 1; @@ -20996,8 +20400,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/machinery/door/airlock/glass_engineering{ name = "Supermatter Engine"; @@ -21095,9 +20498,7 @@ "aMy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/loadingarea{ dir = 8 @@ -21185,7 +20586,6 @@ /obj/item/weapon/aiModule/core/full/corp, /obj/item/weapon/aiModule/core/full/custom, /obj/machinery/flasher{ - pixel_x = 0; pixel_y = 24; id = "AI" }, @@ -21205,7 +20605,6 @@ }, /obj/structure/window/reinforced, /obj/machinery/flasher{ - pixel_x = 0; pixel_y = 24; id = "AI" }, @@ -21307,8 +20706,7 @@ /area/lawoffice) "aMU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/cable/yellow{ d1 = 1; @@ -21321,7 +20719,6 @@ /obj/structure/filingcabinet/employment, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/wood, @@ -21423,8 +20820,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/disposalpipe/junction{ icon_state = "pipe-j1"; @@ -21437,9 +20833,7 @@ "aNe" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment{ dir = 8; @@ -21576,9 +20970,7 @@ dir = 8 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aNy" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -21586,9 +20978,7 @@ layer = 2.9 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aNz" = ( /obj/structure/window/reinforced{ dir = 1; @@ -21596,9 +20986,7 @@ }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aNA" = ( /obj/structure/closet{ name = "Evidence Closet 3" @@ -21623,9 +21011,7 @@ pixel_y = 1 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aNC" = ( /obj/structure/window/reinforced{ dir = 8 @@ -21742,9 +21128,7 @@ "aNO" = ( /obj/structure/closet/secure_closet/quartermaster, /obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -21765,7 +21149,6 @@ /obj/machinery/power/apc{ dir = 1; name = "Quartermaster's Office APC"; - pixel_x = 0; pixel_y = 30 }, /obj/structure/cable/yellow{ @@ -21927,9 +21310,7 @@ "aOf" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/security/courtroom) @@ -21980,21 +21361,17 @@ on = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel, /area/security/courtroom) "aOn" = ( -/obj/item/device/taperecorder{ - pixel_y = 0 - }, +/obj/item/device/taperecorder, /obj/item/weapon/cartridge/lawyer, /obj/structure/table/wood, /obj/machinery/button/door{ id = "lawyer_shutters"; name = "law office shutters control"; - pixel_x = 0; pixel_y = -26; req_access_txt = "38" }, @@ -22026,7 +21403,6 @@ "aOr" = ( /obj/structure/closet/lawcloset, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = -28 }, /turf/open/floor/wood, @@ -22300,8 +21676,7 @@ cell_type = 10000; dir = 8; name = "Engine Room APC"; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/structure/cable/yellow{ d2 = 4; @@ -22357,7 +21732,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /turf/open/floor/engine, @@ -22370,9 +21744,7 @@ dir = 8 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aOU" = ( /obj/structure/window/reinforced{ dir = 8 @@ -22394,9 +21766,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/lattice/catwalk, /turf/open/space, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aOX" = ( /obj/structure/window/reinforced{ dir = 4 @@ -22559,8 +21929,7 @@ /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plasteel, /area/quartermaster/qm) @@ -22630,8 +21999,7 @@ /obj/machinery/requests_console{ department = "Tool Storage"; departmentType = 0; - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/machinery/light{ icon_state = "tube1"; @@ -22812,8 +22180,7 @@ dir = 8 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 1 @@ -22934,8 +22301,7 @@ }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/vault, /area/engine/engineering) @@ -22956,7 +22322,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/camera{ @@ -23033,7 +22398,6 @@ /obj/machinery/status_display{ density = 0; layer = 3; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/computer/shuttle/pod{ @@ -23118,7 +22482,6 @@ /obj/structure/table, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/camera{ @@ -23143,8 +22506,7 @@ network = list("MINE","AuxBase") }, /obj/machinery/light_switch{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/brown{ dir = 8 @@ -23161,14 +22523,10 @@ "aQt" = ( /obj/structure/table, /obj/item/weapon/clipboard, -/obj/item/weapon/stamp/qm{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/weapon/stamp/qm, /obj/machinery/status_display{ density = 0; pixel_x = 32; - pixel_y = 0; supply_display = 1 }, /obj/item/weapon/cartridge/quartermaster{ @@ -23242,12 +22600,10 @@ dir = 8 }, /obj/machinery/ai_status_display{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /obj/machinery/flasher{ id = "AI"; - pixel_x = 0; pixel_y = -24 }, /turf/open/floor/plasteel/black, @@ -23305,12 +22661,10 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/machinery/flasher{ id = "AI"; - pixel_x = 0; pixel_y = -24 }, /turf/open/floor/plasteel/black, @@ -23321,8 +22675,7 @@ dir = 8 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8; @@ -23372,8 +22725,7 @@ dir = 8 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/item/weapon/twohanded/required/kirbyplants{ icon_state = "plant-03"; @@ -23579,7 +22931,6 @@ /obj/item/clothing/mask/balaclava, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/light/small{ @@ -23597,7 +22948,6 @@ dir = 5 }, /obj/structure/sink{ - icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2 @@ -23681,8 +23031,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/cable{ d1 = 2; @@ -23703,8 +23052,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -23717,8 +23065,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /turf/open/floor/plating, /area/engine/engineering) @@ -23726,8 +23073,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/cable/yellow{ d1 = 1; @@ -23743,8 +23089,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -23806,15 +23151,11 @@ /area/engine/engineering) "aRy" = ( /turf/closed/wall/r_wall, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aRz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aRA" = ( /turf/closed/wall, /area/hallway/secondary/entry) @@ -23989,9 +23330,7 @@ "aRS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/brown{ dir = 4 @@ -24000,7 +23339,6 @@ "aRT" = ( /obj/machinery/flasher{ id = "AI"; - pixel_x = 0; pixel_y = -24 }, /obj/machinery/porta_turret/ai{ @@ -24121,8 +23459,7 @@ /obj/item/weapon/cultivator, /obj/item/weapon/hatchet, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/item/weapon/paper/hydroponics, /obj/item/weapon/coin/silver, @@ -24187,7 +23524,6 @@ pixel_y = 5 }, /obj/item/weapon/book/manual/wiki/engineering_construction{ - pixel_x = 0; pixel_y = 3 }, /obj/structure/closet/crate, @@ -24198,8 +23534,7 @@ /obj/machinery/power/terminal, /obj/structure/cable, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -24227,8 +23562,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/machinery/door/airlock/glass_engineering{ name = "Power Monitoring"; @@ -24260,9 +23594,7 @@ "aSu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 4; @@ -24334,8 +23666,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -24346,8 +23677,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -24366,17 +23696,13 @@ dir = 5 }, /turf/closed/wall/r_wall, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aSF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, /turf/closed/wall/r_wall, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aSG" = ( /obj/structure/window/reinforced{ dir = 8 @@ -24430,7 +23756,6 @@ /obj/machinery/power/apc{ dir = 2; name = "Auxillary Base Construction APC"; - pixel_x = 0; pixel_y = -24 }, /turf/open/floor/plasteel/yellow/side, @@ -24449,7 +23774,6 @@ /obj/item/weapon/pipe_dispenser, /obj/machinery/airalarm{ dir = 1; - icon_state = "alarm0"; pixel_y = -22 }, /turf/open/floor/plasteel/yellow/side, @@ -24551,7 +23875,6 @@ /obj/machinery/status_display{ density = 0; pixel_x = 32; - pixel_y = 0; supply_display = 1 }, /obj/effect/turf_decal/stripes/line{ @@ -24723,9 +24046,7 @@ "aTl" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/black, /area/security/courtroom) @@ -24734,14 +24055,12 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -26 }, /turf/open/floor/plasteel/black, /area/security/courtroom) "aTn" = ( /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /obj/machinery/light, @@ -24760,8 +24079,7 @@ /area/security/courtroom) "aTp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/plasteel/black, /area/security/courtroom) @@ -24838,7 +24156,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -26 }, /obj/machinery/camera{ @@ -24877,7 +24194,6 @@ }, /obj/machinery/light, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -24894,8 +24210,7 @@ /area/crew_quarters/locker) "aTB" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 2 @@ -25055,9 +24370,7 @@ req_access_txt = "0" }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aTS" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -25072,24 +24385,18 @@ network = list("MiniSat") }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aTT" = ( /obj/structure/window/reinforced{ dir = 8 }, /obj/structure/lattice, /turf/open/space, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aTU" = ( /obj/structure/lattice, /turf/open/space, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aTV" = ( /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) @@ -25118,9 +24425,7 @@ dir = 4 }, /turf/open/space, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aTZ" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -25135,9 +24440,7 @@ network = list("MiniSat") }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aUa" = ( /obj/structure/window/reinforced{ dir = 4 @@ -25154,9 +24457,7 @@ req_access_txt = "0" }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aUb" = ( /obj/structure/sign/pods, /turf/closed/wall, @@ -25210,9 +24511,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/quartermaster/storage) @@ -25234,8 +24533,7 @@ "aUj" = ( /obj/structure/closet/secure_closet/security/cargo, /obj/machinery/light_switch{ - pixel_x = -25; - pixel_y = 0 + pixel_x = -25 }, /obj/machinery/airalarm{ pixel_y = 23 @@ -25279,8 +24577,7 @@ "aUm" = ( /obj/structure/filingcabinet, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/plasteel/red/side{ dir = 5 @@ -25347,8 +24644,7 @@ "aUu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/light_switch{ - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /turf/open/floor/plasteel/brown{ dir = 6 @@ -25371,15 +24667,12 @@ /area/ai_monitored/turret_protected/ai_upload_foyer) "aUy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/turretid{ control_area = "AI Upload Chamber"; icon_state = "control_stun"; name = "AI Upload turret control"; - pixel_x = 0; pixel_y = 28 }, /obj/item/device/radio/intercom{ @@ -25397,7 +24690,6 @@ /obj/machinery/power/apc{ dir = 2; name = "AI Upload Access APC"; - pixel_x = 0; pixel_y = -27 }, /obj/machinery/light/small{ @@ -25408,8 +24700,7 @@ dir = 4; name = "AI Upload Monitor"; network = list("AIUpload"); - pixel_x = -29; - pixel_y = 0 + pixel_x = -29 }, /turf/open/floor/plasteel/vault{ dir = 6 @@ -25442,8 +24733,7 @@ dir = 8; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); - pixel_x = 29; - pixel_y = 0 + pixel_x = 29 }, /obj/machinery/camera/motion{ c_tag = "AI Upload Foyer"; @@ -25461,14 +24751,12 @@ desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; - pixel_x = 0; 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"; - pixel_y = 0 + icon_state = "direction_eng" }, /obj/structure/sign/directions/engineering{ desc = "A direction sign, pointing out which way the bridge is."; @@ -25592,7 +24880,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/black, @@ -25726,8 +25013,7 @@ announcementConsole = 0; department = "Engineering"; departmentType = 4; - name = "Engineering RC"; - pixel_y = 0 + name = "Engineering RC" }, /turf/closed/wall, /area/engine/engineering) @@ -25809,14 +25095,11 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/ai) @@ -25828,7 +25111,6 @@ icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; - pixel_x = 0; pixel_y = 20 }, /turf/open/floor/plasteel/black, @@ -25846,14 +25128,12 @@ icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; - pixel_x = 0; pixel_y = 20 }, /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/black, @@ -25862,7 +25142,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_pump{ @@ -25903,7 +25182,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/structure/chair, @@ -25939,7 +25217,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -26044,8 +25321,6 @@ "aVG" = ( /obj/machinery/status_display{ density = 0; - pixel_x = 0; - pixel_y = 0; supply_display = 1 }, /turf/closed/wall, @@ -26054,10 +25329,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ req_access_txt = 1 }, -/obj/item/weapon/storage/firstaid/regular{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/weapon/storage/firstaid/regular, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel{ name = "floor" @@ -26251,7 +25523,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/neutral/side{ @@ -26320,8 +25591,7 @@ /area/hallway/primary/central) "aWk" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/item/weapon/twohanded/required/kirbyplants{ icon_state = "plant-16"; @@ -26331,7 +25601,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /turf/open/floor/plasteel/neutral/side{ @@ -26384,7 +25653,6 @@ /area/hallway/primary/central) "aWq" = ( /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/machinery/disposal/bin, @@ -26450,12 +25718,10 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/machinery/computer/apc_control, /turf/open/floor/plasteel/vault, @@ -26466,7 +25732,6 @@ department = "Chief Engineer's Desk"; departmentType = 3; name = "Chief Engineer RC"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/computer/card/minor/ce, @@ -26543,8 +25808,7 @@ /area/space) "aWL" = ( /obj/machinery/ai_status_display{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /obj/machinery/light{ icon_state = "tube1"; @@ -26593,8 +25857,7 @@ dir = 4 }, /obj/machinery/ai_status_display{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) @@ -26602,9 +25865,7 @@ /obj/structure/grille, /obj/structure/window/reinforced/fulltile, /turf/open/floor/plating, -/area/hallway/secondary/entry{ - name = "Arrivals" - }) +/area/hallway/secondary/entry) "aWT" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -26621,7 +25882,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -26684,8 +25944,7 @@ /area/hallway/secondary/entry) "aXd" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/camera{ c_tag = "Arrivals - Fore Arm"; @@ -26789,8 +26048,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -26835,12 +26093,10 @@ "aXp" = ( /obj/item/weapon/book/manual/wiki/security_space_law, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/table/reinforced, /turf/open/floor/plasteel/red/side, @@ -27052,7 +26308,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/effect/turf_decal/stripes/line{ @@ -27079,7 +26334,6 @@ dir = 2 }, /obj/machinery/ai_status_display{ - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -27316,9 +26570,7 @@ }, /obj/machinery/holopad, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "aYe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -27422,7 +26674,6 @@ }, /obj/item/weapon/circuitboard/computer/arcade/battle, /obj/machinery/ai_status_display{ - pixel_x = 0; pixel_y = 31 }, /turf/open/floor/plasteel/black, @@ -27458,7 +26709,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 28 }, /turf/open/floor/plasteel/black, @@ -27504,8 +26754,7 @@ /obj/machinery/power/apc{ dir = 4; name = "CE Office APC"; - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/structure/cable/yellow, /obj/structure/cable/yellow{ @@ -27593,8 +26842,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/circuit, @@ -27617,17 +26865,14 @@ "aYC" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA"; - pixel_y = 0 + name = "KEEP CLEAR: DOCKING AREA" }, /turf/closed/wall, /area/hallway/secondary/entry) "aYE" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -27653,7 +26898,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -27682,7 +26926,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/arrival{ @@ -27898,8 +27141,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/hallway/primary/central) @@ -28068,8 +27310,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -28125,8 +27366,7 @@ /obj/machinery/power/apc{ dir = 8; name = "Tech Storage APC"; - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/structure/cable/yellow{ d2 = 4; @@ -28150,9 +27390,7 @@ "aZz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 4; @@ -28185,8 +27423,7 @@ maxcharge = 15000 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/light/small{ dir = 4 @@ -28265,12 +27502,10 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -28281,8 +27516,7 @@ /obj/effect/landmark/lightsout, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/cable/yellow{ d1 = 1; @@ -28297,12 +27531,9 @@ "aZK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/shower{ - icon_state = "shower"; dir = 8 }, /obj/effect/turf_decal/stripes/line{ @@ -28313,13 +27544,11 @@ "aZL" = ( /obj/structure/filingcabinet, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 0; pixel_y = 30 }, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/red/side{ dir = 9 @@ -28330,7 +27559,6 @@ /obj/item/device/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 29 }, /obj/machinery/recharger{ @@ -28348,8 +27576,7 @@ }, /obj/item/weapon/pen, /obj/machinery/newscaster/security_unit{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/plasteel/red/side{ dir = 5 @@ -28377,8 +27604,7 @@ freerange = 1; listening = 1; name = "Common Channel"; - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/item/device/radio/intercom{ anyai = 1; @@ -28451,8 +27677,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/circuit, @@ -28483,8 +27708,7 @@ freerange = 1; listening = 1; name = "Common Channel"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/item/device/radio/intercom{ anyai = 1; @@ -28744,9 +27968,7 @@ /area/quartermaster/storage) "bat" = ( /turf/closed/wall, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bau" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -28764,9 +27986,7 @@ /turf/open/floor/plasteel{ name = "floor" }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bav" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -28786,9 +28006,7 @@ /turf/open/floor/plasteel{ name = "floor" }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "baw" = ( /obj/item/weapon/stamp{ pixel_x = -3; @@ -28808,25 +28026,20 @@ /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; - pixel_x = 0; pixel_y = 30 }, /obj/item/weapon/pen/red, /turf/open/floor/plasteel/brown{ dir = 9 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bax" = ( /obj/structure/table/reinforced, /obj/machinery/computer/stockexchange, /turf/open/floor/plasteel/brown{ dir = 5 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bay" = ( /obj/structure/sign/directions/engineering{ desc = "A direction sign, pointing out which way the Cargo department is."; @@ -28835,9 +28048,7 @@ pixel_y = -5 }, /turf/closed/wall, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "baz" = ( /obj/machinery/computer/cargo/request, /obj/effect/turf_decal/delivery, @@ -28846,13 +28057,10 @@ "baA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/status_display{ density = 0; - pixel_x = 0; pixel_y = 32; supply_display = 1 }, @@ -28897,8 +28105,7 @@ "baF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/machinery/light{ dir = 8 @@ -28984,7 +28191,6 @@ dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/neutral/corner{ @@ -29135,7 +28341,6 @@ initialize_directions = 11 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/neutral/corner{ @@ -29222,7 +28427,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 28 }, /turf/open/floor/plasteel/yellow/side{ @@ -29310,9 +28514,7 @@ dir = 8; layer = 2.9 }, -/obj/item/weapon/circuitboard/computer/cloning{ - pixel_x = 0 - }, +/obj/item/weapon/circuitboard/computer/cloning, /obj/item/weapon/circuitboard/computer/med_data{ pixel_x = 3; pixel_y = -3 @@ -29442,8 +28644,7 @@ dir = 8; name = "Engine Monitor"; network = list("Engine"); - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -29501,8 +28702,7 @@ dir = 4; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); - pixel_x = -29; - pixel_y = 0 + pixel_x = -29 }, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -29524,8 +28724,7 @@ /obj/machinery/requests_console{ department = "Security"; departmentType = 5; - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/plasteel/red/side{ dir = 4 @@ -29621,9 +28820,7 @@ /obj/structure/grille, /obj/structure/window/reinforced/fulltile, /turf/open/floor/plating, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bbO" = ( /obj/structure/plasticflaps{ opacity = 1 @@ -29648,8 +28845,7 @@ /obj/machinery/power/apc{ dir = 8; name = "Cargo Office APC"; - pixel_x = -24; - pixel_y = 0 + pixel_x = -24 }, /obj/structure/cable/yellow{ d2 = 4; @@ -29658,9 +28854,7 @@ /turf/open/floor/plasteel/brown{ dir = 9 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bbR" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -29676,35 +28870,26 @@ /turf/open/floor/plasteel/brown{ dir = 1 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bbS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/status_display{ density = 0; - pixel_x = 0; pixel_y = 32; supply_display = 1 }, /turf/open/floor/plasteel/brown{ dir = 1 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bbT" = ( /turf/open/floor/plasteel/brown/corner{ dir = 1 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bbU" = ( /obj/effect/landmark/start/cargo_technician, /obj/structure/chair/office/dark{ @@ -29713,9 +28898,7 @@ /turf/open/floor/plasteel/brown{ dir = 4 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bbV" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -29730,9 +28913,7 @@ }, /obj/item/weapon/pen, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bbW" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -29777,8 +28958,7 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/plasteel/neutral/corner{ dir = 1 @@ -29856,8 +29036,7 @@ }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/suit/hazardvest, @@ -29881,9 +29060,7 @@ "bcq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/storage/tools) @@ -29895,7 +29072,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/light/small{ @@ -30019,8 +29195,7 @@ "bcE" = ( /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/structure/disposalpipe/segment{ dir = 4; @@ -30028,9 +29203,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -30080,8 +29253,7 @@ icon_state = "1-2" }, /obj/machinery/newscaster{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -30138,8 +29310,7 @@ dir = 8; name = "Engine Monitor"; network = list("Engine"); - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plasteel/red/side{ dir = 4 @@ -30156,8 +29327,7 @@ dir = 8 }, /obj/machinery/ai_status_display{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) @@ -30188,9 +29358,7 @@ "bcV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ @@ -30238,9 +29406,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/red/side{ dir = 1 @@ -30279,7 +29445,6 @@ "bdb" = ( /obj/machinery/computer/secure_data, /obj/machinery/newscaster/security_unit{ - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/plasteel/red/side{ @@ -30291,7 +29456,6 @@ pixel_x = 27 }, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 0; pixel_y = 30 }, /obj/structure/closet/secure_closet/security, @@ -30382,15 +29546,12 @@ req_access_txt = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/brown{ dir = 8 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bdm" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -30402,9 +29563,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bdn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -30414,9 +29573,7 @@ initialize_directions = 11 }, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bdo" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -30426,9 +29583,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bdp" = ( /obj/machinery/computer/cargo, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -30437,9 +29592,7 @@ /turf/open/floor/plasteel/brown{ dir = 4 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bdq" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -30447,9 +29600,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bdr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -30581,11 +29732,9 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/carpet, @@ -30594,7 +29743,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -30638,8 +29786,7 @@ /area/crew_quarters/heads/captain/private) "bdN" = ( /obj/machinery/light_switch{ - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/structure/dresser, /obj/item/weapon/storage/secure/safe{ @@ -30794,7 +29941,6 @@ /obj/item/device/multitool, /obj/item/clothing/glasses/meson, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = -28 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -30813,12 +29959,9 @@ /area/storage/tech) "bee" = ( /obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 0 - }, +/obj/machinery/cell_charger, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/item/weapon/stock_parts/cell/high{ @@ -30836,7 +29979,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -28 }, /turf/open/floor/plasteel/vault{ @@ -30845,7 +29987,6 @@ /area/crew_quarters/heads/chief) "beg" = ( /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = -29 }, /obj/machinery/suit_storage_unit/ce, @@ -30864,7 +30005,6 @@ dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/vault{ @@ -30881,7 +30021,6 @@ /obj/machinery/button/door{ id = "ceprivacy"; name = "Privacy Shutters Control"; - pixel_x = 0; pixel_y = -26 }, /turf/open/floor/plasteel/vault{ @@ -30907,7 +30046,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/vault{ @@ -30969,9 +30107,7 @@ "ben" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -31013,17 +30149,14 @@ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0; - pixel_y = 0 + name = "EXTERNAL AIRLOCK" }, /turf/closed/wall/r_wall, /area/space) "ber" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /turf/open/space, /area/space) @@ -31035,9 +30168,7 @@ dir = 6 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bet" = ( /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 8; @@ -31056,9 +30187,7 @@ network = list("MiniSat") }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "beu" = ( /obj/machinery/airalarm{ pixel_y = 23 @@ -31101,9 +30230,7 @@ network = list("MiniSat") }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bez" = ( /obj/structure/window/reinforced{ dir = 1; @@ -31111,9 +30238,7 @@ }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "beA" = ( /obj/structure/window/reinforced{ dir = 4 @@ -31123,9 +30248,7 @@ layer = 2.9 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "beB" = ( /obj/structure/table, /obj/item/weapon/storage/firstaid/regular{ @@ -31356,7 +30479,6 @@ "beY" = ( /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -31373,9 +30495,7 @@ /turf/open/floor/plasteel/brown{ dir = 8 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "beZ" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -31386,31 +30506,23 @@ dir = 5 }, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bfa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bfb" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bfc" = ( /obj/structure/filingcabinet/filingcabinet, /turf/open/floor/plasteel/brown{ dir = 4 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bfd" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -31450,8 +30562,7 @@ /obj/machinery/requests_console{ department = "Janitorial"; departmentType = 1; - pixel_x = -29; - pixel_y = 0 + pixel_x = -29 }, /obj/item/weapon/reagent_containers/spray/cleaner, /obj/machinery/camera{ @@ -31709,7 +30820,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /turf/open/floor/plasteel/neutral/corner{ @@ -31729,14 +30839,12 @@ desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; - pixel_x = 0; 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"; - pixel_y = 0 + icon_state = "direction_eng" }, /obj/structure/sign/directions/engineering{ desc = "A direction sign, pointing out which way the bridge is."; @@ -31854,9 +30962,7 @@ on = 1 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bfT" = ( /obj/machinery/door/poddoor{ density = 0; @@ -31940,16 +31046,12 @@ req_one_access_txt = "32;19" }, /turf/open/floor/plating, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bgd" = ( /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bge" = ( /obj/machinery/light/small{ dir = 1 @@ -31961,9 +31063,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bgf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -31971,13 +31071,10 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bgg" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/machinery/door/window{ base_state = "right"; @@ -31990,9 +31087,7 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bgh" = ( /obj/structure/table/reinforced, /obj/item/weapon/paper_bin{ @@ -32001,8 +31096,7 @@ }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/ai) @@ -32027,8 +31121,7 @@ /area/ai_monitored/turret_protected/ai) "bgl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/ai) @@ -32047,8 +31140,7 @@ frequency = 1447; listening = 0; name = "Station Intercom (AI Private)"; - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/ai) @@ -32108,7 +31200,6 @@ "bgw" = ( /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -32262,9 +31353,7 @@ "bgI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/quartermaster/sorting) @@ -32287,7 +31376,6 @@ "bgL" = ( /obj/machinery/status_display{ density = 0; - pixel_x = 0; pixel_y = 32; supply_display = 1 }, @@ -32347,9 +31435,7 @@ /turf/open/floor/plasteel/brown{ dir = 8 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bgP" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -32365,9 +31451,7 @@ d2 = 8 }, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bgQ" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -32378,9 +31462,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bgR" = ( /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/cargo_technician, @@ -32393,9 +31475,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bgS" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -32412,9 +31492,7 @@ /turf/open/floor/plasteel/brown{ dir = 4 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bgT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -32437,9 +31515,7 @@ /turf/open/floor/plasteel{ name = "floor" }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bgU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -32553,9 +31629,7 @@ "bhd" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/item/weapon/reagent_containers/glass/bucket, /obj/item/weapon/mop, @@ -32576,8 +31650,7 @@ cell_type = 2500; dir = 4; name = "Central Maintenance APC"; - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/structure/cable/yellow, /turf/open/floor/plating, @@ -32620,7 +31693,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/item/weapon/folder/yellow{ @@ -32962,7 +32034,6 @@ /obj/machinery/power/apc{ dir = 1; name = "Starboard Hallway APC"; - pixel_x = 0; pixel_y = 26 }, /obj/structure/cable/yellow{ @@ -33004,8 +32075,7 @@ /obj/item/weapon/pen, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table/glass, @@ -33022,8 +32092,7 @@ pixel_y = 3 }, /obj/item/weapon/book/manual/wiki/engineering_guide{ - pixel_x = -4; - pixel_y = 0 + pixel_x = -4 }, /obj/structure/table/glass, /turf/open/floor/plasteel/yellow/side{ @@ -33080,7 +32149,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/structure/disposalpipe/segment{ @@ -33183,13 +32251,10 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bil" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/machinery/door/window{ dir = 8; @@ -33198,9 +32263,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bim" = ( /obj/structure/table/reinforced, /obj/item/weapon/folder/blue{ @@ -33217,7 +32280,6 @@ dir = 8 }, /obj/machinery/ai_status_display{ - pixel_x = 0; pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -33231,9 +32293,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/ai) @@ -33261,7 +32321,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel/black, @@ -33389,9 +32448,7 @@ on = 1 }, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "biI" = ( /obj/structure/chair/office/dark{ dir = 4 @@ -33426,25 +32483,20 @@ /turf/open/floor/plasteel/brown{ dir = 8 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "biL" = ( /obj/structure/chair/office/dark{ dir = 8 }, /turf/open/floor/plasteel, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "biM" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 1 }, /obj/machinery/light_switch{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/light/small{ dir = 4 @@ -33452,9 +32504,7 @@ /turf/open/floor/plasteel/brown{ dir = 4 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "biN" = ( /turf/open/floor/plasteel/brown{ dir = 8 @@ -33478,9 +32528,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -33520,7 +32568,6 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -28 }, /obj/vehicle/janicart, @@ -33649,8 +32696,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/item/weapon/bikehorn/rubberducky, /obj/machinery/light_switch{ - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /obj/item/weapon/card/id/captains_spare, /turf/open/floor/wood, @@ -33682,8 +32728,7 @@ "bjl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/neutral/corner{ @@ -33847,9 +32892,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -33957,8 +33000,7 @@ icon_state = "2-4" }, /obj/machinery/light_switch{ - pixel_x = -22; - pixel_y = 0 + pixel_x = -22 }, /turf/open/floor/plasteel, /area/engine/break_room) @@ -34053,8 +33095,7 @@ /area/engine/break_room) "bjN" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced{ dir = 1; @@ -34064,22 +33105,17 @@ /area/space) "bjO" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bjP" = ( /turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "bjQ" = ( /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) @@ -34101,9 +33137,7 @@ /area/ai_monitored/turret_protected/ai) "bjT" = ( /turf/closed/wall/r_wall, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bjU" = ( /obj/structure/chair{ dir = 1 @@ -34178,7 +33212,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/machinery/light{ @@ -34217,8 +33250,7 @@ /area/hallway/primary/port) "bkf" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -34357,8 +33389,7 @@ cell_type = 2500; dir = 4; name = "Delivery Office APC"; - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/structure/cable/yellow{ d2 = 8; @@ -34373,58 +33404,45 @@ /obj/machinery/computer/stockexchange, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/brown{ dir = 10 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bko" = ( /obj/machinery/photocopier, /turf/open/floor/plasteel/brown{ dir = 2 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bkp" = ( /turf/open/floor/plasteel/brown{ dir = 2 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bkq" = ( /obj/structure/disposalpipe/segment, /obj/machinery/holopad, /turf/open/floor/plasteel/brown{ dir = 2 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bkr" = ( /obj/machinery/autolathe, /obj/machinery/newscaster{ - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/item/device/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -28 }, /turf/open/floor/plasteel/brown{ dir = 6 }, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bks" = ( /obj/structure/closet/crate{ icon_state = "crateopen"; @@ -34465,8 +33483,7 @@ icon_state = "pipe-c" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/cable/yellow{ d1 = 1; @@ -34544,8 +33561,7 @@ }, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/machinery/modular_computer/console/preset/command, /turf/open/floor/plasteel/darkblue/side{ @@ -34556,7 +33572,6 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 29 }, /obj/machinery/computer/teleporter, @@ -34615,7 +33630,6 @@ network = list("MINE","AuxBase") }, /obj/machinery/keycard_auth{ - pixel_x = 0; pixel_y = 24 }, /turf/open/floor/plasteel/darkblue/side{ @@ -34628,8 +33642,7 @@ department = "Bridge"; departmentType = 5; name = "Bridge RC"; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/structure/cable/yellow{ d1 = 1; @@ -34809,7 +33822,6 @@ dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/caution/corner{ @@ -35044,16 +34056,12 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "blA" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on, /obj/structure/window/reinforced, /turf/open/floor/plating/airless, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "blB" = ( /obj/machinery/computer/teleporter, /obj/machinery/atmospherics/components/unary/vent_pump{ @@ -35062,37 +34070,29 @@ }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "blC" = ( /obj/machinery/teleport/station, /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "blD" = ( /obj/machinery/teleport/hub, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "blE" = ( /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 1; @@ -35108,7 +34108,6 @@ icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; - pixel_x = 0; pixel_y = 20 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -35130,7 +34129,6 @@ icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; - pixel_x = 0; pixel_y = 20 }, /turf/open/floor/plasteel/darkblue/corner{ @@ -35159,8 +34157,7 @@ frequency = 1447; listening = 0; name = "Station Intercom (AI Private)"; - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/aisat_interior) @@ -35175,15 +34172,12 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "blK" = ( /obj/machinery/recharge_station, /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/structure/cable/yellow{ @@ -35194,9 +34188,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "blL" = ( /obj/machinery/airalarm{ pixel_y = 26 @@ -35209,9 +34201,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "blM" = ( /obj/machinery/power/port_gen/pacman, /obj/structure/cable{ @@ -35221,9 +34211,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "blN" = ( /obj/structure/closet/emcloset, /turf/open/floor/mineral/titanium/blue, @@ -35436,17 +34424,13 @@ /obj/machinery/door/firedoor, /obj/machinery/mineral/ore_redemption, /turf/open/floor/plasteel/black, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bmi" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bmj" = ( /obj/structure/sign/directions/engineering{ desc = "A direction sign, pointing out which way the Suuply department is."; @@ -35456,9 +34440,7 @@ pixel_y = 8 }, /turf/closed/wall, -/area/quartermaster/office{ - name = "\improper Cargo Office" - }) +/area/quartermaster/office) "bmk" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -35484,14 +34466,12 @@ desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; - pixel_x = 0; 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"; - pixel_y = 0 + icon_state = "direction_eng" }, /obj/structure/sign/directions/engineering{ desc = "A direction sign, pointing out which way the bridge is."; @@ -35509,7 +34489,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/neutral/corner{ @@ -35524,7 +34503,6 @@ /obj/machinery/button/door{ id = "hop"; name = "Privacy Shutters Control"; - pixel_x = 0; pixel_y = 25; req_access_txt = "28" }, @@ -35541,7 +34519,6 @@ desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/wood, @@ -35549,8 +34526,7 @@ "bmq" = ( /obj/machinery/recharger, /obj/item/weapon/storage/secure/safe{ - pixel_x = 34; - pixel_y = 0 + pixel_x = 34 }, /obj/structure/table/wood, /turf/open/floor/wood, @@ -35748,8 +34724,7 @@ dir = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/camera{ c_tag = "Bridge - Starboard"; @@ -35775,8 +34750,7 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/neutral/corner{ @@ -36020,8 +34994,7 @@ /area/engine/break_room) "bng" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/camera{ c_tag = "Engineering - Foyer - Starboard"; @@ -36037,8 +35010,7 @@ pixel_y = 5 }, /obj/item/device/taperecorder{ - pixel_x = -4; - pixel_y = 0 + pixel_x = -4 }, /turf/open/floor/plasteel, /area/security/main) @@ -36054,9 +35026,7 @@ pixel_y = 1 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bnl" = ( /obj/structure/window/reinforced{ dir = 1; @@ -36066,9 +35036,7 @@ dir = 8 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bnm" = ( /obj/structure/window/reinforced{ dir = 1; @@ -36078,17 +35046,13 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bnn" = ( /obj/structure/chair{ dir = 1 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bno" = ( /obj/structure/transit_tube/diagonal, /turf/open/space, @@ -36105,9 +35069,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 1 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bnq" = ( /obj/structure/window/reinforced{ dir = 1; @@ -36122,9 +35084,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 1 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bnr" = ( /obj/structure/window/reinforced{ dir = 1; @@ -36133,9 +35093,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 1 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bns" = ( /obj/machinery/door/window{ dir = 1; @@ -36146,9 +35104,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 1 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bnt" = ( /obj/structure/window/reinforced{ dir = 1; @@ -36160,9 +35116,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 1 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bnu" = ( /obj/structure/window/reinforced{ dir = 1; @@ -36182,17 +35136,13 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 1 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bnv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall/r_wall, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bnw" = ( /obj/structure/showcase{ density = 0; @@ -36206,7 +35156,6 @@ }, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -36215,9 +35164,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 1 }, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "bnx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -36225,9 +35172,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 1 }, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "bny" = ( /obj/machinery/turretid{ control_area = "AI Satellite Antechamber"; @@ -36235,7 +35180,6 @@ icon_state = "control_standby"; name = "Antechamber Turret Control"; pixel_x = 30; - pixel_y = 0; req_access_txt = "65" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -36247,9 +35191,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 1 }, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "bnz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -36301,8 +35243,7 @@ cell_type = 2500; dir = 4; name = "MiniSat Antechamber APC"; - pixel_x = 29; - pixel_y = 0 + pixel_x = 29 }, /obj/structure/cable/yellow{ d2 = 2; @@ -36337,15 +35278,12 @@ dir = 1 }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bnG" = ( /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/cable/yellow{ d1 = 1; @@ -36359,15 +35297,12 @@ dir = 1 }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bnH" = ( /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -36379,9 +35314,7 @@ dir = 1 }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bnI" = ( /obj/structure/showcase{ density = 0; @@ -36405,9 +35338,7 @@ dir = 1 }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bnK" = ( /obj/machinery/firealarm{ dir = 8; @@ -36600,7 +35531,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /turf/open/floor/plasteel/neutral/corner{ @@ -36725,8 +35655,7 @@ /area/crew_quarters/heads/hop) "boo" = ( /obj/machinery/newscaster/security_unit{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/machinery/computer/security/mining, /turf/open/floor/wood, @@ -36736,8 +35665,7 @@ cell_type = 10000; dir = 8; name = "Bridge APC"; - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/structure/cable/yellow, /obj/machinery/camera{ @@ -36850,7 +35778,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/wood, @@ -36944,9 +35871,7 @@ "boN" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -37090,8 +36015,7 @@ /area/maintenance/starboard) "bpd" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/caution/corner{ @@ -37191,8 +36115,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel{ @@ -37204,15 +36127,12 @@ dir = 8 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bpp" = ( /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /turf/open/floor/plasteel/black, /area/engine/break_room) @@ -37221,15 +36141,11 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bpr" = ( /obj/structure/window/reinforced, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bps" = ( /obj/structure/window/reinforced, /obj/machinery/light/small, @@ -37240,9 +36156,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bpt" = ( /obj/machinery/firealarm{ dir = 4; @@ -37278,8 +36192,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/transit_tube/horizontal, /turf/open/space, @@ -37292,8 +36205,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/transit_tube/crossing/horizontal, /turf/open/space, @@ -37306,8 +36218,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/transit_tube/horizontal, /turf/open/space, @@ -37320,8 +36231,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/transit_tube/junction/flipped{ dir = 8 @@ -37336,8 +36246,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /turf/open/space, /area/space) @@ -37352,8 +36261,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /turf/open/space, /area/space) @@ -37367,16 +36275,13 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/transit_tube/station{ dir = 4 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bpD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -37386,9 +36291,7 @@ icon_state = "0-8" }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bpE" = ( /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 2; @@ -37404,9 +36307,7 @@ icon_state = "0-4" }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bpF" = ( /obj/machinery/holopad, /obj/structure/cable/yellow{ @@ -37416,15 +36317,11 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bpG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ icon_state = "4-8"; @@ -37432,9 +36329,7 @@ d2 = 8 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bpH" = ( /obj/structure/cable/yellow{ icon_state = "4-8"; @@ -37445,9 +36340,7 @@ uses = 10 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bpI" = ( /obj/structure/cable/yellow{ icon_state = "4-8"; @@ -37461,9 +36354,7 @@ req_one_access_txt = "32;19" }, /turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "bpJ" = ( /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 2; @@ -37475,9 +36366,7 @@ d2 = 8 }, /turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "bpK" = ( /obj/structure/cable/yellow{ icon_state = "4-8"; @@ -37487,9 +36376,7 @@ /obj/machinery/holopad, /obj/item/device/radio/beacon, /turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "bpL" = ( /obj/structure/cable/yellow{ icon_state = "4-8"; @@ -37498,9 +36385,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 2; @@ -37508,9 +36393,7 @@ icon_state = "2-4" }, /turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "bpM" = ( /obj/structure/cable/yellow{ icon_state = "4-8"; @@ -37544,9 +36427,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -37621,9 +36502,7 @@ icon_state = "2-8" }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bpU" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -37640,15 +36519,11 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bpV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 2; @@ -37656,17 +36531,13 @@ icon_state = "2-8" }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bpW" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bpX" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance_hatch{ @@ -37677,13 +36548,10 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bpY" = ( /obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 + dir = 1 }, /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -37693,22 +36561,17 @@ uses = 10 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bpZ" = ( /obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 + dir = 1 }, /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bqa" = ( /obj/structure/window/reinforced{ dir = 4 @@ -37718,17 +36581,14 @@ on = 1 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bqb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ req_access_txt = 1 }, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -37749,8 +36609,7 @@ /obj/machinery/power/apc{ dir = 4; name = "Arrivals APC"; - pixel_x = 24; - pixel_y = 0 + pixel_x = 24 }, /obj/structure/cable/yellow{ d2 = 2; @@ -37983,9 +36842,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -38040,8 +36897,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, @@ -38074,7 +36930,6 @@ /obj/machinery/door/window{ dir = 2; name = "HoP's Desk"; - pixel_y = 0; req_access_txt = "57" }, /turf/open/floor/wood, @@ -38092,7 +36947,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /turf/open/floor/wood, @@ -38101,7 +36955,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/darkblue/corner{ @@ -38111,11 +36964,9 @@ "bqG" = ( /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = 32 }, /obj/structure/filingcabinet/chestdrawer{ @@ -38153,7 +37004,6 @@ dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); - pixel_x = 0; pixel_y = -29 }, /turf/open/floor/plasteel/darkblue/side{ @@ -38199,7 +37049,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -29 }, /obj/structure/rack, @@ -38221,7 +37070,6 @@ /obj/item/weapon/wrench, /obj/item/device/multitool, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/darkblue/side{ @@ -38265,8 +37113,7 @@ pixel_y = 3 }, /obj/machinery/light_switch{ - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/structure/table/glass, /turf/open/floor/plasteel/black, @@ -38277,8 +37124,7 @@ /obj/machinery/power/apc{ dir = 8; name = "Captain's Quarters APC"; - pixel_x = -24; - pixel_y = 0 + pixel_x = -24 }, /obj/structure/cable/yellow{ d2 = 4; @@ -38289,9 +37135,7 @@ }, /obj/item/weapon/paper{ info = "Congratulations,

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

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

--Nanotrasen Blue Space Research"; - name = "Confidential Correspondence, Pg 1"; - pixel_x = 0; - pixel_y = 0 + name = "Confidential Correspondence, Pg 1" }, /obj/item/weapon/coin/plasma, /obj/item/weapon/melee/chainofcommand, @@ -38328,8 +37172,7 @@ department = "Captain's Desk"; departmentType = 5; name = "Captain RC"; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) @@ -38367,8 +37210,7 @@ cell_type = 2500; dir = 8; name = "Art Storage APC"; - pixel_x = -25; - pixel_y = 0 + pixel_x = -25 }, /obj/structure/cable/yellow{ d2 = 4; @@ -38396,6 +37238,10 @@ "brf" = ( /obj/structure/table, /obj/item/weapon/airlock_painter, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, /turf/open/floor/plasteel, /area/storage/art) "brg" = ( @@ -38429,14 +37275,12 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/item/device/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/wood, @@ -38635,8 +37479,7 @@ "brz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/sign/securearea{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plasteel/black/corner{ dir = 2 @@ -38650,7 +37493,6 @@ /area/engine/break_room) "brB" = ( /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = -30 }, /obj/machinery/vending/cigarette, @@ -38660,7 +37502,6 @@ /area/engine/break_room) "brC" = ( /obj/machinery/microwave{ - pixel_x = 0; pixel_y = 4 }, /obj/machinery/camera{ @@ -38675,7 +37516,6 @@ /area/engine/break_room) "brD" = ( /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /obj/item/weapon/storage/box/donkpockets, @@ -38739,9 +37579,7 @@ "brI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -38752,8 +37590,7 @@ /area/engine/break_room) "brJ" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/machinery/ai_status_display{ pixel_y = 32 @@ -38774,8 +37611,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /turf/open/floor/plasteel/black, /area/engine/break_room) @@ -38783,8 +37619,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 4; @@ -38800,8 +37635,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/window/reinforced{ dir = 8 @@ -38813,14 +37647,12 @@ /area/space) "brN" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/table/glass, /obj/item/weapon/phone{ @@ -38851,9 +37683,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 8 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "brQ" = ( /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -38878,9 +37708,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 8 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "brR" = ( /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, @@ -38892,9 +37720,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 8 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "brS" = ( /obj/machinery/door/window{ dir = 2; @@ -38905,9 +37731,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 8 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "brT" = ( /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -38916,9 +37740,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 8 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "brU" = ( /obj/structure/window/reinforced, /obj/structure/showcase{ @@ -38941,33 +37763,25 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 8 }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "brV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/closed/wall/r_wall, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "brW" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/item/device/radio/intercom{ name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -28 }, /turf/open/floor/plasteel/darkblue/corner{ dir = 8 }, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "brX" = ( /obj/machinery/ai_status_display{ - pixel_x = 0; pixel_y = 32 }, /obj/machinery/porta_turret/ai{ @@ -38981,8 +37795,7 @@ dir = 4; name = "Research Monitor"; network = list("RD"); - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /turf/open/floor/plasteel/vault{ dir = 1 @@ -38997,7 +37810,6 @@ cell_type = 5000; dir = 2; name = "MiniSat Foyer APC"; - pixel_x = 0; pixel_y = -29 }, /obj/structure/cable/yellow, @@ -39009,9 +37821,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 8 }, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "brZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -39027,7 +37837,6 @@ }, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /mob/living/simple_animal/bot/floorbot, @@ -39061,7 +37870,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/porta_turret/ai{ @@ -39071,8 +37879,7 @@ dir = 8; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /turf/open/floor/plasteel/vault{ dir = 4 @@ -39086,9 +37893,7 @@ /turf/open/floor/plasteel/darkblue/corner{ dir = 8 }, -/area/ai_monitored/turret_protected/tcomfoyer{ - name = "\improper MiniSat Foyer" - }) +/area/ai_monitored/turret_protected/aisat/foyer) "bsg" = ( /obj/machinery/computer/station_alert, /obj/machinery/light, @@ -39097,18 +37902,14 @@ dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); - pixel_x = 0; pixel_y = -29 }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bsh" = ( /obj/structure/table, /obj/item/device/radio/intercom{ name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -28 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -39117,9 +37918,7 @@ /obj/machinery/computer/monitor, /obj/structure/cable/yellow, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bsi" = ( /obj/machinery/camera/motion{ c_tag = "MiniSat Maintenance"; @@ -39127,8 +37926,7 @@ network = list("MiniSat") }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/rack, /obj/item/weapon/storage/toolbox/electrical{ @@ -39138,9 +37936,7 @@ /obj/item/weapon/storage/toolbox/mechanical, /obj/item/device/multitool, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "bsj" = ( /obj/structure/window/reinforced{ dir = 1; @@ -39302,7 +38098,6 @@ dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/neutral/corner{ @@ -39351,7 +38146,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -39397,7 +38191,6 @@ initialize_directions = 11 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/neutral/corner{ @@ -39477,7 +38270,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/structure/bed/dogbed{ @@ -39571,14 +38363,12 @@ /obj/machinery/button/door{ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; - pixel_x = 0; pixel_y = -24; req_access_txt = "19" }, /obj/machinery/button/door{ id = "gateshutter"; name = "Gateway Shutter Control"; - pixel_x = 0; pixel_y = -34; req_access_txt = "19" }, @@ -39586,8 +38376,7 @@ /area/bridge) "bsZ" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/machinery/vending/snack/random, /turf/open/floor/plasteel/black, @@ -39622,16 +38411,13 @@ /obj/structure/table/wood, /obj/structure/window/reinforced, /obj/machinery/light_switch{ - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /obj/item/weapon/storage/secure/briefcase{ pixel_x = -2; pixel_y = 4 }, -/obj/item/weapon/storage/lockbox/medal{ - pixel_y = 0 - }, +/obj/item/weapon/storage/lockbox/medal, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) "btd" = ( @@ -39679,8 +38465,7 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) @@ -39927,8 +38712,7 @@ "btD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/sign/securearea{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plasteel, /area/engine/break_room) @@ -39938,7 +38722,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -28 }, /obj/structure/chair/office/dark{ @@ -39949,9 +38732,7 @@ "btF" = ( /obj/machinery/airalarm{ dir = 4; - locked = 0; - pixel_x = -23; - pixel_y = 0 + pixel_x = -22 }, /obj/machinery/light{ icon_state = "tube1"; @@ -39961,8 +38742,7 @@ /area/engine/break_room) "btG" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/table/glass, /obj/item/weapon/folder/blue{ @@ -39974,7 +38754,6 @@ dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); - pixel_x = 0; pixel_y = -28 }, /turf/open/floor/plasteel/darkblue/corner, @@ -40044,9 +38823,7 @@ "btP" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -40075,7 +38852,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -40440,8 +39216,7 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/darkblue/corner, /area/bridge) @@ -40507,8 +39282,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/neutral/corner{ dir = 8 @@ -40519,8 +39293,7 @@ req_access_txt = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/neutral/corner{ @@ -40579,11 +39352,9 @@ /obj/machinery/computer/arcade, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/wood, @@ -40641,9 +39412,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -40697,7 +39466,6 @@ freerange = 1; listening = 0; name = "Custom Channel"; - pixel_x = 0; pixel_y = -27 }, /obj/item/device/radio/intercom{ @@ -40821,9 +39589,7 @@ "bvp" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/camera{ c_tag = "Engineering - Transit Tube Access"; @@ -40845,17 +39611,14 @@ dir = 4 }, /obj/item/weapon/tank/internals/emergency_oxygen{ - pixel_x = -8; - pixel_y = 0 + pixel_x = -8 }, /obj/item/clothing/mask/breath{ - pixel_x = 4; - pixel_y = 0 + pixel_x = 4 }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/black, /area/engine/break_room) @@ -40872,9 +39635,7 @@ /area/engine/break_room) "bvt" = ( /turf/closed/wall, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bvu" = ( /obj/structure/table/wood, /obj/machinery/light/small{ @@ -40907,7 +39668,6 @@ icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; - pixel_x = 0; pixel_y = 20 }, /turf/open/floor/plasteel/grimy, @@ -40923,7 +39683,6 @@ /area/tcommsat/computer) "bvy" = ( /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = 28 }, /obj/structure/showcase{ @@ -40933,7 +39692,6 @@ icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; - pixel_x = 0; pixel_y = 20 }, /turf/open/floor/plasteel/grimy, @@ -40941,7 +39699,6 @@ "bvz" = ( /obj/structure/table/wood, /obj/machinery/ai_status_display{ - pixel_x = 0; pixel_y = 31 }, /obj/item/device/flashlight/lamp, @@ -40955,7 +39712,6 @@ dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; - pixel_x = 0; pixel_y = 30 }, /obj/structure/table/wood, @@ -40986,7 +39742,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -41171,8 +39926,7 @@ /area/hallway/primary/port) "bvV" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/neutral/side{ dir = 4 @@ -41180,15 +39934,11 @@ /area/hallway/primary/port) "bvW" = ( /turf/closed/wall, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bvX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bvY" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -41204,8 +39954,7 @@ "bwa" = ( /obj/structure/table/wood, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /obj/effect/decal/cleanable/cobweb, /obj/item/device/flashlight/lamp/green{ @@ -41250,7 +39999,6 @@ "bwg" = ( /obj/structure/table/wood, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/item/weapon/folder, @@ -41262,8 +40010,7 @@ "bwh" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 8 @@ -41392,7 +40139,6 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 28 }, /turf/open/floor/plasteel/black, @@ -41402,7 +40148,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/light{ @@ -41444,8 +40189,7 @@ }, /obj/item/weapon/pen, /obj/machinery/light_switch{ - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /turf/open/floor/plasteel/black, /area/bridge) @@ -41615,8 +40359,7 @@ /obj/structure/table, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/machinery/chem_dispenser/drinks, /obj/structure/sign/barsign{ @@ -41638,7 +40381,6 @@ /obj/machinery/requests_console{ department = "Bar"; departmentType = 2; - pixel_x = 0; pixel_y = 30; receive_ore_updates = 1 }, @@ -41657,7 +40399,6 @@ dir = 1 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/bar, @@ -41678,7 +40419,6 @@ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; - pixel_x = 0; pixel_y = 28 }, /obj/structure/disposalpipe/trunk{ @@ -41686,8 +40426,7 @@ }, /obj/machinery/disposal/bin, /obj/machinery/light_switch{ - pixel_x = 25; - pixel_y = 0 + pixel_x = 25 }, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) @@ -41696,7 +40435,6 @@ cell_type = 5000; dir = 1; name = "Bar APC"; - pixel_x = 0; pixel_y = 25 }, /obj/structure/cable/yellow{ @@ -41704,8 +40442,7 @@ icon_state = "0-4" }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/wood, /area/crew_quarters/bar) @@ -41735,7 +40472,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/structure/cable/yellow{ @@ -41766,8 +40502,7 @@ "bwW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment, /turf/open/floor/wood, @@ -41792,8 +40527,7 @@ "bwZ" = ( /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -41816,8 +40550,7 @@ /area/hallway/primary/starboard) "bxb" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -41896,15 +40629,13 @@ /area/engine/atmos) "bxm" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/sign/securearea{ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /obj/machinery/light/small{ @@ -41957,8 +40688,7 @@ dir = 8; name = "Telecoms Camera Monitor"; network = list("tcomm"); - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/machinery/computer/telecomms/monitor{ network = "tcommsat" @@ -41979,7 +40709,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -42009,7 +40738,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -42091,7 +40819,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -25 }, /turf/open/floor/plasteel/arrival{ @@ -42124,9 +40851,7 @@ "bxH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -42139,7 +40864,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel/neutral/side, @@ -42158,7 +40882,6 @@ "bxJ" = ( /obj/machinery/airalarm{ dir = 1; - icon_state = "alarm0"; pixel_y = -22 }, /turf/open/floor/plasteel/neutral/side{ @@ -42223,9 +40946,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bxP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -42241,9 +40962,7 @@ pixel_y = 28 }, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bxQ" = ( /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 1; @@ -42256,9 +40975,7 @@ }, /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bxS" = ( /obj/item/weapon/cigbutt, /obj/machinery/power/apc{ @@ -42293,8 +41010,7 @@ "bxU" = ( /obj/structure/table/wood, /obj/machinery/newscaster{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/wood, /area/library) @@ -42388,8 +41104,7 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/darkblue/corner, /area/bridge) @@ -42505,7 +41220,6 @@ "byt" = ( /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/light{ @@ -42554,7 +41268,6 @@ }, /obj/machinery/flasher{ id = "AI"; - pixel_x = 0; pixel_y = 24 }, /turf/open/floor/plasteel/vault{ @@ -42668,7 +41381,6 @@ /obj/machinery/power/apc{ dir = 1; name = "Theatre APC"; - pixel_x = 0; pixel_y = 25 }, /obj/structure/cable/yellow{ @@ -42707,7 +41419,6 @@ /obj/machinery/power/apc{ dir = 2; name = "MiniSat Maint APC"; - pixel_x = 0; pixel_y = -26 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -42719,9 +41430,7 @@ layer = 3.1 }, /turf/open/floor/plasteel/black, -/area/ai_monitored/storage/secure{ - name = "MiniSat Maintenance" - }) +/area/ai_monitored/storage/satellite) "byP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/item/device/radio/beacon, @@ -42758,7 +41467,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/light{ @@ -42802,7 +41510,6 @@ /area/engine/atmos) "byV" = ( /obj/structure/sign/atmosplaque{ - pixel_x = 0; pixel_y = 32 }, /obj/item/weapon/phone{ @@ -42815,8 +41522,7 @@ }, /obj/structure/table, /obj/machinery/light_switch{ - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /turf/open/floor/plasteel/caution{ dir = 5 @@ -42836,8 +41542,7 @@ pixel_y = 23 }, /obj/machinery/light_switch{ - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/caution{ dir = 8 @@ -42848,7 +41553,6 @@ cell_type = 10000; dir = 1; name = "Atmospherics APC"; - pixel_x = 0; pixel_y = 28 }, /obj/structure/cable/yellow{ @@ -42910,9 +41614,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/caution{ dir = 1 @@ -42993,9 +41695,7 @@ dir = 5 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bzl" = ( /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -43006,9 +41706,7 @@ layer = 2.9 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bzm" = ( /obj/structure/window/reinforced{ dir = 1; @@ -43030,15 +41728,12 @@ on = 1 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bzn" = ( /obj/machinery/computer/message_monitor, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) @@ -43086,9 +41781,7 @@ "bzs" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 4; @@ -43103,8 +41796,7 @@ cell_type = 5000; dir = 4; name = "Telecoms Control Room APC"; - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/machinery/computer/telecomms/server{ network = "tcommsat" @@ -43132,18 +41824,14 @@ network = list("MiniSat") }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bzv" = ( /obj/structure/window/reinforced{ dir = 4 }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bzw" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -43190,17 +41878,13 @@ dir = 8 }, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bzB" = ( /obj/structure/mirror{ pixel_x = 28 }, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bzC" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -43275,14 +41959,12 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -43292,7 +41974,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -43303,7 +41984,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/effect/turf_decal/bot, @@ -43366,7 +42046,6 @@ id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -28; - pixel_y = 0; req_access_txt = "19" }, /turf/open/floor/plasteel/black, @@ -43409,7 +42088,6 @@ "bzZ" = ( /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/vending/cigarette{ @@ -43451,8 +42129,7 @@ /area/crew_quarters/heads/captain/private) "bAd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) @@ -43462,7 +42139,6 @@ dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); - pixel_x = 0; pixel_y = -29 }, /mob/living/simple_animal/pet/fox/Renault, @@ -43472,7 +42148,6 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -26 }, /turf/open/floor/carpet, @@ -43485,8 +42160,7 @@ scrub_Toxins = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) @@ -43505,8 +42179,7 @@ /obj/structure/table/reinforced, /obj/item/weapon/lighter, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -31; - pixel_y = 0 + pixel_x = -31 }, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) @@ -43536,8 +42209,7 @@ "bAn" = ( /obj/structure/table/reinforced, /obj/item/weapon/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 0 + pixel_x = -3 }, /obj/item/weapon/reagent_containers/food/condiment/peppermill{ pixel_x = 3 @@ -43610,9 +42282,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/carpet, /area/crew_quarters/theatre) @@ -43668,12 +42338,10 @@ /area/engine/atmos) "bAB" = ( /obj/item/clothing/mask/breath{ - pixel_x = 4; - pixel_y = 0 + pixel_x = 4 }, /obj/item/weapon/tank/internals/emergency_oxygen{ - pixel_x = -8; - pixel_y = 0 + pixel_x = -8 }, /obj/structure/table, /turf/open/floor/plasteel/caution{ @@ -43683,9 +42351,7 @@ "bAC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -43708,8 +42374,7 @@ department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/plasteel/caution{ dir = 4 @@ -43830,7 +42495,6 @@ /area/space) "bAU" = ( /obj/machinery/microwave{ - pixel_x = 0; pixel_y = 4 }, /obj/structure/table/wood, @@ -43848,7 +42512,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 31 }, /obj/item/weapon/folder/blue, @@ -43892,7 +42555,6 @@ department = "Telecoms Admin"; departmentType = 5; name = "Telecoms RC"; - pixel_x = 0; pixel_y = -30 }, /obj/machinery/firealarm{ @@ -43938,8 +42600,7 @@ "bBf" = ( /obj/structure/table/wood, /obj/machinery/light_switch{ - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/item/weapon/folder, @@ -43984,9 +42645,7 @@ pixel_y = 29 }, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bBm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ @@ -43995,23 +42654,17 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bBn" = ( /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bBo" = ( /obj/machinery/door/airlock{ id_tag = "AuxToilet1"; name = "Unit 1" }, /turf/open/floor/plasteel, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bBp" = ( /obj/structure/toilet{ pixel_y = 8 @@ -44024,18 +42677,14 @@ name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bBq" = ( /obj/structure/rack, /obj/item/device/flashlight, @@ -44045,8 +42694,7 @@ "bBr" = ( /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/structure/displaycase/trophy, /turf/open/floor/wood, @@ -44065,7 +42713,6 @@ "bBu" = ( /obj/machinery/vending/coffee, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/wood, @@ -44097,14 +42744,12 @@ desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; - pixel_x = 0; 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"; - pixel_y = 0 + icon_state = "direction_eng" }, /turf/closed/wall, /area/hallway/secondary/command) @@ -44356,14 +43001,12 @@ /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 = 0 + icon_state = "direction_eng" }, /obj/structure/sign/directions/security{ desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; - pixel_x = 0; pixel_y = 8 }, /obj/structure/sign/directions/engineering{ @@ -44720,17 +43363,14 @@ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0 + name = "EXTERNAL AIRLOCK" }, /turf/open/floor/plating, /area/hallway/secondary/entry) "bCH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -44738,8 +43378,7 @@ icon_state = "1-2" }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/arrival{ dir = 4 @@ -44775,9 +43414,7 @@ "bCL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/wood, /area/security/vacantoffice) @@ -44793,18 +43430,19 @@ /area/security/vacantoffice) "bCP" = ( /obj/machinery/light/small, +/obj/machinery/camera{ + c_tag = "Auxilary Restrooms"; + dir = 4; + network = list("SS13") + }, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bCQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bCR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -44817,18 +43455,14 @@ }, /obj/structure/cable/yellow, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bCS" = ( /obj/machinery/firealarm{ dir = 4; pixel_x = 24 }, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bCT" = ( /obj/structure/table/wood, /obj/item/device/flashlight/lamp/green{ @@ -44836,8 +43470,7 @@ pixel_y = 5 }, /obj/machinery/newscaster{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/wood, /area/library) @@ -44989,7 +43622,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /turf/open/floor/plasteel/neutral/corner{ @@ -45003,7 +43635,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ @@ -45080,7 +43711,6 @@ cell_type = 10000; dir = 1; name = "Command Hallway APC"; - pixel_x = 0; pixel_y = 25 }, /obj/structure/cable/yellow{ @@ -45135,7 +43765,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/machinery/camera{ @@ -45154,7 +43783,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ @@ -45259,8 +43887,7 @@ "bDD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) @@ -45468,7 +44095,6 @@ icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; - pixel_x = 0; pixel_y = 20 }, /turf/open/floor/plasteel/black{ @@ -45532,8 +44158,7 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plasteel/arrival{ dir = 4 @@ -45581,18 +44206,14 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bEu" = ( /obj/machinery/door/airlock{ id_tag = "AuxToilet2"; name = "Unit 2" }, /turf/open/floor/plasteel, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bEv" = ( /obj/structure/toilet{ pixel_y = 8 @@ -45605,22 +44226,17 @@ name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bEw" = ( /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /obj/machinery/camera/autoname{ dir = 4; @@ -45780,7 +44396,6 @@ icon_state = "4-8" }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /obj/machinery/camera{ @@ -46073,7 +44688,6 @@ icon_state = "4-8" }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/neutral/corner{ @@ -46732,9 +45346,7 @@ /obj/machinery/camera{ c_tag = "Atmospherics Tank - Mix"; dir = 8; - network = list("SS13"); - pixel_x = 0; - pixel_y = 0 + network = list("SS13") }, /turf/open/floor/engine/vacuum, /area/engine/atmos) @@ -46795,39 +45407,32 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/wood, /area/security/vacantoffice) "bGl" = ( /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/machinery/button/door{ id = "AuxShower"; name = "Lock Control"; normaldoorcontrol = 1; - pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4 }, /obj/item/weapon/soap/nanotrasen, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bGm" = ( /obj/machinery/shower{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bGp" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -46869,17 +45474,14 @@ "bGu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/wood, /area/library) "bGv" = ( /obj/item/device/radio/intercom{ dir = 4; - name = "Station Intercom (General)"; - pixel_x = 0 + name = "Station Intercom (General)" }, /turf/closed/wall, /area/library) @@ -46913,14 +45515,10 @@ name = "escape arm" }, /turf/closed/wall/r_wall, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bGy" = ( /turf/closed/wall/r_wall, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bGz" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -46930,15 +45528,11 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bGA" = ( /obj/structure/sign/securearea, /turf/closed/wall/r_wall, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bGB" = ( /obj/machinery/door/firedoor, /obj/structure/cable/yellow{ @@ -46958,9 +45552,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bGC" = ( /turf/closed/wall/r_wall, /area/teleporter) @@ -47041,8 +45633,7 @@ icon_state = "1-2" }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/camera{ c_tag = "Command Hallway - Central"; @@ -47088,7 +45679,6 @@ "bGR" = ( /obj/machinery/vending/cigarette, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -29 }, /turf/open/floor/plasteel/vault, @@ -47515,7 +46105,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/arrival{ @@ -47552,7 +46141,6 @@ /area/security/vacantoffice) "bHN" = ( /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/machinery/light/small, @@ -47560,32 +46148,24 @@ /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/cleanable/blood/gibs/old, /turf/open/floor/plasteel/floorgrime, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bHO" = ( /obj/machinery/shower{ dir = 8 }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bHP" = ( /obj/machinery/door/airlock{ id_tag = "AuxToilet3"; name = "Unit 3" }, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bHQ" = ( /obj/structure/toilet{ pixel_y = 8 @@ -47598,19 +46178,15 @@ name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 25; - pixel_y = 0; req_access_txt = "0"; specialfunctions = 4 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /obj/effect/landmark/blobstart, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bHR" = ( /obj/structure/bookcase/random/nonfiction, /turf/open/floor/wood, @@ -47661,32 +46237,25 @@ "bHY" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bHZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 9 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bIa" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bIb" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -47698,9 +46267,7 @@ dir = 5 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bIc" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/machinery/light_switch{ @@ -47710,22 +46277,17 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bId" = ( /turf/closed/wall, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bIe" = ( /obj/structure/table, /obj/item/weapon/hand_tele, /obj/item/device/radio/beacon, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/vault{ dir = 4 @@ -47846,8 +46408,7 @@ "bIm" = ( /obj/structure/closet/secure_closet/exile, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/effect/turf_decal/bot{ dir = 1 @@ -47907,8 +46468,7 @@ cell_type = 5000; dir = 4; name = "Gateway APC"; - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/structure/cable/yellow{ d2 = 8; @@ -47940,8 +46500,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/hallway/primary/central) @@ -47957,8 +46516,7 @@ /obj/structure/table, /obj/item/clothing/head/hardhat/cakehat, /obj/machinery/newscaster{ - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /obj/machinery/airalarm{ dir = 1; @@ -47971,7 +46529,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -28 }, /turf/open/floor/plasteel/bar, @@ -48217,8 +46774,7 @@ /area/engine/atmos) "bIY" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -48424,8 +46980,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/wood, /area/security/vacantoffice) @@ -48484,8 +47039,7 @@ "bJC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 4 @@ -48496,9 +47050,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bJE" = ( /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 1; @@ -48508,9 +47060,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bJF" = ( /obj/structure/table, /obj/item/weapon/storage/belt/utility, @@ -48521,9 +47071,7 @@ /obj/item/device/radio/off, /obj/item/device/multitool, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bJG" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -48535,9 +47083,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bJH" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/machinery/firealarm{ @@ -48547,9 +47093,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bJI" = ( /obj/structure/window/reinforced, /obj/structure/table, @@ -48785,7 +47329,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/vault{ @@ -48865,8 +47408,7 @@ name = "Serving Hatch" }, /obj/item/weapon/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 0 + pixel_x = -3 }, /obj/item/weapon/reagent_containers/food/condiment/peppermill{ pixel_x = 3 @@ -48920,7 +47462,6 @@ network = list("SS13") }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = -29 }, /obj/item/clothing/mask/cigarette/pipe, @@ -48981,8 +47522,7 @@ }, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/caution{ dir = 8 @@ -49064,8 +47604,7 @@ }, /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /turf/open/floor/plasteel/escape{ dir = 4 @@ -49148,9 +47687,7 @@ dir = 8 }, /turf/open/space, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bKR" = ( /obj/structure/window/reinforced{ dir = 8 @@ -49174,9 +47711,7 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bKS" = ( /obj/item/weapon/twohanded/required/kirbyplants{ icon_state = "plant-06"; @@ -49384,9 +47919,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bLn" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -49397,9 +47930,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bLo" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -49407,9 +47938,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bLp" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -49421,15 +47950,12 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bLq" = ( /obj/machinery/door/window/northleft{ dir = 8; name = "Magboot Storage"; pixel_x = -1; - pixel_y = 0; req_access_txt = "19" }, /obj/structure/window/reinforced{ @@ -49444,10 +47970,7 @@ pixel_x = -4; pixel_y = 3 }, -/obj/item/clothing/shoes/magboots{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/clothing/shoes/magboots, /obj/item/clothing/shoes/magboots{ pixel_x = 4; pixel_y = -3 @@ -49455,9 +47978,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bLr" = ( /obj/machinery/teleport/hub, /turf/open/floor/plating, @@ -49490,7 +48011,6 @@ dir = 8; name = "Disposals Chute"; pixel_x = -1; - pixel_y = 0; req_access_txt = "0" }, /obj/machinery/disposal/deliveryChute{ @@ -49538,12 +48058,9 @@ /turf/open/floor/wood, /area/bridge/showroom/corporate) "bLy" = ( -/obj/structure/closet/secure_closet/medical1{ - pixel_x = 0 - }, +/obj/structure/closet/secure_closet/medical1, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/effect/turf_decal/bot{ @@ -49623,8 +48140,7 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /obj/machinery/camera{ c_tag = "Central Primary Hallway - Starboard - Kitchen"; @@ -49645,7 +48161,6 @@ id = "kitchenwindow"; name = "Window Shutter Control"; pixel_x = -26; - pixel_y = 0; req_access_txt = "28" }, /turf/open/floor/plasteel/cafeteria{ @@ -49734,15 +48249,13 @@ "bLQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/light_switch{ - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/wood, /area/crew_quarters/theatre) "bLR" = ( /obj/structure/dresser, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/wood, @@ -49786,7 +48299,6 @@ /obj/item/weapon/stock_parts/subspace/analyzer, /obj/item/weapon/stock_parts/subspace/analyzer, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = 26 }, /turf/open/floor/plasteel/black, @@ -49848,7 +48360,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -26 }, /obj/machinery/camera{ @@ -49901,8 +48412,7 @@ on = 1 }, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/escape{ @@ -49929,17 +48439,14 @@ /obj/machinery/camera{ c_tag = "Atmospherics Tank - N2O"; dir = 8; - network = list("SS13"); - pixel_x = 0; - pixel_y = 0 + network = list("SS13") }, /turf/open/floor/engine/n2o, /area/engine/atmos) "bMo" = ( /obj/machinery/airalarm/server{ dir = 4; - pixel_x = -22; - pixel_y = 0 + pixel_x = -22 }, /obj/machinery/light/small{ dir = 8 @@ -49993,8 +48500,7 @@ cell_type = 5000; dir = 4; name = "Telecoms Server Room APC"; - pixel_x = 25; - pixel_y = 0 + pixel_x = 25 }, /obj/machinery/light/small{ dir = 4 @@ -50021,9 +48527,7 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bMu" = ( /obj/machinery/camera{ c_tag = "Arrivals - Aft Arm - Far"; @@ -50048,7 +48552,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -25 }, /obj/effect/turf_decal/stripes/line, @@ -50272,7 +48775,6 @@ dir = 4; name = "RCD Storage"; pixel_x = 1; - pixel_y = 0; req_access_txt = "19" }, /obj/structure/window/reinforced, @@ -50283,17 +48785,13 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bMT" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bMU" = ( /obj/structure/tank_dispenser/oxygen{ layer = 2.9; @@ -50301,9 +48799,7 @@ pixel_y = 2 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bMV" = ( /obj/machinery/camera/motion{ c_tag = "E.V.A. Storage"; @@ -50311,8 +48807,7 @@ }, /obj/machinery/requests_console{ department = "EVA"; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/machinery/light{ dir = 4; @@ -50323,15 +48818,12 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bMW" = ( /obj/machinery/teleport/station, /obj/machinery/firealarm{ dir = 8; - pixel_x = -24; - pixel_y = 0 + pixel_x = -24 }, /turf/open/floor/plating, /area/teleporter) @@ -50389,7 +48881,6 @@ desc = "A guide to the exhibit, detailing the constructive and destructive applications of modern repair drones, as well as the development of the uncorruptable cyborg servants of tomorrow, available today."; icon_state = "kiddieplaque"; name = "\improper 'Perfect Drone' sign"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/droneDispenser, @@ -50442,7 +48933,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /turf/open/floor/wood, @@ -50457,7 +48947,6 @@ /area/bridge/showroom/corporate) "bNg" = ( /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = 24 }, /obj/machinery/light/small{ @@ -50514,7 +49003,6 @@ desc = "A guide to the exhibit, explaining how recent developments in loyalty implant and cloning technologies by NanoTrasen Corporation have led to the development and the effective immortality of the 'perfect man', the loyal Nanotrasen Employee."; icon_state = "kiddieplaque"; name = "\improper 'Perfect Man' sign"; - pixel_x = 0; pixel_y = 32 }, /obj/structure/window/reinforced, @@ -50534,7 +49022,6 @@ icon_state = "implantchair"; layer = 2.7; name = "NanoTrasen automated loyalty implanter exhibit"; - pixel_x = 0; pixel_y = 4 }, /turf/open/floor/carpet, @@ -50545,8 +49032,7 @@ "bNm" = ( /obj/structure/bed/roller, /obj/machinery/vending/wallmed{ - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /obj/machinery/camera{ c_tag = "Gateway - Atrium"; @@ -50578,8 +49064,7 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = 29; - pixel_y = 0 + pixel_x = 29 }, /obj/effect/turf_decal/bot{ dir = 1 @@ -50725,8 +49210,7 @@ /area/crew_quarters/kitchen) "bND" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/structure/closet/secure_closet/freezer/meat, /turf/open/floor/plasteel/showroomfloor, @@ -50768,7 +49252,6 @@ /obj/structure/table/wood, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/wood, @@ -50786,8 +49269,7 @@ /obj/machinery/power/apc{ dir = 8; name = "Telecoms Storage APC"; - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /obj/structure/cable/yellow{ d2 = 4; @@ -50798,9 +49280,7 @@ "bNM" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -50837,8 +49317,7 @@ /area/engine/atmos) "bNQ" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ @@ -50854,8 +49333,7 @@ /area/engine/atmos) "bNS" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/machinery/atmospherics/components/binary/pump{ dir = 0; @@ -50911,9 +49389,7 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bNX" = ( /obj/machinery/telecomms/server/presets/common, /turf/open/floor/circuit{ @@ -51071,7 +49547,6 @@ }, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/item/stack/sheet/glass{ @@ -51089,18 +49564,14 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bOp" = ( /obj/machinery/holopad, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bOq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -51120,15 +49591,12 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bOs" = ( /obj/machinery/door/window/northleft{ dir = 8; name = "Jetpack Storage"; pixel_x = -1; - pixel_y = 0; req_access_txt = "19" }, /obj/structure/window/reinforced, @@ -51140,10 +49608,7 @@ pixel_x = 4; pixel_y = -1 }, -/obj/item/weapon/tank/jetpack/carbondioxide{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/weapon/tank/jetpack/carbondioxide, /obj/item/weapon/tank/jetpack/carbondioxide{ pixel_x = -4; pixel_y = 1 @@ -51151,9 +49616,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bOt" = ( /obj/machinery/computer/teleporter, /turf/open/floor/plating, @@ -51277,8 +49740,7 @@ cell_type = 5000; dir = 4; name = "Nanotrasen Corporate Showroom APC"; - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/structure/cable/yellow{ d1 = 1; @@ -51356,8 +49818,7 @@ /area/gateway) "bON" = ( /obj/structure/sign/securearea{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /obj/structure/cable/yellow{ d1 = 1; @@ -51426,8 +49887,7 @@ /area/crew_quarters/kitchen) "bOW" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/structure/closet/secure_closet/freezer/fridge, /turf/open/floor/plasteel/cafeteria{ @@ -51444,8 +49904,7 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -51498,9 +49957,7 @@ "bPe" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment{ dir = 4; @@ -51685,8 +50142,7 @@ on = 0 }, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced{ dir = 1; @@ -51891,8 +50347,7 @@ "bPV" = ( /obj/structure/destructible/cult/tome, /obj/machinery/newscaster{ - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /obj/item/clothing/under/suit_jacket/red, /obj/effect/decal/cleanable/cobweb, @@ -51909,8 +50364,7 @@ dir = 1 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/structure/closet/crate, /obj/item/clothing/shoes/workboots/mining, @@ -51924,7 +50378,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/neutral/corner{ @@ -51943,9 +50396,7 @@ maxcharge = 15000 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bQa" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; @@ -51957,9 +50408,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bQb" = ( /obj/structure/cable/yellow, /obj/machinery/shieldwallgen, @@ -51968,8 +50417,7 @@ pixel_y = 2 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/vault{ dir = 4 @@ -52028,8 +50476,7 @@ /obj/structure/table/wood, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/carpet, /area/bridge/showroom/corporate) @@ -52267,8 +50714,7 @@ "bQz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 1 @@ -52311,9 +50757,7 @@ "bQD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 4; @@ -52373,8 +50817,7 @@ /obj/machinery/requests_console{ department = "Kitchen"; departmentType = 2; - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/machinery/processor, /turf/open/floor/plasteel/cafeteria{ @@ -52403,13 +50846,10 @@ "bQN" = ( /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "bQQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/item/weapon/wrench, @@ -52458,8 +50898,7 @@ }, /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /turf/open/floor/plasteel/purple, /area/engine/atmos) @@ -52483,9 +50922,7 @@ "bRa" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bRb" = ( /obj/machinery/computer/crew{ icon_keyboard = "syndi_key" @@ -52525,8 +50962,7 @@ "bRg" = ( /obj/machinery/holopad, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/wood, /area/library) @@ -52553,8 +50989,7 @@ /area/library) "bRk" = ( /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/machinery/photocopier, /obj/machinery/light{ @@ -52573,9 +51008,7 @@ /turf/open/floor/engine/cult, /area/library) "bRm" = ( -/obj/item/device/taperecorder{ - pixel_y = 0 - }, +/obj/item/device/taperecorder, /obj/item/device/camera, /obj/item/device/radio/intercom{ pixel_y = -25 @@ -52605,25 +51038,19 @@ dir = 10 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bRq" = ( /obj/effect/turf_decal/stripes/line{ dir = 2 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bRr" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bRs" = ( /obj/structure/cable/yellow, /obj/machinery/shieldwallgen, @@ -52658,8 +51085,7 @@ }, /obj/structure/table/wood, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/item/weapon/folder/blue, /obj/item/clothing/head/collectable/HoP{ @@ -52697,7 +51123,6 @@ icon = 'icons/obj/kitchen.dmi'; icon_state = "mw"; name = "NanoTrasen-brand microwave"; - pixel_x = 0; pixel_y = 2 }, /obj/structure/table/wood, @@ -52826,7 +51251,6 @@ }, /obj/item/weapon/disk/design_disk{ name = "component design disk"; - pixel_x = 0; pixel_y = 6 }, /obj/structure/table/wood, @@ -52915,7 +51339,6 @@ /obj/machinery/button/door{ id = "gateshutter"; name = "Gateway Shutter Control"; - pixel_x = 0; pixel_y = -26; req_access_txt = "19" }, @@ -52935,7 +51358,6 @@ "bRM" = ( /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/camera{ @@ -52973,8 +51395,7 @@ /obj/item/weapon/reagent_containers/food/snacks/mint, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/machinery/power/apc{ dir = 2; @@ -53005,7 +51426,6 @@ /obj/machinery/button/door{ id = "kitchenhydro"; name = "Service Shutter Control"; - pixel_x = 0; pixel_y = -24; req_access_txt = "28" }, @@ -53016,8 +51436,7 @@ "bRS" = ( /obj/structure/table, /obj/item/weapon/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 0 + pixel_x = -3 }, /obj/item/weapon/reagent_containers/food/condiment/peppermill{ pixel_x = 3 @@ -53037,7 +51456,6 @@ /area/crew_quarters/kitchen) "bRT" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /obj/structure/table, @@ -53201,8 +51619,7 @@ /area/maintenance/starboard) "bSg" = ( /obj/structure/fireaxecabinet{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /obj/machinery/camera{ c_tag = "Atmospherics - Port"; @@ -53223,8 +51640,7 @@ /obj/machinery/portable_atmospherics/canister, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/effect/turf_decal/bot{ dir = 1 @@ -53249,8 +51665,7 @@ on = 1 }, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/purple, @@ -53268,9 +51683,7 @@ /obj/machinery/camera{ c_tag = "Atmospherics Tank - Toxins"; dir = 8; - network = list("SS13"); - pixel_x = 0; - pixel_y = 0 + network = list("SS13") }, /turf/open/floor/engine/plasma, /area/engine/atmos) @@ -53317,8 +51730,7 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/plating, /area/maintenance/port) @@ -53416,8 +51828,7 @@ /area/maintenance/port) "bSx" = ( /obj/machinery/newscaster{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/wood, /area/library) @@ -53477,9 +51888,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bSF" = ( /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters{ @@ -53490,14 +51899,11 @@ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_x = 30; - pixel_y = 0; req_access_txt = "19" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "bSG" = ( /obj/machinery/door/poddoor/shutters{ id = "teleshutter"; @@ -53761,8 +52167,7 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/plating, /area/maintenance/starboard) @@ -53792,8 +52197,7 @@ department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ @@ -53803,7 +52207,6 @@ }, /obj/machinery/shower{ dir = 8; - icon_state = "shower"; name = "emergency shower" }, /turf/open/floor/plasteel, @@ -53835,9 +52238,7 @@ /obj/structure/lattice/catwalk, /obj/structure/window/reinforced, /turf/open/space, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bTn" = ( /turf/closed/wall, /area/maintenance/solars/port/aft) @@ -53858,8 +52259,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_y = 0 + name = "HIGH VOLTAGE" }, /turf/closed/wall, /area/maintenance/solars/port/aft) @@ -53905,9 +52305,7 @@ "bTw" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/wood, /area/library) @@ -54004,8 +52402,7 @@ "bTD" = ( /obj/machinery/vending/snack/random, /obj/machinery/newscaster{ - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /turf/open/floor/plasteel/black, /area/hallway/primary/central) @@ -54099,7 +52496,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/effect/turf_decal/stripes/corner{ @@ -54118,7 +52514,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -54180,7 +52575,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -54241,7 +52635,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /turf/open/floor/plasteel/neutral/corner{ @@ -54256,7 +52649,6 @@ /obj/machinery/button/door{ id = "gateshutter"; name = "Gateway Shutter Control"; - pixel_x = 0; pixel_y = 26; req_access_txt = "19" }, @@ -54331,7 +52723,6 @@ /obj/structure/noticeboard{ desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line, @@ -54394,8 +52785,7 @@ /area/hydroponics) "bUn" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/effect/turf_decal/stripes/line, /obj/structure/reagent_dispensers/watertank/high, @@ -54585,7 +52975,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 28 }, /obj/machinery/pipedispenser/disposal/transit_tube, @@ -54629,8 +53018,7 @@ }, /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced{ dir = 1; @@ -54661,9 +53049,7 @@ dir = 8 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bUL" = ( /obj/machinery/telecomms/server/presets/security, /turf/open/floor/circuit{ @@ -54677,9 +53063,7 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "bUN" = ( /obj/machinery/power/apc{ dir = 8; @@ -54807,8 +53191,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/hallway/primary/central) @@ -54974,8 +53357,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/hallway/primary/central) @@ -55085,9 +53467,7 @@ "bVy" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/effect/turf_decal/bot{ dir = 2 @@ -55223,8 +53603,7 @@ }, /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /turf/open/floor/plasteel/vault, /area/engine/atmos) @@ -55263,8 +53642,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/landmark/xeno_spawn, /obj/machinery/atmospherics/components/unary/vent_pump{ @@ -55510,7 +53888,6 @@ dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/neutral/corner{ @@ -55685,7 +54062,6 @@ dir = 2 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /obj/machinery/camera{ @@ -55838,8 +54214,7 @@ /area/hydroponics) "bWV" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/structure/closet/wardrobe/botanist, /turf/open/floor/plasteel/hydrofloor, @@ -56055,9 +54430,7 @@ "bXl" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/general/visible{ color = "#330000"; @@ -56102,8 +54475,7 @@ on = 1 }, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/vault, @@ -56121,9 +54493,7 @@ /obj/machinery/camera{ c_tag = "Atmospherics Tank - CO2"; dir = 8; - network = list("SS13"); - pixel_x = 0; - pixel_y = 0 + network = list("SS13") }, /turf/open/floor/engine/co2, /area/engine/atmos) @@ -56157,8 +54527,7 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plating, /area/maintenance/solars/port/aft) @@ -56259,8 +54628,7 @@ /area/security/checkpoint/medical) "bXM" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/item/weapon/twohanded/required/kirbyplants{ icon_state = "applebush"; @@ -56454,9 +54822,7 @@ "bYi" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/hydroponics) @@ -56481,8 +54847,7 @@ pixel_y = 5 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/light{ icon_state = "tube1"; @@ -56509,7 +54874,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/effect/landmark/start/botanist, @@ -56559,8 +54923,7 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/vault{ dir = 1 @@ -56611,8 +54974,7 @@ }, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/machinery/camera{ c_tag = "Atmospherics - Port-Aft"; @@ -56649,8 +55011,6 @@ node1_concentration = 0.8; node2_concentration = 0.2; on = 1; - pixel_x = 0; - pixel_y = 0; target_pressure = 4500 }, /turf/open/floor/plasteel, @@ -56679,8 +55039,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/machinery/door/airlock/external{ name = "Solar Maintenance"; @@ -56710,7 +55069,6 @@ }, /obj/item/weapon/pen, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /obj/effect/spawner/lootdrop/maintenance, @@ -56811,8 +55169,7 @@ pixel_y = 2 }, /obj/item/weapon/reagent_containers/glass/bottle/charcoal{ - pixel_x = -5; - pixel_y = 0 + pixel_x = -5 }, /obj/item/weapon/reagent_containers/glass/bottle/morphine, /obj/item/weapon/reagent_containers/syringe/epinephrine{ @@ -56830,7 +55187,6 @@ pixel_y = 6 }, /obj/structure/sign/nosmoking_2{ - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/plasteel/whiteblue/side{ @@ -56859,7 +55215,6 @@ frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; - pixel_x = 0; pixel_y = 30 }, /obj/structure/closet/wardrobe/white/medical, @@ -56879,8 +55234,7 @@ /obj/machinery/power/apc{ dir = 8; name = "Medical Security Checkpoint APC"; - pixel_x = -24; - pixel_y = 0 + pixel_x = -24 }, /obj/machinery/airalarm{ pixel_y = 28 @@ -56920,8 +55274,7 @@ /obj/item/weapon/pen, /obj/structure/table/reinforced, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/item/weapon/folder/red, /obj/item/weapon/book/manual/wiki/security_space_law{ @@ -56943,15 +55296,11 @@ /obj/structure/grille, /obj/structure/window/fulltile, /turf/open/floor/plating, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "bZb" = ( /obj/structure/sign/bluecross_2, /turf/closed/wall, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "bZc" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -56965,31 +55314,25 @@ /turf/open/floor/plasteel/white/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "bZd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, /turf/open/floor/plasteel/white/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/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_x = 0; 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"; - pixel_y = 0 + icon_state = "direction_eng" }, /obj/structure/sign/directions/engineering{ desc = "A direction sign, pointing out which way the bridge is."; @@ -56999,9 +55342,7 @@ pixel_y = -8 }, /turf/closed/wall, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "bZf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ req_access_txt = 1 @@ -57108,8 +55449,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange, /obj/item/weapon/reagent_containers/food/snacks/grown/grapes, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/structure/table/glass, /turf/open/floor/plasteel/hydrofloor, @@ -57132,7 +55472,6 @@ /area/hallway/primary/central) "bZt" = ( /obj/structure/sink{ - icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2 @@ -57150,8 +55489,7 @@ "bZv" = ( /obj/machinery/biogenerator, /obj/machinery/light_switch{ - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -57161,8 +55499,7 @@ "bZw" = ( /obj/structure/closet/secure_closet/hydroponics, /obj/machinery/light_switch{ - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) @@ -57276,8 +55613,7 @@ /area/engine/atmos) "bZM" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/green/visible, @@ -57297,8 +55633,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /turf/open/floor/plating/airless, /area/maintenance/solars/port/aft) @@ -57469,9 +55804,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -57507,9 +55840,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "caj" = ( /obj/machinery/light/small{ dir = 1 @@ -57535,17 +55866,13 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cak" = ( /obj/structure/chair, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cal" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -57556,24 +55883,18 @@ req_access_txt = 1 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cam" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "can" = ( /obj/structure/chair, /obj/effect/landmark/start/assistant, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cao" = ( /obj/structure/table, /obj/item/weapon/storage/box/bodybags{ @@ -57583,9 +55904,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cap" = ( /obj/structure/table, /obj/item/stack/medical/gauze, @@ -57594,9 +55913,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "caq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ req_access_txt = 1 @@ -57703,7 +56020,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/light/small{ @@ -57749,7 +56065,6 @@ id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = -7; - pixel_y = 0; req_access_txt = "47" }, /obj/machinery/button/door{ @@ -57793,7 +56108,6 @@ pixel_x = -24 }, /obj/structure/sink{ - icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2 @@ -57945,9 +56259,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 4; @@ -58030,10 +56342,7 @@ /area/maintenance/starboard) "caX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light_switch{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/machinery/light_switch, /turf/closed/wall, /area/maintenance/disposal/incinerator) "caY" = ( @@ -58059,7 +56368,6 @@ /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /obj/structure/sign/deathsposal{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/floorgrime, @@ -58086,12 +56394,10 @@ /area/engine/atmos) "cbc" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 + dir = 1 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ dir = 8 @@ -58138,8 +56444,7 @@ /area/engine/atmos) "cbg" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced{ dir = 8 @@ -58195,8 +56500,7 @@ dir = 8 }, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/machinery/door/window/northleft{ dir = 1; @@ -58269,8 +56573,7 @@ /area/engine/atmos) "cbo" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/green/visible{ @@ -58323,8 +56626,7 @@ /area/maintenance/port/aft) "cbt" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -58546,8 +56848,6 @@ department = "Medbay"; departmentType = 1; name = "Medbay RC"; - pixel_x = 0; - pixel_y = 0; pixel_z = 0 }, /turf/closed/wall, @@ -58559,7 +56859,6 @@ dir = 1; name = "Medbay Monitor"; network = list("Medbay"); - pixel_x = 0; pixel_y = -29 }, /obj/item/device/radio/intercom{ @@ -58600,9 +56899,7 @@ dir = 8 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cbU" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -58614,14 +56911,10 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cbV" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -58632,9 +56925,7 @@ dir = 4 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cbW" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -58646,47 +56937,35 @@ }, /obj/machinery/holopad, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cbX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cbY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cbZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cca" = ( /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ccb" = ( /obj/machinery/door/firedoor, /turf/open/floor/plasteel/white/side{ dir = 8 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ccc" = ( /obj/machinery/door/firedoor, /turf/open/floor/plasteel/white/side{ @@ -58870,7 +57149,6 @@ /obj/machinery/power/apc{ dir = 2; name = "Hydroponics APC"; - pixel_x = 0; pixel_y = -28 }, /obj/structure/cable/yellow, @@ -58913,7 +57191,6 @@ /area/hydroponics) "ccA" = ( /obj/item/weapon/reagent_containers/spray/plantbgone{ - pixel_x = 0; pixel_y = 3 }, /obj/item/weapon/reagent_containers/spray/plantbgone{ @@ -59156,7 +57433,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /obj/machinery/light/small{ @@ -59316,8 +57592,7 @@ /area/maintenance/port/aft) "cdp" = ( /obj/machinery/light_switch{ - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/machinery/light/small{ dir = 8 @@ -59379,15 +57654,12 @@ /area/medical/storage) "cdv" = ( /obj/item/weapon/storage/belt/medical{ - pixel_x = 0; pixel_y = 2 }, /obj/item/weapon/storage/belt/medical{ - pixel_x = 0; pixel_y = 2 }, /obj/item/weapon/storage/belt/medical{ - pixel_x = 0; pixel_y = 2 }, /obj/item/clothing/neck/stethoscope, @@ -59400,15 +57672,11 @@ /area/medical/storage) "cdw" = ( /turf/closed/wall, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cdx" = ( /obj/machinery/computer/crew, /turf/open/floor/plasteel/vault, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cdy" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -59420,35 +57688,27 @@ }, /obj/machinery/shower{ dir = 4; - icon_state = "shower"; name = "emergency shower" }, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cdz" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8; initialize_directions = 11 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cdA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cdB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -59459,35 +57719,27 @@ name = "Inspector Johnson" }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cdC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cdD" = ( /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 1; on = 1 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cdE" = ( /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cdF" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -59496,9 +57748,7 @@ /turf/open/floor/plasteel/white/side{ dir = 8 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cdG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ req_access_txt = 1 @@ -59518,9 +57768,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment{ dir = 2; @@ -59595,8 +57843,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, /area/science/research) @@ -59652,8 +57899,7 @@ /area/security/checkpoint/science/research) "cdS" = ( /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/structure/chair{ dir = 8 @@ -59661,8 +57907,7 @@ /obj/machinery/camera{ c_tag = "Security Post - Research Division"; dir = 8; - network = list("SS13","RD"); - pixel_x = 0 + network = list("SS13","RD") }, /turf/open/floor/plasteel/red/side{ dir = 4 @@ -59755,9 +58000,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) @@ -59778,8 +58021,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -59788,8 +58030,7 @@ /area/maintenance/disposal/incinerator) "cef" = ( /obj/structure/sign/fire{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/machinery/atmospherics/components/binary/pump{ dir = 2; @@ -59832,7 +58073,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -59873,8 +58113,7 @@ /obj/structure/girder, /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/cable/yellow{ d1 = 1; @@ -59953,9 +58192,7 @@ "cex" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -59993,7 +58230,6 @@ "ceA" = ( /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, @@ -60010,15 +58246,12 @@ dir = 1 }, /obj/machinery/newscaster{ - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /turf/open/floor/plasteel/whiteblue/side{ dir = 9 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ceB" = ( /obj/structure/chair/office/light{ dir = 4 @@ -60035,9 +58268,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 5 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ceC" = ( /obj/machinery/telecomms/server/presets/command, /turf/open/floor/circuit{ @@ -60057,17 +58288,13 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ceE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/whiteblue/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ceF" = ( /obj/structure/bed/roller, /obj/item/device/radio/intercom{ @@ -60076,7 +58303,6 @@ frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; - pixel_x = 0; pixel_y = -30 }, /obj/machinery/camera{ @@ -60087,26 +58313,20 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ceG" = ( /obj/machinery/light, /obj/structure/bed/roller, /turf/open/floor/plasteel/whiteblue/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ceH" = ( /obj/structure/bed/roller, /turf/open/floor/plasteel/whiteblue/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ceI" = ( /obj/item/weapon/twohanded/required/kirbyplants{ icon_state = "plant-11" @@ -60114,16 +58334,12 @@ /turf/open/floor/plasteel/whiteyellow/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ceJ" = ( /turf/open/floor/plasteel/whiteyellow/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ceK" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -60137,9 +58353,7 @@ /turf/open/floor/plasteel/whiteyellow/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ceL" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -60214,7 +58428,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -30 }, /obj/item/weapon/twohanded/required/kirbyplants{ @@ -60244,14 +58457,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /turf/open/floor/plasteel/whitepurple/side{ dir = 2 @@ -60273,9 +58483,7 @@ "ceW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/security/checkpoint/science/research) @@ -60540,8 +58748,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/binary/pump{ @@ -60661,7 +58868,6 @@ dir = 1 }, /obj/structure/sign/nosmoking_2{ - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/plasteel/vault, @@ -60725,8 +58931,7 @@ icon_state = "0-4" }, /obj/machinery/light_switch{ - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/machinery/light/small, /obj/structure/table/glass, @@ -60797,40 +59002,31 @@ "cfQ" = ( /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/whiteblue/side{ dir = 10 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cfR" = ( /obj/structure/chair/office/light{ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/whiteblue/side{ dir = 6 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cfS" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, /obj/item/weapon/reagent_containers/food/drinks/britcup, /turf/open/floor/plasteel/whitegreen, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cfT" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -60841,21 +59037,15 @@ req_access_txt = 1 }, /turf/open/floor/plasteel/whiteblue, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cfU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /turf/open/floor/plasteel/whiteblue, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cfV" = ( /obj/structure/sign/directions/medical{ pixel_y = -7 @@ -60922,7 +59112,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/neutral/corner{ @@ -61013,7 +59202,6 @@ /obj/structure/filingcabinet, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/red/side{ @@ -61076,8 +59264,7 @@ /obj/machinery/power/apc{ dir = 8; name = "Incinerator APC"; - pixel_x = -24; - pixel_y = 0 + pixel_x = -24 }, /obj/structure/cable/yellow{ d2 = 4; @@ -61115,8 +59302,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/floorgrime, @@ -61379,7 +59565,6 @@ }, /obj/machinery/shower{ dir = 8; - icon_state = "shower"; name = "emergency shower" }, /turf/open/floor/plasteel/whiteblue/side{ @@ -61430,17 +59615,13 @@ req_access_txt = "5" }, /turf/open/floor/plasteel/whiteblue, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cgY" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cgZ" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -61457,9 +59638,7 @@ req_access_txt = "5" }, /turf/open/floor/plasteel/whiteblue, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cha" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, @@ -61469,23 +59648,18 @@ req_access_txt = "5" }, /turf/open/floor/plasteel/whiteblue, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "chb" = ( /obj/machinery/chem_heater, /obj/machinery/light_switch{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/whiteyellow/side{ dir = 9 }, /area/medical/chemistry) "chc" = ( -/obj/machinery/disposal/bin{ - pixel_x = 0 - }, +/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /turf/open/floor/plasteel/whiteyellow/side{ dir = 5 @@ -61579,7 +59753,6 @@ /obj/structure/noticeboard{ desc = "A board for pinning important notices upon."; name = "notice board"; - pixel_x = 0; pixel_y = 31 }, /turf/open/floor/plasteel/whitepurple/side{ @@ -61595,7 +59768,6 @@ id = "research_shutters"; name = "research shutters control"; pixel_x = 28; - pixel_y = 0; req_access_txt = "7" }, /turf/open/floor/plasteel/whitepurple/side{ @@ -61649,8 +59821,7 @@ pixel_y = 32 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /obj/item/weapon/storage/box/donkpockets, /obj/structure/table/glass, @@ -61672,7 +59843,6 @@ /area/science/research) "chu" = ( /obj/machinery/ai_status_display{ - pixel_x = 0; pixel_y = 32 }, /obj/structure/chair/stool, @@ -61715,9 +59885,7 @@ layer = 2.9 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "chA" = ( /obj/item/device/radio/intercom{ pixel_y = 25 @@ -61784,7 +59952,6 @@ /obj/item/weapon/extinguisher, /obj/machinery/light/small, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -31 }, /turf/open/floor/plasteel/floorgrime, @@ -61799,7 +59966,6 @@ /area/maintenance/disposal/incinerator) "chJ" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -31 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -61820,8 +59986,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) @@ -61840,9 +60005,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "chN" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 1; @@ -62002,9 +60165,7 @@ "cif" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, /area/medical/sleeper) @@ -62063,9 +60224,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 9 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cil" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -62078,9 +60237,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cim" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -62093,9 +60250,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cin" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -62104,23 +60259,18 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cio" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/structure/sign/nosmoking_2{ - pixel_x = 0; pixel_y = 28 }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cip" = ( /obj/machinery/power/apc{ dir = 1; @@ -62142,9 +60292,7 @@ /turf/open/floor/plasteel/whiteblue/corner{ dir = 4 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ciq" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 2 @@ -62152,9 +60300,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cir" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -62163,16 +60309,13 @@ /turf/open/floor/plasteel/whiteblue/corner{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cis" = ( /obj/machinery/button/door{ desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Exit Button"; normaldoorcontrol = 1; - pixel_x = 0; pixel_y = 26 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -62181,9 +60324,7 @@ /turf/open/floor/plasteel/whiteblue/corner{ dir = 4 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cit" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -62201,9 +60342,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ciu" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -62217,9 +60356,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "civ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass_medical{ @@ -62294,8 +60431,7 @@ /obj/structure/noticeboard{ desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plasteel/whiteyellow{ dir = 4 @@ -62305,8 +60441,7 @@ /obj/machinery/r_n_d/destructive_analyzer, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -62354,8 +60489,7 @@ dir = 8 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 24; - pixel_y = 0 + pixel_x = 24 }, /turf/open/floor/plasteel/whitepurple/side{ dir = 4 @@ -62365,7 +60499,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/effect/turf_decal/stripes/line{ @@ -62387,8 +60520,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -62400,7 +60532,6 @@ cell_type = 10000; dir = 1; name = "Research Division APC"; - pixel_x = 0; pixel_y = 25 }, /obj/structure/cable/yellow{ @@ -62446,8 +60577,7 @@ "ciN" = ( /obj/structure/chair/stool, /obj/machinery/newscaster{ - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /turf/open/floor/plasteel/cafeteria{ dir = 5 @@ -62480,7 +60610,6 @@ "ciR" = ( /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/vending/cola/random, @@ -62514,8 +60643,7 @@ "ciV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/engine, /area/science/explab) @@ -62565,8 +60693,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/engine, @@ -62586,9 +60713,7 @@ /obj/machinery/camera{ c_tag = "Atmospherics Tank - N2"; dir = 8; - network = list("SS13"); - pixel_x = 0; - pixel_y = 0 + network = list("SS13") }, /turf/open/floor/engine/n2, /area/engine/atmos) @@ -62603,9 +60728,7 @@ /obj/machinery/camera{ c_tag = "Atmospherics Tank - O2"; dir = 8; - network = list("SS13"); - pixel_x = 0; - pixel_y = 0 + network = list("SS13") }, /turf/open/floor/engine/o2, /area/engine/atmos) @@ -62621,9 +60744,7 @@ /obj/machinery/camera{ c_tag = "Atmospherics Tank - Air"; dir = 8; - network = list("SS13"); - pixel_x = 0; - pixel_y = 0 + network = list("SS13") }, /turf/open/floor/engine/air, /area/engine/atmos) @@ -62705,7 +60826,6 @@ dir = 1 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass, @@ -62785,8 +60905,7 @@ frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -62847,9 +60966,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 8 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cjL" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -62868,9 +60985,7 @@ req_access_txt = 1 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cjM" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -62887,9 +61002,7 @@ icon_state = "1-8" }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cjN" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -62901,9 +61014,7 @@ initialize_directions = 11 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cjO" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -62914,9 +61025,7 @@ dir = 4 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cjP" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -62932,9 +61041,7 @@ dir = 4 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cjQ" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -62949,24 +61056,19 @@ on = 1 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cjR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, /obj/machinery/shower{ dir = 8; - icon_state = "shower"; name = "emergency shower" }, /turf/open/floor/plasteel/whiteyellow/corner{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cjS" = ( /obj/item/stack/sheet/mineral/plasma{ layer = 2.9 @@ -62994,8 +61096,7 @@ "cjU" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -63113,7 +61214,6 @@ }, /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, @@ -63137,9 +61237,7 @@ "ckg" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -63157,7 +61255,6 @@ /obj/structure/closet/firecloset, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/effect/turf_decal/delivery, @@ -63199,7 +61296,6 @@ }, /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, @@ -63223,8 +61319,7 @@ /area/science/research) "ckp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/plasteel/cafeteria{ dir = 5 @@ -63250,7 +61345,6 @@ /obj/machinery/button/door{ id = "telelab"; name = "Test Chamber Blast Doors"; - pixel_x = 0; pixel_y = -25 }, /turf/open/floor/engine, @@ -63365,8 +61459,7 @@ dir = 8 }, /obj/structure/sign/fire{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /obj/machinery/atmospherics/components/binary/pump{ dir = 1; @@ -63385,8 +61478,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 1; @@ -63396,8 +61488,7 @@ /area/maintenance/disposal/incinerator) "ckF" = ( /obj/structure/sign/fire{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/machinery/light/small{ dir = 4 @@ -63485,9 +61576,7 @@ on = 1 }, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "ckU" = ( /obj/structure/chair, /obj/structure/sign/nosmoking_2{ @@ -63537,9 +61626,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/black, /area/medical/surgery) @@ -63617,16 +61704,13 @@ "clj" = ( /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "clk" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -63638,23 +61722,17 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cll" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4; initialize_directions = 11 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "clm" = ( /obj/item/device/radio/intercom{ broadcasting = 1; @@ -63662,20 +61740,15 @@ frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cln" = ( /turf/open/floor/plasteel/whiteblue/corner{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "clo" = ( /obj/structure/bed/roller, /obj/machinery/iv_drip{ @@ -63684,17 +61757,13 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "clp" = ( /obj/machinery/light, /turf/open/floor/plasteel/whiteblue/corner{ dir = 8 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "clq" = ( /obj/machinery/airalarm{ dir = 1; @@ -63703,16 +61772,12 @@ /turf/open/floor/plasteel/whiteyellow/corner{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "clr" = ( /turf/open/floor/plasteel/whiteyellow/side{ dir = 6 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cls" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -63734,8 +61799,7 @@ pixel_x = 8 }, /obj/item/weapon/reagent_containers/glass/bottle/charcoal{ - pixel_x = -5; - pixel_y = 0 + pixel_x = -5 }, /obj/item/weapon/reagent_containers/syringe/epinephrine, /turf/open/floor/plasteel/white, @@ -63781,8 +61845,7 @@ }, /obj/item/device/radio/headset/headset_med, /obj/structure/extinguisher_cabinet{ - pixel_x = 24; - pixel_y = 0 + pixel_x = 24 }, /obj/machinery/firealarm{ dir = 1; @@ -63797,8 +61860,7 @@ req_access_txt = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 8 @@ -63867,8 +61929,7 @@ icon_state = "tube1" }, /obj/structure/sign/nosmoking_2{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/plasteel, /area/science/lab) @@ -63903,13 +61964,11 @@ /area/science/research) "clH" = ( /obj/machinery/shower{ - icon_state = "shower"; dir = 8 }, /obj/item/device/radio/intercom{ dir = 8; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -28 }, /obj/effect/turf_decal/stripes/line{ @@ -63997,8 +62056,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/structure/noticeboard{ pixel_y = -32 @@ -64132,8 +62190,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -64170,8 +62227,7 @@ dir = 4 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/wood, /area/maintenance/port/aft) @@ -64220,13 +62276,10 @@ "cmr" = ( /obj/machinery/door/firedoor, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cms" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -64238,16 +62291,12 @@ }, /obj/machinery/door/firedoor, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cmt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cmu" = ( /turf/closed/wall, /area/crew_quarters/heads/cmo) @@ -64304,16 +62353,13 @@ req_access_txt = "5" }, /turf/open/floor/plating, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cmz" = ( /obj/machinery/reagentgrinder, /obj/machinery/requests_console{ department = "Chemistry"; departmentType = 2; pixel_x = -30; - pixel_y = 0; receive_ore_updates = 1 }, /obj/structure/table/glass, @@ -64404,14 +62450,8 @@ pixel_x = 4; pixel_y = -3 }, -/obj/item/weapon/disk/tech_disk{ - pixel_x = 0; - pixel_y = 0 - }, -/obj/item/weapon/disk/tech_disk{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/weapon/disk/tech_disk, +/obj/item/weapon/disk/tech_disk, /obj/item/weapon/disk/design_disk, /obj/item/weapon/disk/design_disk, /turf/open/floor/plasteel/white, @@ -64444,9 +62484,7 @@ "cmK" = ( /obj/structure/chair, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "cmL" = ( /obj/machinery/door/window/westleft{ dir = 2; @@ -64498,14 +62536,12 @@ /area/science/explab) "cmQ" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/machinery/requests_console{ department = "Science"; departmentType = 2; name = "Science Requests Console"; - pixel_x = 0; pixel_y = 30; receive_ore_updates = 1 }, @@ -64534,9 +62570,7 @@ /obj/item/stack/packageWrap, /obj/item/stack/packageWrap, /obj/item/stack/packageWrap, -/obj/item/device/taperecorder{ - pixel_y = 0 - }, +/obj/item/device/taperecorder, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -64563,7 +62597,6 @@ /obj/machinery/button/door{ id = "telelab"; name = "Test Chamber Blast Doors"; - pixel_x = 0; pixel_y = 25 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -64603,9 +62636,7 @@ /obj/structure/window/reinforced, /obj/machinery/holopad, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "cmY" = ( /obj/structure/closet/crate{ icon_state = "crateopen"; @@ -64666,8 +62697,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) @@ -64677,7 +62707,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /obj/machinery/atmospherics/components/unary/outlet_injector/on{ @@ -64724,8 +62753,7 @@ /obj/structure/table, /obj/item/weapon/hemostat, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel, /area/medical/surgery) @@ -64768,8 +62796,7 @@ "cnr" = ( /obj/machinery/computer/med_data, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/white/side{ dir = 2 @@ -64791,8 +62818,7 @@ frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/structure/bedsheetbin{ pixel_x = 2 @@ -64894,24 +62920,18 @@ /turf/open/floor/plasteel/whiteblue/corner{ dir = 8 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cnB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cnC" = ( /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/structure/table/glass, @@ -64976,8 +62996,7 @@ pixel_y = 26 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/item/weapon/screwdriver{ pixel_y = 6 @@ -65136,8 +63155,7 @@ "cnV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -65229,7 +63247,6 @@ /area/science/research) "cod" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = 29 }, /turf/open/floor/plasteel/white/side{ @@ -65289,8 +63306,7 @@ "cok" = ( /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whitepurple/corner{ @@ -65358,8 +63374,7 @@ /area/science/explab) "coq" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -65378,7 +63393,6 @@ "cos" = ( /obj/structure/table, /obj/item/weapon/paper_bin{ - pixel_x = 0; pixel_y = 6 }, /obj/item/weapon/pen, @@ -65440,7 +63454,6 @@ /obj/item/clothing/suit/apron/surgical, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /turf/open/floor/plasteel/white/side{ @@ -65463,8 +63476,7 @@ /obj/machinery/power/apc{ dir = 4; name = "Surgery APC"; - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/structure/cable/yellow{ d2 = 2; @@ -65492,9 +63504,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, /area/medical/surgery) @@ -65530,9 +63540,7 @@ "coI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -65579,9 +63587,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 8 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "coO" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -65631,8 +63637,7 @@ /obj/machinery/power/apc{ dir = 4; name = "CMO's Office APC"; - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/structure/cable/yellow{ d2 = 8; @@ -65654,7 +63659,6 @@ /obj/item/weapon/storage/backpack/satchel/chem, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/structure/window/reinforced{ @@ -65997,8 +64001,7 @@ "cpv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -66091,8 +64094,7 @@ /area/science/explab) "cpA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/cable/yellow{ d1 = 4; @@ -66205,10 +64207,7 @@ "cpL" = ( /obj/effect/decal/cleanable/blood/gibs/limb, /obj/structure/rack, -/obj/item/weapon/storage/firstaid/regular{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/weapon/storage/firstaid/regular, /obj/item/stack/medical/bruise_pack, /obj/item/stack/medical/bruise_pack, /obj/item/stack/medical/ointment, @@ -66235,9 +64234,7 @@ }, /obj/structure/window/reinforced, /turf/open/floor/plasteel/black, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/aisat) "cpP" = ( /obj/structure/lattice/catwalk, /obj/item/weapon/wrench, @@ -66263,8 +64260,8 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; locked = 0; + name = "Engine Air Alarm"; pixel_x = 24; req_access = null; req_one_access_txt = "24;10" @@ -66462,9 +64459,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 8 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cqj" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -66480,9 +64475,7 @@ icon_state = "2-8" }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cqk" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -66586,8 +64579,7 @@ /obj/machinery/power/apc{ dir = 8; name = "Chemistry APC"; - pixel_x = -24; - pixel_y = 0 + pixel_x = -24 }, /obj/structure/closet/secure_closet/chemical{ pixel_x = -3 @@ -66630,7 +64622,6 @@ desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; dir = 1; name = "requests board"; - pixel_x = 0; pixel_y = -32 }, /obj/machinery/button/door{ @@ -66670,7 +64661,6 @@ /obj/machinery/power/apc{ dir = 2; name = "Research Lab APC"; - pixel_x = 0; pixel_y = -26 }, /obj/structure/cable/yellow, @@ -66716,7 +64706,6 @@ department = "Science"; departmentType = 2; name = "Science Requests Console"; - pixel_x = 0; pixel_y = -30; receive_ore_updates = 1 }, @@ -66728,8 +64717,7 @@ /area/science/lab) "cqA" = ( /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/machinery/door/window/eastleft{ dir = 1; @@ -66756,7 +64744,6 @@ }, /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, @@ -66894,8 +64881,7 @@ /area/science/explab) "cqQ" = ( /obj/machinery/light_switch{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -66951,15 +64937,13 @@ "cqV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, /area/science/explab) "cqW" = ( /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/effect/turf_decal/stripes/line{ @@ -67023,10 +65007,7 @@ /turf/open/space, /area/space) "cre" = ( -/obj/structure/sign/fire{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/structure/sign/fire, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "crf" = ( @@ -67049,19 +65030,15 @@ "crj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, /obj/machinery/light_switch{ - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /turf/open/floor/plasteel/white/side{ dir = 4 @@ -67113,15 +65090,13 @@ /obj/structure/bed, /obj/item/weapon/bedsheet/medical, /obj/machinery/light_switch{ - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /turf/open/floor/plasteel/white, /area/medical/surgery) "crr" = ( /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/machinery/atmospherics/components/unary/vent_pump{ @@ -67164,7 +65139,6 @@ frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; - pixel_x = 0; pixel_y = -30 }, /obj/machinery/light, @@ -67191,7 +65165,6 @@ }, /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = -24 }, /obj/effect/turf_decal/stripes/line{ @@ -67203,9 +65176,7 @@ /turf/open/floor/plasteel/whiteblue/corner{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "crx" = ( /obj/machinery/light{ dir = 4; @@ -67215,14 +65186,11 @@ /turf/open/floor/plasteel/whiteblue/corner{ dir = 2 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cry" = ( /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -67262,9 +65230,7 @@ "crB" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -67347,8 +65313,7 @@ cell_type = 5000; dir = 4; name = "Aft Hallway APC"; - pixel_x = 24; - pixel_y = 0 + pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ @@ -67621,7 +65586,6 @@ "csk" = ( /obj/machinery/airalarm{ dir = 1; - icon_state = "alarm0"; pixel_y = -22 }, /turf/open/floor/plasteel/white/side{ @@ -67653,7 +65617,6 @@ frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; - pixel_x = 0; pixel_y = -30 }, /obj/structure/closet/crate/freezer/blood, @@ -67666,7 +65629,6 @@ }, /obj/machinery/airalarm{ dir = 1; - icon_state = "alarm0"; pixel_y = -22 }, /obj/structure/sign/nosmoking_2{ @@ -67696,7 +65658,6 @@ }, /obj/item/weapon/bedsheet/medical, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -32 }, /obj/machinery/camera{ @@ -67731,9 +65692,7 @@ /turf/open/floor/plasteel/whiteblue/corner{ dir = 8 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "csu" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -67749,9 +65708,7 @@ dir = 8 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "csv" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -67769,9 +65726,7 @@ /turf/open/floor/plasteel/whiteblue/side{ dir = 4 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "csw" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -67831,8 +65786,7 @@ icon_state = "pipe-c" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/plasteel/barber{ dir = 8 @@ -67861,7 +65815,6 @@ department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; - pixel_x = 0; pixel_y = -32 }, /obj/effect/landmark/start/chief_medical_officer, @@ -67880,8 +65833,7 @@ dir = 8; name = "Medbay Monitor"; network = list("Medbay"); - pixel_x = 29; - pixel_y = 0 + pixel_x = 29 }, /obj/item/device/radio/intercom{ dir = 1; @@ -67931,8 +65883,7 @@ sortType = 11 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -68166,7 +66117,6 @@ desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("RD"); - pixel_x = 0; pixel_y = 2 }, /obj/structure/table/reinforced, @@ -68183,7 +66133,6 @@ department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; - pixel_x = 0; pixel_y = 30; receive_ore_updates = 1 }, @@ -68196,7 +66145,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/effect/landmark/xmastree/rdrod, @@ -68217,8 +66165,7 @@ /area/crew_quarters/heads/hor) "cte" = ( /obj/item/weapon/storage/secure/safe{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/machinery/ai_status_display{ pixel_y = 32 @@ -68231,8 +66178,7 @@ "ctf" = ( /obj/machinery/portable_atmospherics/scrubber/huge, /obj/machinery/light_switch{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel{ @@ -68270,7 +66216,6 @@ cell_type = 5000; dir = 1; name = "Toxins Storage APC"; - pixel_x = 0; pixel_y = 25 }, /obj/structure/cable/yellow{ @@ -68345,9 +66290,11 @@ /obj/structure/bed, /obj/item/weapon/bedsheet/medical, /obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 }, /turf/open/floor/plasteel/whiteblue/side{ dir = 8 @@ -68364,7 +66311,6 @@ icon_state = "2-4" }, /obj/machinery/vending/wallmed{ - pixel_x = 0; pixel_y = 28 }, /turf/open/floor/plasteel/white, @@ -68379,7 +66325,6 @@ dir = 10 }, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = 24 }, /turf/open/floor/plasteel/whiteblue/side{ @@ -68413,29 +66358,23 @@ icon_state = "1-8" }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ctw" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/whiteblue/corner{ dir = 4 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "ctx" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 1 }, /obj/machinery/light_switch{ - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/barber{ @@ -68476,9 +66415,7 @@ /turf/open/floor/plating, /area/medical/genetics) "ctD" = ( -/obj/structure/sign/directions/evac{ - pixel_y = 0 - }, +/obj/structure/sign/directions/evac, /turf/closed/wall, /area/medical/genetics) "ctE" = ( @@ -68507,9 +66444,7 @@ }, /area/hallway/primary/aft) "ctH" = ( -/obj/structure/sign/directions/evac{ - pixel_y = 0 - }, +/obj/structure/sign/directions/evac, /turf/closed/wall, /area/maintenance/aft) "ctJ" = ( @@ -68641,7 +66576,6 @@ /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/effect/turf_decal/bot, @@ -68698,7 +66632,6 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/effect/turf_decal/bot, @@ -68809,8 +66742,7 @@ /obj/machinery/power/apc{ dir = 8; name = "Patient Room A APC"; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/structure/cable/yellow{ d2 = 4; @@ -68865,9 +66797,7 @@ /turf/open/floor/plasteel/whiteblue/corner{ dir = 1 }, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cup" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -68878,24 +66808,19 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cuq" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/light{ dir = 4; icon_state = "tube1" }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cur" = ( /obj/item/weapon/storage/box/rxglasses{ pixel_x = 3; @@ -68926,7 +66851,6 @@ department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; - pixel_x = 0; pixel_y = 30 }, /obj/machinery/light{ @@ -69309,8 +67233,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/lattice/catwalk, /turf/open/space, @@ -69345,8 +67268,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" }, /obj/structure/lattice/catwalk, /turf/open/space, @@ -69372,8 +67294,7 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -69445,9 +67366,7 @@ pixel_x = -32 }, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cvr" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -69456,23 +67375,18 @@ }, /obj/machinery/door/firedoor, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cvs" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "cvt" = ( /turf/closed/wall, /area/medical/genetics/cloning) "cvu" = ( /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/machinery/door/window/southleft{ @@ -69606,8 +67520,7 @@ "cvG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 2 @@ -69626,8 +67539,7 @@ /area/science/robotics/mechbay) "cvJ" = ( /obj/structure/sign/nosmoking_2{ - pixel_x = -29; - pixel_y = 0 + pixel_x = -29 }, /turf/open/floor/engine{ dir = 9; @@ -69761,8 +67673,7 @@ "cvT" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/structure/disposalpipe/segment{ dir = 2; @@ -69781,8 +67692,7 @@ "cvV" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -69917,9 +67827,7 @@ "cwn" = ( /obj/structure/rack, /obj/item/clothing/glasses/sunglasses, -/obj/item/device/flashlight/pen{ - pixel_x = 0 - }, +/obj/item/device/flashlight/pen, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -69936,8 +67844,7 @@ /obj/machinery/power/apc{ dir = 8; name = "Patient Room B APC"; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/structure/cable/yellow{ d2 = 4; @@ -69947,7 +67854,6 @@ dir = 8 }, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = 24 }, /turf/open/floor/plasteel/whiteblue/side{ @@ -70024,9 +67930,7 @@ /obj/structure/disposalpipe/segment, /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4; @@ -70037,13 +67941,11 @@ "cwv" = ( /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, /obj/machinery/light_switch{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/whiteblue/side{ dir = 9 @@ -70074,8 +67976,7 @@ "cwy" = ( /obj/machinery/dna_scannernew, /obj/machinery/light_switch{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/whiteblue, /area/medical/genetics) @@ -70135,7 +68036,6 @@ id = "genetics_shutters"; name = "genetics shutters control"; pixel_x = 28; - pixel_y = 0; req_access_txt = "9" }, /turf/open/floor/plasteel/blue/side{ @@ -70162,8 +68062,7 @@ }, /obj/structure/disposalpipe/segment, /obj/structure/sign/nosmoking_2{ - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /turf/open/floor/plasteel, /area/science/robotics/mechbay) @@ -70219,8 +68118,7 @@ }, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/white/side{ dir = 6 @@ -70248,13 +68146,11 @@ /obj/machinery/power/apc{ dir = 2; name = "RD Office APC"; - pixel_x = 0; pixel_y = -27 }, /obj/structure/cable/yellow, /obj/machinery/light_switch{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/item/weapon/twohanded/required/kirbyplants/dead, /turf/open/floor/plasteel/cafeteria{ @@ -70263,17 +68159,14 @@ /area/crew_quarters/heads/hor) "cwQ" = ( /obj/item/weapon/paper_bin{ - pixel_x = 0; pixel_y = 7 }, /obj/structure/table, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -30 }, /obj/item/weapon/stamp/rd{ pixel_x = -11; - pixel_y = 0; pixel_x = 3; pixel_y = -2 }, @@ -70310,7 +68203,6 @@ "cwS" = ( /obj/structure/closet/secure_closet/RD, /obj/machinery/keycard_auth{ - pixel_x = 0; pixel_y = -24 }, /turf/open/floor/plasteel/cafeteria{ @@ -70323,7 +68215,6 @@ dir = 1 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel/cafeteria{ @@ -70334,7 +68225,6 @@ /obj/structure/filingcabinet/chestdrawer, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/item/device/radio/intercom{ @@ -70418,6 +68308,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, /turf/open/floor/plasteel/whiteblue/side{ dir = 8 }, @@ -70430,8 +68324,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_b) @@ -70520,9 +68413,7 @@ "cxn" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -70586,9 +68477,7 @@ "cxu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/whiteblue/side{ dir = 5 @@ -70657,9 +68546,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/hallway/primary/aft) @@ -70699,9 +68586,7 @@ "cxE" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/circuit/green, /area/science/robotics/mechbay) @@ -70728,7 +68613,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plating, @@ -70742,9 +68626,7 @@ }, /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, @@ -70779,8 +68661,7 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -70793,7 +68674,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plating, @@ -70811,7 +68691,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/light/small{ @@ -70852,8 +68731,7 @@ req_access_txt = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 1 @@ -71096,7 +68974,6 @@ "cys" = ( /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/effect/landmark/start/roboticist, @@ -71109,9 +68986,7 @@ "cyt" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -71123,8 +68998,7 @@ "cyv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/white, /area/science/research) @@ -71136,8 +69010,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, /area/science/research) @@ -71265,8 +69138,7 @@ /area/science/mixing) "cyJ" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/light_switch{ pixel_y = 28 @@ -71329,7 +69201,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/white/side{ @@ -71413,15 +69284,13 @@ /area/medical/genetics/cloning) "cyX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/machinery/power/apc{ dir = 4; locked = 0; name = "Cloning Lab APC"; - pixel_x = 24; - pixel_y = 0 + pixel_x = 24 }, /obj/structure/cable/yellow, /obj/machinery/camera{ @@ -71446,9 +69315,7 @@ "cza" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/structure/mirror{ pixel_x = 28 @@ -71475,8 +69342,7 @@ /area/medical/genetics) "czd" = ( /obj/machinery/light_switch{ - pixel_x = 23; - pixel_y = 0 + pixel_x = 23 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -71578,8 +69444,7 @@ dir = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/item/weapon/folder/white{ pixel_x = 4; @@ -71755,9 +69620,7 @@ /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/pen, /turf/open/floor/plasteel/whitegreen, -/area/medical/medbay{ - name = "Medbay Central" - }) +/area/medical/medbay/central) "czF" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -71799,7 +69662,6 @@ /obj/machinery/airalarm{ desc = "This particular atmos control unit appears to have no access restrictions."; dir = 8; - icon_state = "alarm0"; locked = 0; name = "all-access air alarm"; pixel_x = 24; @@ -71862,9 +69724,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/cafeteria{ dir = 5 @@ -71956,8 +69816,7 @@ /obj/machinery/power/apc{ dir = 4; name = "Medbay Aft APC"; - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/structure/cable/yellow{ d2 = 8; @@ -71997,7 +69856,6 @@ /obj/structure/closet/secure_closet/personal/patient, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /turf/open/floor/plasteel/vault, @@ -72052,8 +69910,7 @@ pixel_y = 1 }, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/bed/roller, /mob/living/carbon/monkey, @@ -72062,13 +69919,10 @@ "cAf" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /turf/open/floor/plasteel/vault, @@ -72080,7 +69934,6 @@ "cAh" = ( /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/machinery/camera{ @@ -72181,8 +70034,7 @@ /obj/machinery/power/apc{ dir = 4; name = "Mech Bay APC"; - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/structure/cable/yellow{ d2 = 8; @@ -72493,8 +70345,7 @@ layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins"); - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -72522,8 +70373,7 @@ frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /turf/open/floor/plasteel/cafeteria{ dir = 5 @@ -72556,9 +70406,7 @@ }, /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /turf/open/floor/plasteel/cafeteria{ dir = 5 @@ -72600,8 +70448,7 @@ frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/plasteel/white, /area/medical/medbay/aft) @@ -72621,9 +70468,7 @@ /turf/open/floor/plasteel/black, /area/medical/genetics) "cBd" = ( -/obj/structure/sign/directions/evac{ - pixel_y = 0 - }, +/obj/structure/sign/directions/evac, /turf/closed/wall, /area/hallway/primary/aft) "cBe" = ( @@ -72636,9 +70481,7 @@ }, /area/hallway/primary/aft) "cBf" = ( -/obj/structure/sign/directions/evac{ - pixel_y = 0 - }, +/obj/structure/sign/directions/evac, /turf/closed/wall, /area/science/robotics/mechbay) "cBg" = ( @@ -72671,7 +70514,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -25 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -72694,7 +70536,6 @@ /obj/machinery/button/door{ id = "researchrangeshutters"; name = "Blast Door Control"; - pixel_x = 0; pixel_y = -24; req_access_txt = "0" }, @@ -72707,7 +70548,6 @@ /obj/machinery/power/apc{ dir = 2; name = "Research Firing Range APC"; - pixel_x = 0; pixel_y = -28 }, /obj/structure/table, @@ -72800,7 +70640,6 @@ pixel_y = -2 }, /obj/item/device/assembly/prox_sensor{ - pixel_x = 0; pixel_y = 2 }, /obj/structure/table/reinforced, @@ -72934,8 +70773,7 @@ "cBI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -72969,8 +70807,7 @@ layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins"); - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -73029,7 +70866,6 @@ dir = 8 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = -30 }, /obj/item/weapon/storage/box/donkpockets{ @@ -73043,7 +70879,6 @@ /area/medical/medbay/aft) "cBV" = ( /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = -30 }, /obj/item/weapon/reagent_containers/spray/cleaner, @@ -73059,7 +70894,6 @@ }, /obj/machinery/light/small, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -29 }, /obj/machinery/camera{ @@ -73232,7 +71066,6 @@ /area/science/mixing) "cCu" = ( /obj/item/device/assembly/signaler{ - pixel_x = 0; pixel_y = 8 }, /obj/item/device/assembly/signaler{ @@ -73260,12 +71093,8 @@ /obj/item/device/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve{ - pixel_x = 0 - }, -/obj/item/device/transfer_valve{ - pixel_x = 0 - }, +/obj/item/device/transfer_valve, +/obj/item/device/transfer_valve, /obj/item/device/transfer_valve{ pixel_x = 5 }, @@ -73276,7 +71105,6 @@ department = "Science"; departmentType = 2; name = "Science Requests Console"; - pixel_x = 0; pixel_y = -30; receive_ore_updates = 1 }, @@ -73297,10 +71125,7 @@ pixel_x = 6; pixel_y = -4 }, -/obj/item/device/assembly/timer{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/device/assembly/timer, /obj/structure/table/reinforced, /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -73388,8 +71213,7 @@ /obj/machinery/power/apc{ dir = 4; name = "Toxins Lab APC"; - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/structure/cable/yellow{ d2 = 8; @@ -73458,9 +71282,7 @@ /area/medical/virology) "cCL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/freezer, /area/medical/virology) @@ -73586,9 +71408,7 @@ "cCW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/black, /area/medical/morgue) @@ -73695,7 +71515,6 @@ /obj/machinery/power/apc{ dir = 1; name = "Robotics Lab APC"; - pixel_x = 0; pixel_y = 25 }, /obj/structure/cable/yellow{ @@ -73758,7 +71577,6 @@ "cDm" = ( /obj/machinery/shower{ dir = 4; - icon_state = "shower"; name = "emergency shower" }, /turf/open/floor/plasteel/white, @@ -73805,7 +71623,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /obj/machinery/light/small, @@ -73915,7 +71732,6 @@ cell_type = 5000; dir = 1; name = "Virology APC"; - pixel_x = 0; pixel_y = 24 }, /obj/structure/cable/yellow{ @@ -73971,7 +71787,6 @@ /obj/item/clothing/glasses/hud/health, /obj/structure/reagent_dispensers/virusfood{ density = 0; - pixel_x = 0; pixel_y = 30 }, /obj/structure/table/glass, @@ -74222,8 +72037,7 @@ /obj/machinery/power/apc{ dir = 4; name = "Morgue APC"; - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /obj/structure/cable/yellow{ d2 = 8; @@ -74382,8 +72196,7 @@ /obj/item/device/assembly/flash/handheld, /obj/item/device/assembly/flash/handheld, /obj/machinery/ai_status_display{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -74391,8 +72204,7 @@ "cEp" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/white/side{ dir = 9 @@ -74415,7 +72227,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/engine/vacuum, @@ -74467,7 +72278,6 @@ id_tag = "tox_airlock_control"; interior_door_tag = "tox_airlock_interior"; pixel_x = -24; - pixel_y = 0; sanitize_external = 1; sensor_tag = "tox_airlock_sensor" }, @@ -74534,8 +72344,7 @@ /obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + icon_state = "1-2" }, /obj/structure/lattice/catwalk, /turf/open/space, @@ -74581,8 +72390,7 @@ }, /obj/structure/table/glass, /obj/structure/sign/deathsposal{ - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /turf/open/floor/plasteel/whitegreen/side{ dir = 8 @@ -74633,7 +72441,6 @@ department = "Virology"; name = "Virology Requests Console"; pixel_x = 29; - pixel_y = 0; receive_ore_updates = 1 }, /obj/item/stack/sheet/mineral/plasma{ @@ -74705,7 +72512,6 @@ pixel_y = 4 }, /obj/structure/sign/nosmoking_2{ - pixel_x = 0; pixel_y = -30 }, /obj/structure/table/glass, @@ -74721,8 +72527,7 @@ /area/medical/medbay/aft) "cEU" = ( /obj/machinery/light_switch{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/structure/bodycontainer/morgue, /obj/effect/landmark/revenantspawn, @@ -74797,8 +72602,7 @@ "cFd" = ( /obj/structure/noticeboard{ dir = 4; - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -74933,8 +72737,7 @@ /area/science/mixing) "cFs" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/camera{ @@ -74990,8 +72793,7 @@ /area/science/test_area) "cFy" = ( /obj/item/device/radio/intercom{ - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /obj/structure/table/glass, /obj/item/weapon/hand_labeler, @@ -75052,7 +72854,6 @@ /obj/structure/rack, /obj/item/weapon/crowbar/red, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = 26 }, /obj/item/weapon/wrench, @@ -75118,8 +72919,7 @@ dir = 4 }, /obj/item/device/radio/intercom{ - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /turf/open/floor/plasteel/whitegreen/side{ dir = 4 @@ -75144,7 +72944,6 @@ pixel_y = 32 }, /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -75169,7 +72968,6 @@ /area/medical/virology) "cFN" = ( /obj/structure/sign/securearea{ - pixel_x = 0; pixel_y = 32 }, /obj/machinery/shower{ @@ -75243,8 +73041,7 @@ /area/medical/medbay/aft) "cFT" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /turf/open/floor/plasteel/white/side{ dir = 9 @@ -75277,8 +73074,7 @@ "cFX" = ( /obj/machinery/disposal/bin, /obj/machinery/light_switch{ - pixel_x = 23; - pixel_y = 0 + pixel_x = 23 }, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -75304,7 +73100,6 @@ departmentType = 2; name = "Robotics RC"; pixel_x = -31; - pixel_y = 0; receive_ore_updates = 1 }, /obj/effect/turf_decal/bot, @@ -75326,8 +73121,7 @@ "cGd" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/science/robotics/lab) @@ -75606,9 +73400,7 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, /area/medical/virology) @@ -75754,7 +73546,6 @@ idDoor = "virology_airlock_exterior"; idSelf = "virology_airlock_control"; name = "Virology Access Button"; - pixel_x = 0; pixel_y = 24; req_access_txt = "39" }, @@ -75838,9 +73629,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, /area/medical/medbay/aft) @@ -75898,8 +73687,7 @@ req_access_txt = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/plasteel/neutral/corner{ dir = 1 @@ -75908,7 +73696,6 @@ "cGV" = ( /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/machinery/light{ @@ -76034,8 +73821,7 @@ }, /obj/structure/sign/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; - name = "SERVER ROOM"; - pixel_y = 0 + name = "SERVER ROOM" }, /turf/closed/wall/r_wall, /area/science/server) @@ -76109,8 +73895,7 @@ icon_state = "1-2" }, /obj/structure/extinguisher_cabinet{ - pixel_x = -25; - pixel_y = 0 + pixel_x = -25 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/whitegreen/side{ @@ -76152,9 +73937,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /turf/open/floor/plasteel/whitegreen/side{ dir = 6 @@ -76209,13 +73992,10 @@ }, /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/machinery/light_switch{ - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /turf/open/floor/plasteel/whitegreen/side{ dir = 6 @@ -76224,8 +74004,7 @@ "cHw" = ( /obj/structure/closet/emcloset, /obj/item/device/radio/intercom{ - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -76294,10 +74073,7 @@ pixel_x = 3; pixel_y = 4 }, -/obj/item/weapon/storage/box/masks{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/weapon/storage/box/masks, /obj/structure/table/glass, /turf/open/floor/plasteel/whitegreen/corner{ dir = 1 @@ -76305,7 +74081,6 @@ /area/medical/medbay/aft) "cHC" = ( /obj/structure/sign/nosmoking_2{ - pixel_x = 0; pixel_y = -30 }, /obj/item/weapon/storage/box/beakers{ @@ -76348,7 +74123,6 @@ /area/medical/medbay/aft) "cHF" = ( /obj/structure/sink{ - icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2 @@ -76365,14 +74139,8 @@ pixel_x = 8; pixel_y = 2 }, -/obj/item/weapon/reagent_containers/blood/empty{ - pixel_x = 0; - pixel_y = 0 - }, -/obj/item/weapon/reagent_containers/blood/empty{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/dropper, /obj/structure/sign/biohazard{ @@ -76615,7 +74383,6 @@ /obj/machinery/power/apc{ dir = 1; name = "Research Division Server Room APC"; - pixel_x = 0; pixel_y = 25 }, /obj/structure/cable/yellow{ @@ -76803,8 +74570,7 @@ }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/vault, /area/medical/virology) @@ -76845,7 +74611,6 @@ "cIx" = ( /obj/structure/closet/l3closet/virology, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plasteel/vault, @@ -76944,9 +74709,7 @@ }, /area/hallway/primary/aft) "cIH" = ( -/obj/structure/sign/directions/evac{ - pixel_y = 0 - }, +/obj/structure/sign/directions/evac, /turf/closed/wall/r_wall, /area/hallway/primary/aft) "cII" = ( @@ -76970,7 +74733,6 @@ /obj/effect/landmark/start/roboticist, /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, @@ -76985,8 +74747,7 @@ /obj/item/clothing/gloves/color/latex, /obj/item/weapon/surgical_drapes, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /obj/structure/window/reinforced{ dir = 1; @@ -77047,8 +74808,7 @@ "cIR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -77125,8 +74885,7 @@ }, /obj/machinery/airalarm/server{ dir = 8; - pixel_x = 22; - pixel_y = 0 + pixel_x = 22 }, /turf/open/floor/plasteel/black{ name = "Server Walkway"; @@ -77179,7 +74938,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /obj/structure/cable/yellow{ @@ -77209,9 +74967,7 @@ "cJh" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/freezer, /area/medical/virology) @@ -77400,7 +75156,6 @@ /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/vault, @@ -77498,8 +75253,7 @@ /obj/item/device/mmi, /obj/item/device/mmi, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /turf/open/floor/plasteel/white/corner{ dir = 1 @@ -77554,7 +75308,6 @@ "cJO" = ( /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, @@ -77737,7 +75490,6 @@ /obj/item/weapon/paper, /obj/item/weapon/pen/red, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -77752,7 +75504,6 @@ dir = 1 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; pixel_y = 29 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -77772,7 +75523,6 @@ pixel_y = 3 }, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = 26 }, /obj/machinery/camera{ @@ -77864,8 +75614,7 @@ "cKv" = ( /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -78095,8 +75844,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_y = 0 + name = "HIGH VOLTAGE" }, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/aft) @@ -78138,9 +75886,7 @@ "cKW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, /area/medical/virology) @@ -78160,9 +75906,7 @@ "cKZ" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /turf/open/floor/plasteel/whitegreen/side{ dir = 4 @@ -78533,8 +76277,7 @@ dir = 8; name = "turbine vent monitor"; network = list("Turbine"); - pixel_x = 29; - pixel_y = 0 + pixel_x = 29 }, /obj/machinery/button/door{ id = "turbinevent"; @@ -78640,7 +76383,6 @@ /obj/machinery/power/apc{ dir = 1; name = "Starboard Quarter Solar APC"; - pixel_x = 0; pixel_y = 24 }, /obj/structure/cable/yellow{ @@ -78657,8 +76399,7 @@ "cLO" = ( /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -78676,8 +76417,7 @@ "cLQ" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/plasteel/whitegreen/side, /area/medical/virology) @@ -78711,8 +76451,7 @@ }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /obj/structure/table/wood, /obj/item/clothing/under/burial, @@ -78754,9 +76493,7 @@ "cLY" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/grimy, /area/chapel/office) @@ -78851,8 +76588,7 @@ network = list("SS13") }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/item/weapon/twohanded/required/kirbyplants{ icon_state = "plant-14"; @@ -78905,11 +76641,9 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /turf/open/floor/plating, @@ -79024,9 +76758,7 @@ "cMC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/button/crematorium{ pixel_x = -25 @@ -79077,8 +76809,7 @@ dir = 4 }, /obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/plasteel/grimy, /area/chapel/office) @@ -79100,7 +76831,6 @@ dir = 1 }, /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/machinery/camera{ @@ -79165,7 +76895,6 @@ "cMP" = ( /obj/item/candle, /obj/machinery/light_switch{ - pixel_x = 0; pixel_y = 25 }, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -79211,9 +76940,7 @@ "cMU" = ( /obj/machinery/status_display{ density = 0; - layer = 4; - pixel_x = 0; - pixel_y = 0 + layer = 4 }, /turf/closed/wall, /area/hallway/secondary/exit/departure_lounge) @@ -79285,7 +77012,6 @@ desc = "Used for watching output from station security cameras."; name = "Security Camera Monitor"; network = list("SS13"); - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/plasteel/red/side{ @@ -79298,7 +77024,6 @@ on = 1 }, /obj/structure/reagent_dispensers/peppertank{ - pixel_x = 0; pixel_y = 28 }, /turf/open/floor/plasteel/red/side{ @@ -79323,7 +77048,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/structure/sign/map/right{ @@ -79352,8 +77076,7 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -79468,8 +77191,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/chair/stool, /turf/open/floor/plating, @@ -79490,7 +77212,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plating, @@ -79554,7 +77275,6 @@ icon_state = "1-2" }, /obj/item/weapon/storage/fancy/candle_box{ - pixel_x = 0; pixel_y = 5 }, /obj/structure/table/wood, @@ -79582,9 +77302,7 @@ "cNB" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/carpet, /area/chapel/main) @@ -79751,8 +77469,7 @@ /obj/machinery/requests_console{ department = "Security"; departmentType = 5; - pixel_x = 30; - pixel_y = 0 + pixel_x = 30 }, /turf/open/floor/plasteel/red/side{ dir = 4 @@ -79807,8 +77524,7 @@ /area/maintenance/starboard/aft) "cNZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/structure/chair, /turf/open/floor/plating, @@ -79868,8 +77584,7 @@ /area/chapel/office) "cOg" = ( /obj/machinery/light_switch{ - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/machinery/light/small{ dir = 4 @@ -79981,10 +77696,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "cOs" = ( -/obj/machinery/ai_status_display{ - pixel_x = 0; - pixel_y = 0 - }, +/obj/machinery/ai_status_display, /turf/closed/wall, /area/hallway/secondary/exit/departure_lounge) "cOt" = ( @@ -80037,9 +77749,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/structure/cable/yellow{ d1 = 4; @@ -80087,8 +77797,7 @@ pixel_y = 4 }, /obj/item/device/taperecorder{ - pixel_x = 4; - pixel_y = 0 + pixel_x = 4 }, /obj/item/device/radio/intercom{ broadcasting = 0; @@ -80142,8 +77851,7 @@ /obj/structure/closet/wardrobe/chaplain_black, /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/grimy, /area/chapel/office) @@ -80159,7 +77867,6 @@ dir = 2; lighting = 3; name = "Chapel Office APC"; - pixel_x = 0; pixel_y = -25 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -80238,9 +77945,7 @@ "cOT" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) @@ -80411,8 +78116,7 @@ "cPm" = ( /obj/machinery/airalarm{ dir = 4; - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/machinery/light{ icon_state = "tube1"; @@ -80454,9 +78158,7 @@ "cPs" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, @@ -80546,7 +78248,6 @@ desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."; icon_state = "kiddieplaque"; name = "Remembrance Plaque"; - pixel_x = 0; pixel_y = 32 }, /obj/item/weapon/reagent_containers/food/snacks/grown/poppy{ @@ -80658,8 +78359,7 @@ dir = 8 }, /obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /obj/item/weapon/twohanded/required/kirbyplants{ icon_state = "plant-04"; @@ -80787,7 +78487,6 @@ /area/chapel/main) "cQa" = ( /obj/machinery/newscaster{ - pixel_x = 0; pixel_y = 32 }, /obj/machinery/light/small{ @@ -80809,7 +78508,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/machinery/light/small{ @@ -81028,8 +78726,7 @@ dir = 8 }, /obj/machinery/light_switch{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -81062,8 +78759,7 @@ amount = 50 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 + pixel_x = 27 }, /obj/item/stack/packageWrap, /obj/item/stack/packageWrap, @@ -81270,13 +78966,11 @@ "cRh" = ( /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, /obj/machinery/light_switch{ - pixel_x = -23; - pixel_y = 0 + pixel_x = -23 }, /turf/open/floor/plasteel/whitepurple/side{ dir = 9 @@ -81323,7 +79017,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/light/small{ @@ -81405,7 +79098,6 @@ idSelf = "xeno_airlock_control"; name = "Access Button"; pixel_x = -24; - pixel_y = 0; req_access_txt = "0" }, /obj/structure/cable/yellow{ @@ -81455,8 +79147,7 @@ "cRA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/white, /area/science/xenobiology) @@ -81516,7 +79207,6 @@ /obj/machinery/button/door{ id = "chapel_shutters_parlour"; name = "chapel shutters control"; - pixel_x = 0; pixel_y = -25; req_access_txt = "0" }, @@ -81620,8 +79310,7 @@ "cRT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/light_switch{ - pixel_x = 25; - pixel_y = 0 + pixel_x = 25 }, /turf/open/floor/plasteel/black, /area/chapel/office) @@ -81819,7 +79508,6 @@ /obj/machinery/button/door{ id = "xenobio8"; name = "Containment Blast Doors"; - pixel_x = 0; pixel_y = 4; req_access_txt = "55" }, @@ -81963,7 +79651,6 @@ /obj/machinery/button/door{ id = "xenobio3"; name = "Containment Blast Doors"; - pixel_x = 0; pixel_y = 4; req_access_txt = "55" }, @@ -82087,7 +79774,6 @@ /obj/machinery/button/door{ id = "xenobio7"; name = "Containment Blast Doors"; - pixel_x = 0; pixel_y = 4; req_access_txt = "55" }, @@ -82168,7 +79854,6 @@ /obj/machinery/button/door{ id = "xenobio2"; name = "Containment Blast Doors"; - pixel_x = 0; pixel_y = 4; req_access_txt = "55" }, @@ -82198,7 +79883,6 @@ /obj/machinery/button/door{ id = "xenobio1"; name = "Containment Blast Doors"; - pixel_x = 0; pixel_y = 4; req_access_txt = "55" }, @@ -82214,8 +79898,7 @@ /obj/machinery/status_display{ density = 0; layer = 3; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/machinery/computer/shuttle/pod{ pixel_x = -32; @@ -82245,7 +79928,6 @@ /area/science/xenobiology) "cSW" = ( /obj/structure/sink{ - icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2 @@ -82363,7 +80045,6 @@ }, /obj/machinery/airalarm{ dir = 4; - icon_state = "alarm0"; pixel_x = -22 }, /obj/item/weapon/storage/box/bodybags{ @@ -82407,7 +80088,6 @@ /obj/machinery/status_display{ density = 0; layer = 3; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/computer/shuttle/pod{ @@ -82467,7 +80147,6 @@ id = "smindicate"; name = "external door control"; pixel_x = -26; - pixel_y = 0; req_access_txt = "150" }, /obj/docking_port/mobile{ @@ -82550,7 +80229,6 @@ dir = 1; name = "Test Chamber Monitor"; network = list("Xeno"); - pixel_x = 0; pixel_y = 2 }, /obj/structure/table/reinforced, @@ -82602,8 +80280,7 @@ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0 + name = "EXTERNAL AIRLOCK" }, /turf/closed/wall/mineral/plastitanium, /area/shuttle/syndicate) @@ -82836,8 +80513,7 @@ /area/shuttle/syndicate) "cUc" = ( /obj/item/weapon/reagent_containers/glass/bottle/epinephrine{ - pixel_x = 6; - pixel_y = 0 + pixel_x = 6 }, /obj/item/weapon/reagent_containers/glass/bottle/charcoal{ pixel_x = -3 @@ -83160,9 +80836,7 @@ "cUI" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/structure/mirror{ pixel_x = 30 @@ -83392,15 +81066,13 @@ desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; dir = 8; name = "requests board"; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/wood, /area/library) "cVf" = ( /obj/machinery/light_switch{ - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /turf/open/floor/wood, /area/library) @@ -83474,8 +81146,7 @@ dir = 8 }, /obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 + dir = 4 }, /turf/open/floor/plating, /area/shuttle/transport) @@ -83628,14 +81299,11 @@ /area/shuttle/auxillary_base) "cVR" = ( /obj/structure/mirror{ - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -84014,7 +81682,6 @@ /area/shuttle/abandoned) "cWu" = ( /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/machinery/door/window/westright{ @@ -84037,8 +81704,7 @@ "cWv" = ( /obj/effect/decal/cleanable/blood/old, /obj/structure/mirror{ - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -84677,9 +82343,7 @@ "cXE" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/yellow/side{ dir = 1 @@ -84821,7 +82485,6 @@ /area/shuttle/abandoned) "cXU" = ( /obj/machinery/vending/hydroseeds{ - pixel_x = 0; use_power = 0 }, /obj/effect/decal/cleanable/dirt{ @@ -84914,7 +82577,6 @@ name = "Robotics Operating Table" }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = -30 }, /obj/machinery/camera{ @@ -84954,9 +82616,7 @@ "cYf" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -84966,7 +82626,6 @@ /area/shuttle/abandoned) "cYg" = ( /obj/structure/sink{ - icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2 @@ -85020,13 +82679,11 @@ /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; pixel_x = -28; - pixel_y = 0; req_access_txt = "0"; use_power = 0 }, /obj/machinery/iv_drip{ - density = 0; - pixel_x = 0 + density = 0 }, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -85063,9 +82720,7 @@ "cYp" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/effect/decal/cleanable/xenoblood, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, @@ -85218,8 +82873,7 @@ "cYC" = ( /obj/structure/table, /obj/item/weapon/reagent_containers/glass/bottle/epinephrine{ - pixel_x = 6; - pixel_y = 0 + pixel_x = 6 }, /obj/item/weapon/reagent_containers/glass/bottle/charcoal{ pixel_x = -3 @@ -85306,7 +82960,6 @@ dir = 1; name = "Auxillary Base Monitor"; network = list("AuxBase"); - pixel_x = 0; pixel_y = -28 }, /obj/structure/reagent_dispensers/fueltank, @@ -85446,7 +83099,6 @@ /obj/item/device/radio/intercom{ dir = 4; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 27 }, /obj/structure/chair, @@ -85512,8 +83164,6 @@ "cYZ" = ( /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; - pixel_x = 0; - pixel_y = 0; req_access_txt = "0"; use_power = 0 }, @@ -85603,7 +83253,6 @@ /obj/item/device/radio/intercom{ dir = 2; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -31 }, /obj/structure/chair{ @@ -85684,8 +83333,7 @@ "cZu" = ( /obj/machinery/status_display{ dir = 8; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/machinery/holopad, /turf/open/floor/mineral/titanium/blue, @@ -85699,8 +83347,7 @@ "cZw" = ( /obj/structure/table, /obj/item/weapon/reagent_containers/glass/bottle/epinephrine{ - pixel_x = 6; - pixel_y = 0 + pixel_x = 6 }, /obj/item/weapon/reagent_containers/glass/bottle/charcoal{ pixel_x = -3 @@ -85745,7 +83392,6 @@ /obj/item/device/radio/intercom{ dir = 2; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -31 }, /turf/open/floor/mineral/titanium/blue, @@ -85763,7 +83409,6 @@ /obj/item/weapon/folder/blue, /obj/structure/extinguisher_cabinet{ dir = 4; - pixel_x = 0; pixel_y = -27 }, /turf/open/floor/mineral/titanium/blue, @@ -85772,7 +83417,6 @@ /obj/machinery/space_heater, /obj/structure/extinguisher_cabinet{ dir = 4; - pixel_x = 0; pixel_y = -27 }, /obj/effect/turf_decal/bot, @@ -85956,7 +83600,6 @@ pixel_y = 1 }, /obj/item/weapon/storage/toolbox/mechanical{ - pixel_x = 0; pixel_y = -1 }, /obj/item/weapon/storage/toolbox/emergency{ @@ -86060,7 +83703,6 @@ /obj/item/device/radio/intercom{ dir = 2; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -31 }, /obj/item/weapon/book/manual/wiki/security_space_law{ @@ -86090,16 +83732,13 @@ /obj/item/device/radio/intercom{ dir = 2; name = "Station Intercom (General)"; - pixel_x = -27; - pixel_y = 0 + pixel_x = -27 }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) "dat" = ( /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; - pixel_x = 0; - pixel_y = 0; req_access_txt = "0"; use_power = 0 }, @@ -86126,7 +83765,6 @@ /obj/item/device/radio/intercom{ dir = 2; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = -31 }, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -86376,8 +84014,7 @@ /area/crew_quarters/bar) "dbe" = ( /obj/machinery/keycard_auth{ - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /turf/open/floor/carpet, /area/crew_quarters/heads/hop) @@ -86421,9 +84058,7 @@ /area/maintenance/starboard/aft) "dbm" = ( /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "dbn" = ( /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) @@ -86702,8 +84337,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) @@ -86711,8 +84345,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -86724,8 +84357,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /turf/open/space, /area/solar/starboard/aft) @@ -86787,7 +84419,6 @@ on = 1 }, /obj/structure/sink{ - icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2 @@ -86823,8 +84454,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/light{ dir = 4 @@ -86888,7 +84518,6 @@ cell_type = 10000; dir = 1; name = "Xenobiology APC"; - pixel_x = 0; pixel_y = 27 }, /obj/structure/cable/yellow{ @@ -86915,7 +84544,6 @@ department = "Science"; departmentType = 2; name = "Science Requests Console"; - pixel_x = 0; pixel_y = 30; receive_ore_updates = 1 }, @@ -86947,9 +84575,7 @@ "dcf" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /turf/open/floor/plasteel/whitepurple/side{ dir = 5 @@ -86958,7 +84584,6 @@ "dcg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/shower{ - icon_state = "shower"; dir = 4 }, /obj/item/device/radio/intercom{ @@ -87287,7 +84912,6 @@ "dcK" = ( /obj/machinery/disposal/bin, /obj/structure/sign/deathsposal{ - pixel_x = 0; pixel_y = -32 }, /obj/structure/disposalpipe/trunk{ @@ -87322,9 +84946,7 @@ "dcO" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/machinery/camera{ c_tag = "Xenobiology Lab - Central"; @@ -87414,7 +85036,6 @@ /obj/machinery/button/door{ id = "xenobio6"; name = "Containment Blast Doors"; - pixel_x = 0; pixel_y = 4; req_access_txt = "55" }, @@ -87518,8 +85139,7 @@ "ddd" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_Toxins = 0 + on = 1 }, /obj/machinery/light{ dir = 4 @@ -87741,8 +85361,7 @@ /obj/machinery/power/apc{ dir = 4; name = "Test Chamber Maintenance APC"; - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) @@ -87898,8 +85517,7 @@ }, /obj/machinery/firealarm{ dir = 8; - pixel_x = -26; - pixel_y = 0 + pixel_x = -26 }, /turf/open/floor/plasteel/black, /area/engine/engineering) @@ -88083,7 +85701,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /turf/open/floor/plasteel/black, @@ -88093,8 +85710,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line, /obj/machinery/light, @@ -88108,8 +85724,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/cable{ d1 = 2; @@ -88127,8 +85742,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/cable{ d1 = 2; @@ -88141,7 +85755,6 @@ "deu" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10; - pixel_x = 0; initialize_directions = 10 }, /obj/structure/cable/white{ @@ -88279,7 +85892,6 @@ /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10; - pixel_x = 0; initialize_directions = 10 }, /obj/structure/window/reinforced/highpressure/fulltile, @@ -88352,7 +85964,6 @@ "dfb" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10; - pixel_x = 0; initialize_directions = 10 }, /obj/machinery/meter, @@ -88527,8 +86138,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -88539,8 +86149,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -88558,8 +86167,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -88578,8 +86186,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/cable{ icon_state = "1-8" @@ -88608,7 +86215,6 @@ "dfJ" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10; - pixel_x = 0; initialize_directions = 10 }, /obj/structure/cable/white{ @@ -88694,7 +86300,6 @@ "dfV" = ( /obj/machinery/airalarm{ dir = 1; - icon_state = "alarm0"; pixel_y = -22 }, /obj/machinery/atmospherics/components/unary/vent_pump{ @@ -88745,8 +86350,7 @@ /area/engine/engineering) "dgb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 + dir = 9 }, /turf/closed/wall/r_wall, /area/engine/engineering) @@ -88922,8 +86526,7 @@ /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_y = 0 + icon_state = "4-8" }, /obj/structure/transit_tube/horizontal, /obj/machinery/atmospherics/pipe/simple/orange/visible, @@ -88948,7 +86551,6 @@ "dhe" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10; - pixel_x = 0; initialize_directions = 10 }, /turf/open/floor/plasteel, @@ -89048,9 +86650,7 @@ pixel_x = -32 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "dhq" = ( /obj/structure/table/reinforced, /obj/structure/light_construct/small{ @@ -89092,9 +86692,7 @@ pixel_y = -32 }, /turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness{ - name = "\improper Recreation Area" - }) +/area/crew_quarters/fitness/recreation) "dht" = ( /obj/item/weapon/cigbutt, /obj/structure/sign/poster/contraband/random{ @@ -89312,7 +86910,6 @@ /obj/machinery/power/apc{ dir = 2; name = "Tool Storage APC"; - pixel_x = 0; pixel_y = -27 }, /obj/structure/cable/yellow, @@ -89329,7 +86926,6 @@ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; - pixel_x = 0; pixel_y = 21 }, /obj/structure/sign/poster/official/random{ @@ -89408,9 +87004,7 @@ pixel_x = 32 }, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "dhT" = ( /obj/structure/sign/poster/random, /turf/closed/wall, @@ -89440,7 +87034,6 @@ /obj/item/weapon/wrench, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/structure/sign/poster/random{ @@ -89467,9 +87060,7 @@ pixel_x = -32 }, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "dib" = ( /obj/structure/table/wood, /obj/item/weapon/lipstick{ @@ -89537,9 +87128,7 @@ pixel_y = -32 }, /turf/open/floor/plating, -/area/crew_quarters/toilet{ - name = "\improper Auxiliary Restrooms" - }) +/area/crew_quarters/toilet/auxiliary) "dii" = ( /obj/machinery/door/window{ base_state = "right"; @@ -89617,7 +87206,6 @@ id = "corporate_privacy"; name = "corporate showroom shutters control"; pixel_x = 28; - pixel_y = 0; req_access_txt = "19" }, /obj/item/weapon/poster/random_official, @@ -89745,9 +87333,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 + pixel_x = 11 }, /obj/structure/sign/poster/official/cleanliness{ pixel_x = 32 @@ -89804,7 +87390,6 @@ /obj/machinery/status_display{ density = 0; layer = 4; - pixel_x = 0; pixel_y = 32 }, /obj/structure/sign/poster/official/random{ @@ -90082,7 +87667,6 @@ }, /obj/machinery/airalarm{ dir = 8; - icon_state = "alarm0"; pixel_x = 24 }, /obj/machinery/camera{ @@ -90092,9 +87676,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + on = 1 }, /turf/open/floor/plasteel/black, /area/chapel/main) @@ -90196,9 +87778,7 @@ name = "Arrival Airlock" }, /turf/open/floor/plating, -/area/hallway/secondary/entry{ - name = "Arrivals" - }) +/area/hallway/secondary/entry) "djB" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -90228,9 +87808,7 @@ name = "Arrival Airlock" }, /turf/open/floor/plating, -/area/hallway/secondary/entry{ - name = "Arrivals" - }) +/area/hallway/secondary/entry) "djE" = ( /obj/structure/chair{ dir = 8 @@ -90331,36 +87909,28 @@ name = "Arrival Airlock" }, /turf/open/floor/plating, -/area/hallway/secondary/entry{ - name = "Arrivals" - }) +/area/hallway/secondary/entry) "djT" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 2; name = "Arrival Airlock" }, /turf/open/floor/plating, -/area/hallway/secondary/entry{ - name = "Arrivals" - }) +/area/hallway/secondary/entry) "djU" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 1; name = "Arrival Airlock" }, /turf/open/floor/plating, -/area/hallway/secondary/entry{ - name = "Arrivals" - }) +/area/hallway/secondary/entry) "djV" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 1; name = "Arrival Airlock" }, /turf/open/floor/plating, -/area/hallway/secondary/entry{ - name = "Arrivals" - }) +/area/hallway/secondary/entry) "djW" = ( /obj/structure/table/wood, /obj/item/weapon/clipboard, @@ -90875,8 +88445,7 @@ /obj/item/stack/medical/ointment, /obj/machinery/status_display{ dir = 8; - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /obj/machinery/light{ icon_state = "tube1"; @@ -91023,124 +88592,64 @@ /area/maintenance/department/science/xenobiology) "dlW" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dlX" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dlY" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dlZ" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dma" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmb" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmc" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmd" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dme" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmf" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmg" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmh" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmi" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmj" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmk" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dml" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmm" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmn" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmo" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmp" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -91167,70 +88676,37 @@ /area/science/xenobiology) "dms" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmt" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmu" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmv" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmw" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmx" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmy" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmz" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmA" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmB" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmC" = ( /turf/closed/wall/r_wall, -/area/maintenance/aft{ - icon_state = "xenomaint"; - name = "Xeno Maintenance" - }) +/area/maintenance/department/science/xenobiology) "dmD" = ( /obj/structure/displaycase/trophy, /turf/open/floor/wood, @@ -91376,8 +88852,7 @@ cell_type = 2500; dir = 4; name = "Port Bow Maintenance APC"; - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /turf/open/floor/plating{ icon_state = "platingdmg2" @@ -92618,7 +90093,6 @@ /obj/machinery/power/apc{ dir = 2; name = "Starboard Bow Maintenance APC"; - pixel_x = 0; pixel_y = -28 }, /obj/structure/cable/yellow{ @@ -129844,7 +127318,7 @@ cub cva cwb cIk -cxM +cLG dvY czD cQC @@ -146243,10 +143717,10 @@ anT anT anT aaa -ber +aSD bgf bgd -bjN +aOX bly bnr bpE @@ -146503,7 +143977,7 @@ aSD bes bgg bil -bjO +blz blz bns bpF diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm.rej b/_maps/map_files/TgStation/tgstation.2.1.3.dmm.rej deleted file mode 100644 index 95d02d9acb..0000000000 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm.rej +++ /dev/null @@ -1,12 +0,0 @@ -diff a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm (rejected hunks) -@@ -20207,9 +20151,7 @@ - /area/shuttle/syndicate) - "aTq" = ( - /turf/closed/wall, --/area/security/vacantoffice{ -- name = "Vacant Office A" -- }) -+/area/security/vacantoffice/a) - "aTr" = ( - /obj/machinery/door/firedoor, - /obj/machinery/status_display{ diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index d4b536ec2f..46589408a2 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -95,11 +95,13 @@ //tablecrafting defines #define CAT_NONE "" -#define CAT_WEAPON "Weaponry" +#define CAT_WEAPONRY "Weaponry" +#define CAT_WEAPON "Weapons" #define CAT_AMMO "Ammunition" #define CAT_ROBOT "Robots" #define CAT_MISC "Misc" #define CAT_PRIMAL "Tribal" +#define CAT_FOOD "Foods" #define CAT_BREAD "Breads" #define CAT_BURGER "Burgers" #define CAT_CAKE "Cakes" diff --git a/code/__DEFINES/server_tools.dm b/code/__DEFINES/server_tools.dm new file mode 100644 index 0000000000..f8d1c316d8 --- /dev/null +++ b/code/__DEFINES/server_tools.dm @@ -0,0 +1,27 @@ +#define REBOOT_MODE_NORMAL 0 +#define REBOOT_MODE_HARD 1 +#define REBOOT_MODE_SHUTDOWN 2 + +#define IRC_STATUS_THROTTLE 50 + +//keep these in sync with TGS3 +#define SERVICE_WORLD_PARAM "server_service" +#define SERVICE_PR_TEST_JSON "..\\..\\prtestjob.json" + +#define SERVICE_CMD_HARD_REBOOT "hard_reboot" +#define SERVICE_CMD_GRACEFUL_SHUTDOWN "graceful_shutdown" +#define SERVICE_CMD_WORLD_ANNOUNCE "world_announce" +#define SERVICE_CMD_IRC_STATUS "irc_status" +#define SERVICE_CMD_ADMIN_MSG "adminmsg" +#define SERVICE_CMD_NAME_CHECK "namecheck" +#define SERVICE_CMD_ADMIN_WHO "adminwho" + +//#define SERVICE_CMD_PARAM_KEY //defined in __compile_options.dm +#define SERVICE_CMD_PARAM_COMMAND "command" +#define SERVICE_CMD_PARAM_MESSAGE "message" +#define SERVICE_CMD_PARAM_TARGET "target" +#define SERVICE_CMD_PARAM_SENDER "sender" + +#define SERVICE_REQUEST_KILL_PROCESS "killme" +#define SERVICE_REQUEST_IRC_BROADCAST "irc" +#define SERVICE_REQUEST_IRC_ADMIN_CHANNEL_MESSAGE "send2irc" diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 834097bd44..6735ef95e9 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -30,7 +30,6 @@ // DEBUFFS // ///////////// -#define STATUS_EFFECT_SIGILMARK /datum/status_effect/sigil_mark #define STATUS_EFFECT_BELLIGERENT /datum/status_effect/belligerent //forces the affected to walk, doing damage if they try to run #define STATUS_EFFECT_MANIAMOTOR /datum/status_effect/maniamotor //disrupts, damages, and confuses the affected as long as they're in range of the motor @@ -41,3 +40,12 @@ #define STATUS_EFFECT_SUMMONEDGHOST /datum/status_effect/cultghost //is a cult ghost and can't use manifest runes #define STATUS_EFFECT_CRUSHERMARK /datum/status_effect/crusher_mark //if struck with a proto-kinetic crusher, takes a ton of damage + + +///////////// +// NEUTRAL // +///////////// + +#define STATUS_EFFECT_SIGILMARK /datum/status_effect/sigil_mark + +#define STATUS_EFFECT_CRUSHERDAMAGETRACKING /datum/status_effect/crusher_damage //tracks total kinetic crusher damage on a target diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 4215151058..9847ab32e7 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -131,9 +131,12 @@ return //Removes any null entries from the list +//Returns TRUE if the list had nulls, FALSE otherwise /proc/listclearnulls(list/L) - var/list/N = new(L.len) + var/start_len = L.len + var/list/N = new(start_len) L -= N + return L.len < start_len /* * Returns list containing all the entries from first list that are not present in second. diff --git a/code/__HELPERS/files.dm b/code/__HELPERS/files.dm index 83a026665e..fba6a6001d 100644 --- a/code/__HELPERS/files.dm +++ b/code/__HELPERS/files.dm @@ -3,7 +3,7 @@ for(var/file in args) src << browse_rsc(file) -/client/proc/browse_files(root="data/logs/", max_iterations=10, list/valid_extensions=list(".txt",".log",".htm")) +/client/proc/browse_files(root="data/logs/", max_iterations=10, list/valid_extensions=list("txt","log","htm", "html")) var/path = root for(var/i=0, iError: browse_files(): File not found/Invalid file([path]).") return diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index c7ee4e93f8..d604319929 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -507,7 +507,8 @@ return //First we spawn a dude. - var/mob/living/carbon/human/new_character = new(pick(GLOB.latejoin))//The mob being spawned. + var/mob/living/carbon/human/new_character = new//The mob being spawned. + SSjob.SendToLateJoin(new_character) G_found.client.prefs.copy_to(new_character) new_character.dna.update_dna_identity() diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 28a0dc7889..966a3a519a 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1344,7 +1344,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) //kevinz000 if you touch this I will hunt you down GLOBAL_VAR_INIT(valid_HTTPSGet, FALSE) GLOBAL_PROTECT(valid_HTTPSGet) -/proc/HTTPSGet(url) +/proc/HTTPSGet(url) //tgs2 support if(findtext(url, "\"")) GLOB.valid_HTTPSGet = FALSE diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 85a353371e..d98be1311e 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -35,7 +35,7 @@ //MINOR TWEAKS/MISC #define AGE_MIN 17 //youngest a character can be #define AGE_MAX 85 //oldest a character can be -#define WIZARD_AGE_MIN 30 //youngest a wizard can be +#define WIZARD_AGE_MIN 30 //youngest a wizard can be #define SHOES_SLOWDOWN 0 //How much shoes slow you down by default. Negative values speed you up #define POCKET_STRIP_DELAY 40 //time taken (in deciseconds) to search somebody's pockets #define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you @@ -62,14 +62,12 @@ #endif //Update this whenever you need to take advantage of more recent byond features -#define MIN_COMPILER_VERSION 511 +#define MIN_COMPILER_VERSION 511 #if DM_VERSION < MIN_COMPILER_VERSION //Don't forget to update this part #error Your version of BYOND is too out-of-date to compile this project. Go to byond.com/download and update. -#error You need version 511 or higher +#error You need version 511 or higher #endif -#ifndef SERVERTOOLS -#define SERVERTOOLS 0 -#endif +#define SERVICE_CMD_PARAM_KEY "serviceCommsKey" diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index eece2b4ca8..e874c97c17 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -32,7 +32,6 @@ GLOBAL_LIST_EMPTY(generic_event_spawns) //list of all spawns for events GLOBAL_LIST_EMPTY(wizardstart) GLOBAL_LIST_EMPTY(newplayer_start) -GLOBAL_LIST_EMPTY(latejoin) GLOBAL_LIST_EMPTY(prisonwarp) //prisoners go to these GLOBAL_LIST_EMPTY(holdingfacility) //captured people go here GLOBAL_LIST_EMPTY(xeno_spawn)//Aliens spawn at these. diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index e82976d4a3..81ad9d648e 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -32,4 +32,6 @@ GLOBAL_LIST_EMPTY(ladders) GLOBAL_LIST_EMPTY(trophy_cases) GLOBAL_LIST_EMPTY(wire_color_directory) -GLOBAL_LIST_EMPTY(wire_name_directory) \ No newline at end of file +GLOBAL_LIST_EMPTY(wire_name_directory) + +GLOBAL_LIST_EMPTY(ai_status_displays) diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index 00665bdfe2..72ca1e9328 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -31,4 +31,6 @@ 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) \ No newline at end of file diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index e9bdeca880..e41859d140 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -208,6 +208,8 @@ var/generate_minimaps = 0 var/grey_assistants = 0 + var/id_console_jobslot_delay = 30 + var/lavaland_budget = 60 var/space_budget = 16 @@ -261,6 +263,8 @@ var/mice_roundstart = 10 // how many wire chewing rodents spawn at roundstart. + var/irc_announce_new_game = FALSE + /datum/configuration/New() gamemode_cache = typecacheof(/datum/game_mode,TRUE) for(var/T in gamemode_cache) @@ -409,6 +413,8 @@ usewhitelist = TRUE if("allow_metadata") allow_Metadata = 1 + if("id_console_jobslot_delay") + id_console_jobslot_delay = text2num(value) if("inactivity_period") inactivity_period = text2num(value) * 10 //documented as seconds in config.txt if("afk_period") @@ -423,7 +429,7 @@ popup_admin_pm = 1 if("allow_holidays") allow_holidays = 1 - if("useircbot") + if("useircbot") //tgs2 support useircbot = 1 if("ticklag") var/ticklag = text2num(value) @@ -536,6 +542,8 @@ error_silence_time = text2num(value) if("error_msg_delay") error_msg_delay = text2num(value) + if("irc_announce_new_game") + irc_announce_new_game = TRUE else GLOB.config_error_log << "Unknown setting in configuration: '[name]'" @@ -827,6 +835,8 @@ if ("endmap") maplist[currentmap.map_name] = currentmap currentmap = null + if ("disabled") + currentmap = null else GLOB.config_error_log << "Unknown command in map vote config: '[command]'" diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index 46a963ee53..287e04abd9 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -27,7 +27,7 @@ SUBSYSTEM_DEF(blackbox) if(M.client) playercount += 1 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) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON('[world.internet_address]'), '[world.port]')") + var/datum/DBQuery/query_record_playercount = SSdbcore.NewQuery("INSERT INTO [format_table_name("legacy_population")] (playercount, admincount, time, server_ip, server_port) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]')") query_record_playercount.Execute() /datum/controller/subsystem/blackbox/Recover() @@ -176,7 +176,7 @@ SUBSYSTEM_DEF(blackbox) var/sqlstamina = sanitizeSQL(L.getStaminaLoss()) var/coord = sanitizeSQL("[L.x], [L.y], [L.z]") var/map = sanitizeSQL(SSmapping.config.map_name) - var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, coord, mapname, server_ip, server_port) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[SQLtime()]', '[laname]', '[lakey]', '[sqlgender]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[coord]', '[map]', INET_ATON('[world.internet_address]'), '[world.port]')") + var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, coord, mapname, server_ip, server_port) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[SQLtime()]', '[laname]', '[lakey]', '[sqlgender]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[coord]', '[map]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]')") query_report_death.Execute() diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index c37e10b28c..aefd62ed8e 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -11,6 +11,7 @@ SUBSYSTEM_DEF(job) var/initial_players_to_assign = 0 //used for checking against population caps var/list/prioritized_jobs = list() + var/list/latejoin_trackers = list() //Don't read this list, use GetLateJoinTurfs() instead /datum/controller/subsystem/job/Initialize(timeofday) if(!occupations.len) @@ -378,23 +379,11 @@ SUBSYSTEM_DEF(job) continue S = sloc break + if(S) + SendToAtom(H, S, buckle = FALSE) if(!S) //if there isn't a spawnpoint send them to latejoin, if there's no latejoin go yell at your mapper log_world("Couldn't find a round start spawn point for [rank]") - S = get_turf(pick(GLOB.latejoin)) - if(!S) //final attempt, lets find some area in the arrivals shuttle to spawn them in to. - log_world("Couldn't find a round start latejoin spawn point.") - for(var/turf/T in get_area_turfs(/area/shuttle/arrival)) - if(!T.density) - var/clear = 1 - for(var/obj/O in T) - if(O.density) - clear = 0 - break - if(clear) - S = T - continue - if(istype(S, /obj/effect/landmark) && isturf(S.loc)) - H.loc = S.loc + SendToLateJoin(H) if(H.mind) H.mind.assigned_role = rank @@ -516,3 +505,45 @@ SUBSYSTEM_DEF(job) newjob.total_positions = J.total_positions newjob.spawn_positions = J.spawn_positions newjob.current_positions = J.current_positions + +/datum/controller/subsystem/job/proc/SendToAtom(mob/M, atom/A, buckle) + if(buckle && isliving(M) && istype(A, /obj/structure/chair)) + var/obj/structure/chair/C = A + if(C.buckle_mob(M, FALSE, FALSE)) + return + M.forceMove(get_turf(A)) + +/datum/controller/subsystem/job/proc/SendToLateJoin(mob/M, buckle = TRUE) + if(latejoin_trackers.len) + SendToAtom(M, pick(latejoin_trackers), buckle) + else + //bad mojo + var/area/shuttle/arrival/A = locate() in GLOB.sortedAreas + if(A) + //first check if we can find a chair + var/obj/structure/chair/C = locate() in A + if(C) + SendToAtom(M, C, buckle) + return + else //last hurrah + var/list/avail = list() + for(var/turf/T in A) + if(!is_blocked_turf(T, TRUE)) + avail += T + if(avail.len) + SendToAtom(M, pick(avail), FALSE) + return + + //pick an open spot on arrivals and dump em + var/list/arrivals_turfs = shuffle(get_area_turfs(/area/shuttle/arrival)) + if(arrivals_turfs.len) + for(var/turf/T in arrivals_turfs) + if(!is_blocked_turf(T, TRUE)) + SendToAtom(M, T, FALSE) + return + //last chance, pick ANY spot on arrivals and dump em + SendToAtom(M, arrivals_turfs[1], FALSE) + else + var/msg = "Unable to send mob [M] to late join!" + message_admins(msg) + CRASH(msg) diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 7d7fbf9b6d..a5d4d2ce6f 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -223,7 +223,7 @@ SUBSYSTEM_DEF(shuttle) /datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, admiral_message) if(emergency.mode != SHUTTLE_CALL || emergency.timer != old_timer) return - emergency.cancel(/area/centcom) + emergency.cancel() if(!admiral_message) admiral_message = pick(GLOB.admiral_messages) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index a26c0bd2cd..9dce620e25 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -239,6 +239,8 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/PostSetup() set waitfor = 0 mode.post_setup() + GLOB.start_state = new /datum/station_state() + GLOB.start_state.count(1) //Cleanup some stuff for(var/obj/effect/landmark/start/S in GLOB.landmarks_list) //Deleting Startpoints but we need the ai point to AI-ize people later @@ -438,7 +440,7 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/transfer_characters() var/list/livings = list() - for(var/mob/dead/new_player/player in GLOB.player_list) + for(var/mob/dead/new_player/player in GLOB.mob_list) var/mob/living = player.transfer_character() if(living) qdel(player) @@ -852,7 +854,8 @@ SUBSYSTEM_DEF(ticker) if(!delay) delay = config.round_end_countdown * 10 - if(delay_end) + var/skip_delay = check_rights() + if(delay_end && !skip_delay) to_chat(world, "An admin has delayed the round end.") return @@ -862,7 +865,7 @@ SUBSYSTEM_DEF(ticker) UNTIL(round_end_sound_sent || (world.time - start_wait) > (delay * 2)) //don't wait forever sleep(delay - (world.time - start_wait)) - if(delay_end) + if(delay_end && !skip_delay) to_chat(world, "Reboot was cancelled by an admin.") return @@ -886,4 +889,4 @@ SUBSYSTEM_DEF(ticker) 'sound/roundend/disappointed.ogg'\ ) - world << sound(round_end_sound) \ No newline at end of file + world << sound(round_end_sound) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index 9f2753dfee..d82e691622 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -38,6 +38,8 @@ if(findtext(msg, "%s")) msg = replacetext(msg, "%s", user.p_s()) + msg = replace_pronoun(user, msg) + var/mob/living/L = user for(var/obj/item/weapon/implant/I in L.implants) I.trigger(key, L) @@ -61,6 +63,15 @@ user.visible_message(msg) log_emote("[key_name(user)] : [msg]") +/datum/emote/proc/replace_pronoun(mob/user, message) + if(findtext(message, "their")) + message = replacetext(message, "their", user.p_their()) + if(findtext(message, "them")) + message = replacetext(message, "them", user.p_them()) + if(findtext(message, "%s")) + message = replacetext(message, "%s", user.p_s()) + return message + /datum/emote/proc/select_message_type(mob/user) . = message if(!muzzle_ignore && user.is_muzzled() && emote_type == EMOTE_AUDIBLE) diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm index 86ab021191..b74e4619db 100644 --- a/code/datums/explosion.dm +++ b/code/datums/explosion.dm @@ -249,7 +249,7 @@ GLOBAL_LIST_EMPTY(explosions) if(GLOB.Debug2) log_world("## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds.") - if(!stopped) //if we aren't in a hurry + if(running) //if we aren't in a hurry //Machines which report explosions. for(var/array in GLOB.doppler_arrays) var/obj/machinery/doppler_array/A = array diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index 2e95629d30..ffb5627c6f 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -1,37 +1,44 @@ /datum/getrev - var/originmastercommit + var/originmastercommit var/commit var/list/testmerge = list() - var/has_pr_details = FALSE //example data in a testmerge entry when this is true: https://api.github.com/repositories/3234987/pulls/22586 + var/has_pr_details = FALSE //tgs2 support var/date /datum/getrev/New() - if(SERVERTOOLS && fexists("..\\prtestjob.lk")) + if(fexists(SERVICE_PR_TEST_JSON)) + testmerge = json_decode(file2text(SERVICE_PR_TEST_JSON)) + else if(!world.RunningService() && fexists("../prtestjob.lk")) //tgs2 support var/list/tmp = world.file2list("..\\prtestjob.lk") for(var/I in tmp) if(I) testmerge |= I - + log_world("Running /tg/ revision:") - var/list/logs = world.file2list(".git/logs/HEAD") - if(logs) - logs = splittext(logs[logs.len - 1], " ") - date = unix2date(text2num(logs[5])) - commit = logs[2] - log_world("[date]") - logs = world.file2list(".git/logs/refs/remotes/origin/master") - if(logs) - originmastercommit = splittext(logs[logs.len - 1], " ")[2] - + var/list/logs = world.file2list(".git/logs/HEAD") + if(logs) + logs = splittext(logs[logs.len - 1], " ") + date = unix2date(text2num(logs[5])) + commit = logs[2] + log_world("[date]") + logs = world.file2list(".git/logs/refs/remotes/origin/master") + if(logs) + originmastercommit = splittext(logs[logs.len - 1], " ")[2] + if(testmerge.len) log_world(commit) for(var/line in testmerge) if(line) - log_world("Test merge active of PR #[line]") - SSblackbox.add_details("testmerged_prs","[line]") - log_world("Based off origin/master commit [originmastercommit]") + if(world.RunningService()) + var/tmcommit = testmerge[line]["commit"] + log_world("Test merge active of PR #[line] commit [tmcommit]") + SSblackbox.add_details("testmerged_prs","[line]|[tmcommit]") + else //tgs2 support + log_world("Test merge active of PR #[line]") + SSblackbox.add_details("testmerged_prs","[line]") + log_world("Based off origin/master commit [originmastercommit]") else - log_world(originmastercommit) + log_world(originmastercommit) /datum/getrev/proc/DownloadPRDetails() if(!config.githubrepoid) @@ -66,8 +73,11 @@ return "" . = header ? "The following pull requests are currently test merged:
" : "" for(var/line in testmerge) - var/details = "" - if(has_pr_details) + var/cm = testmerge[line]["commit"] + var/details + if(world.RunningService()) + details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["author"]) + " at commit " + html_encode(copytext(cm, 1, min(length(cm), 7))) + else if(has_pr_details) //tgs2 support details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["user"]["login"]) . += "#[line][details]
" @@ -76,14 +86,14 @@ set name = "Show Server Revision" set desc = "Check the current server code revision" - if(GLOB.revdata.originmastercommit) + if(GLOB.revdata.originmastercommit) to_chat(src, "Server revision compiled on: [GLOB.revdata.date]") - var/prefix = "" + var/prefix = "" if(GLOB.revdata.testmerge.len) to_chat(src, GLOB.revdata.GetTestMergeInfo()) - prefix = "Based off origin/master commit: " - var/pc = GLOB.revdata.originmastercommit - to_chat(src, "[prefix][copytext(pc, 1, min(length(pc), 7))]") + prefix = "Based off origin/master commit: " + var/pc = GLOB.revdata.originmastercommit + to_chat(src, "[prefix][copytext(pc, 1, min(length(pc), 7))]") else to_chat(src, "Revision unknown") to_chat(src, "Current Infomational Settings:") @@ -94,7 +104,7 @@ to_chat(src, "Enforce Continuous Rounds: [config.continuous.len] of [config.modes.len] roundtypes") to_chat(src, "Allow Midround Antagonists: [config.midround_antag.len] of [config.modes.len] roundtypes") if(config.show_game_type_odds) - if(SSticker.IsRoundInProgress()) + if(SSticker.IsRoundInProgress()) var/prob_sum = 0 var/current_odds_differ = FALSE var/list/probs = list() @@ -110,13 +120,13 @@ probs[ctag] = 1 prob_sum += config.probabilities[ctag] if(current_odds_differ) - to_chat(src, "Game Mode Odds for current round:") + to_chat(src, "Game Mode Odds for current round:") for(var/ctag in probs) if(config.probabilities[ctag] > 0) var/percentage = round(config.probabilities[ctag] / prob_sum * 100, 0.1) to_chat(src, "[ctag] [percentage]%") - to_chat(src, "All Game Mode Odds:") + to_chat(src, "All Game Mode Odds:") var/sum = 0 for(var/ctag in config.probabilities) sum += config.probabilities[ctag] diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index b125f3f502..4e7490f8ee 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -1,4 +1,3 @@ - #define HOLOPAD_MAX_DIAL_TIME 200 /mob/camera/aiEye/remote/holo/setLoc() @@ -16,6 +15,7 @@ var/mob/camera/aiEye/remote/holo/eye //user's eye, once connected var/obj/effect/overlay/holo_pad_hologram/hologram //user's hologram, once connected + var/datum/action/innate/end_holocall/hangup //hangup action var/call_start_time @@ -43,19 +43,25 @@ //cleans up ALL references :) /datum/holocall/Destroy() - user.reset_perspective() - if(!QDELETED(eye) && user.client) - for(var/datum/camerachunk/chunk in eye.visibleCameraChunks) - chunk.remove(eye) + QDEL_NULL(hangup) + + var/user_good = !QDELETED(user) + if(user_good) + user.reset_perspective() + 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 - user.remote_control = null user = null + if(hologram) hologram.HC = null - hologram = null - calling_holopad.outgoing_call = null + hologram = null for(var/I in dialed_holopads) var/obj/machinery/holopad/H = I @@ -63,6 +69,7 @@ dialed_holopads.Cut() if(calling_holopad) + calling_holopad.outgoing_call = null calling_holopad.SetLightsAndPower() calling_holopad = null if(connected_holopad) @@ -87,7 +94,7 @@ /datum/holocall/proc/ConnectionFailure(obj/machinery/holopad/H, graceful = FALSE) testing("Holocall connection failure: graceful [graceful]") if(H == connected_holopad || H == calling_holopad) - if(!graceful) + if(!graceful && H != calling_holopad) calling_holopad.say("Connection failure.") qdel(src) return @@ -140,6 +147,8 @@ user.reset_perspective(eye) eye.setLoc(H.loc) + hangup = new(eye, src) + //Checks the validity of a holocall and qdels itself if it's not. Returns TRUE if valid, FALSE otherwise /datum/holocall/proc/Check() for(var/I in dialed_holopads) @@ -153,9 +162,7 @@ . = !QDELETED(user) && !user.incapacitated() && !QDELETED(calling_holopad) && calling_holopad.is_operational() && user.loc == calling_holopad.loc if(.) - if(connected_holopad) - . = !QDELETED(connected_holopad) && connected_holopad.is_operational() - else + if(!connected_holopad) . = world.time < (call_start_time + HOLOPAD_MAX_DIAL_TIME) if(!.) calling_holopad.say("No answer recieved.") @@ -164,3 +171,15 @@ if(!.) testing("Holocall Check fail") qdel(src) + +/datum/action/innate/end_holocall + name = "End Holocall" + button_icon_state = "camera_off" + var/datum/holocall/hcall + +/datum/action/innate/end_holocall/New(Target, datum/holocall/HC) + ..() + hcall = HC + +/datum/action/innate/end_holocall/Activate() + hcall.Disconnect(hcall.calling_holopad) diff --git a/code/datums/holocall.dm.rej b/code/datums/holocall.dm.rej new file mode 100644 index 0000000000..08110adedc --- /dev/null +++ b/code/datums/holocall.dm.rej @@ -0,0 +1,10 @@ +diff a/code/datums/holocall.dm b/code/datums/holocall.dm (rejected hunks) +@@ -42,6 +43,8 @@ + + //cleans up ALL references :) + /datum/holocall/Destroy() ++ QDEL_NULL(hangup) ++ + var/user_good = !QDELETED(user) + if(user_good) + user.reset_perspective() diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 7f7310665b..be5180c2ae 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -68,6 +68,7 @@ /datum/mind/New(var/key) src.key = key soulOwner = src + martial_art = default_martial_art /datum/mind/Destroy() SSticker.minds -= src @@ -1288,7 +1289,6 @@ else if (istype(M) && length(M.viruses)) for(var/datum/disease/D in M.viruses) D.cure(0) - sleep(0) //because deleting of virus is done through spawn(0) if("infected") if (check_rights(R_ADMIN, 0)) var/mob/living/carbon/human/H = current @@ -1447,7 +1447,7 @@ special_role = "Wizard" assigned_role = "Wizard" if(!GLOB.wizardstart.len) - current.loc = pick(GLOB.latejoin) + SSjob.SendToLateJoin(current) to_chat(current, "HOT INSERTION, GO GO GO") else current.loc = pick(GLOB.wizardstart) diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index d0ee284839..4c39d11691 100644 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -23,6 +23,8 @@ var/list/backpack_contents = null // In the list(path=count,otherpath=count) format var/list/implants = null + var/can_be_admin_equipped = TRUE // Set to FALSE if your outfit requires runtime parameters + /datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) //to be overriden for customization depending on client prefs,species etc return diff --git a/code/datums/riding.dm b/code/datums/riding.dm index 1d989cc653..0a1f8f9f5d 100644 --- a/code/datums/riding.dm +++ b/code/datums/riding.dm @@ -45,7 +45,7 @@ if(offsetdir == ridden_dir) var/list/diroffsets = offsets[offsetdir] buckled_mob.pixel_x = diroffsets[1] - if(diroffsets.len == 2) + if(diroffsets.len >= 2) buckled_mob.pixel_y = diroffsets[2] if(diroffsets.len == 3) buckled_mob.layer = diroffsets[3] @@ -164,7 +164,7 @@ /datum/riding/janicart/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(-12, 7), "[EAST]" = list(0, 7), "[WEST]" = list( 12, 7)) + return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 7), "[EAST]" = list(-12, 7), "[WEST]" = list( 12, 7)) //scooter /datum/riding/scooter/handle_vehicle_layer() diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index 36883c59fe..c7912c4c6c 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -241,10 +241,4 @@ id = "miracle" suffix = "miracle.dmm" name = "Ordinary Space Tile" - description = "Absolutely nothing strange going on here please move along, plenty more space to see right this way!" - -/datum/map_template/ruin/space/dragoon - id = "dragoon" - suffix = "dragoontomb.dmm" - name = "Sky Bulge Tomb" - description = "A tomb of a dice-loving dragoon in space. Turns out he got too good and jumped too high. Contains the Sky Bulge, which when thrown, warps the thrower." + description = "Absolutely nothing strange going on here please move along, plenty more space to see right this way!" \ No newline at end of file diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 92ee2e6462..f2e1972e23 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -1,15 +1,5 @@ //Largely negative status effects go here, even if they have small benificial effects -/datum/status_effect/sigil_mark //allows the affected target to always trigger sigils while mindless - id = "sigil_mark" - duration = -1 - alert_type = null - var/stat_allowed = DEAD //if owner's stat is below this, will remove itself - -/datum/status_effect/sigil_mark/tick() - if(owner.stat < stat_allowed) - qdel(src) - /datum/status_effect/his_wrath //does minor damage over time unless holding His Grace id = "his_wrath" duration = -1 diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm new file mode 100644 index 0000000000..0946408323 --- /dev/null +++ b/code/datums/status_effects/neutral.dm @@ -0,0 +1,18 @@ +//entirely neutral or internal status effects go here + +/datum/status_effect/sigil_mark //allows the affected target to always trigger sigils while mindless + id = "sigil_mark" + duration = -1 + alert_type = null + var/stat_allowed = DEAD //if owner's stat is below this, will remove itself + +/datum/status_effect/sigil_mark/tick() + if(owner.stat < stat_allowed) + qdel(src) + +/datum/status_effect/crusher_damage //tracks the damage dealt to this mob by kinetic crushers + id = "crusher_damage" + duration = -1 + status_type = STATUS_EFFECT_UNIQUE + alert_type = null + var/total_damage = 0 diff --git a/code/datums/wires/robot.dm b/code/datums/wires/robot.dm index f57933de31..3f2e18e79c 100644 --- a/code/datums/wires/robot.dm +++ b/code/datums/wires/robot.dm @@ -50,9 +50,9 @@ R.show_laws() if(WIRE_LOCKDOWN) R.SetLockdown(!R.lockcharge) // Toggle - if(WIRE_RESET_MODULE) - if(R.has_module()) - R.ResetModule() + if(WIRE_RESET_MODULE) + if(R.has_module()) + R.visible_message("[R]'s module servos twitch.", "Your module display flickers.") /datum/wires/robot/on_cut(wire, mend) var/mob/living/silicon/robot/R = holder @@ -74,3 +74,6 @@ R.visible_message("[R]'s camera lense focuses loudly.", "Your camera lense focuses loudly.") if(WIRE_LOCKDOWN) // Simple lockdown. R.SetLockdown(!mend) + if(WIRE_RESET_MODULE) + if(R.has_module() && !mend) + R.ResetModule() diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index d24e0945dc..da5ecea866 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -1435,8 +1435,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "AI Satellite Atmos" icon_state = "ai" - /area/ai_monitored/turret_protected/aisat/atmos - name = "AI Satellite Atmos" +/area/ai_monitored/turret_protected/aisat/foyer + name = "AI Satellite Foyer" icon_state = "ai" /area/ai_monitored/turret_protected/aisat/service diff --git a/code/game/area/areas/centcom.dm b/code/game/area/areas/centcom.dm index b19ef5a997..65dd6ded5f 100644 --- a/code/game/area/areas/centcom.dm +++ b/code/game/area/areas/centcom.dm @@ -37,6 +37,7 @@ dynamic_lighting = DYNAMIC_LIGHTING_FORCED requires_power = 0 has_gravity = 1 + flags = NONE /area/tdome/arena name = "Thunderdome Arena" @@ -75,6 +76,7 @@ requires_power = 0 has_gravity = 1 noteleport = 1 + flags = NONE //Abductors /area/abductor_ship @@ -83,6 +85,7 @@ requires_power = 0 noteleport = 1 has_gravity = 1 + flags = NONE //Syndicates /area/syndicate_mothership @@ -92,6 +95,7 @@ has_gravity = 1 noteleport = 1 blob_allowed = 0 //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 = NONE /area/syndicate_mothership/control name = "Syndicate Control Room" diff --git a/code/game/atoms.dm.rej b/code/game/atoms.dm.rej deleted file mode 100644 index 28b45c99ab..0000000000 --- a/code/game/atoms.dm.rej +++ /dev/null @@ -1,9 +0,0 @@ -diff a/code/game/atoms.dm b/code/game/atoms.dm (rejected hunks) -@@ -274,6 +274,7 @@ - return - - /atom/proc/ex_act(severity, target) -+ set waitfor = FALSE - contents_explosion(severity, target) - - /atom/proc/blob_act(obj/structure/blob/B) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 069a422480..e292cf5ab3 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -225,7 +225,10 @@ This file contains the arcane tome files. "You [user.blood_volume ? "slice open your arm and ":""]begin drawing a sigil of the Geometer.") if(user.blood_volume) user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick("l_arm", "r_arm")) - if(!do_after(user, initial(rune_to_scribe.scribe_delay), target = get_turf(user))) + var/scribe_mod = initial(rune_to_scribe.scribe_delay) + if(istype(get_turf(user), /turf/open/floor/engine/cult)) + scribe_mod *= 0.5 + if(!do_after(user, scribe_mod, target = get_turf(user))) for(var/V in shields) var/obj/structure/emergency_shield/sanguine/S = V if(S && !QDELETED(S)) diff --git a/code/game/gamemodes/cult/rune_spawn_action.dm b/code/game/gamemodes/cult/rune_spawn_action.dm index 7412a5d6bb..119d507a5e 100644 --- a/code/game/gamemodes/cult/rune_spawn_action.dm +++ b/code/game/gamemodes/cult/rune_spawn_action.dm @@ -46,7 +46,10 @@ if(damage_interrupt && isliving(owner)) var/mob/living/L = owner health = list("health" = L.health) - if(do_after(owner, scribe_time, target = owner, extra_checks = CALLBACK(owner, /mob.proc/break_do_after_checks, health, action_interrupt))) + var/scribe_mod = scribe_time + if(istype(get_turf(owner), /turf/open/floor/engine/cult)) + scribe_mod *= 0.5 + if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, /mob.proc/break_do_after_checks, health, action_interrupt))) var/obj/effect/rune/new_rune = new rune_type(owner.loc) new_rune.keyword = chosen_keyword else diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index c57e9180f5..4c03417aa9 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -1,85 +1,85 @@ - - -/* - * GAMEMODES (by Rastaf0) - * - * In the new mode system all special roles are fully supported. - * You can have proper wizards/traitors/changelings/cultists during any mode. - * Only two things really depends on gamemode: - * 1. Starting roles, equipment and preparations - * 2. Conditions of finishing the round. - * - */ - - -/datum/game_mode - var/name = "invalid" - var/config_tag = null - var/votable = 1 - var/probability = 0 - var/station_was_nuked = 0 //see nuclearbomb.dm and malfunction.dm - var/explosion_in_progress = 0 //sit back and relax - var/round_ends_with_antag_death = 0 //flags the "one verse the station" antags as such - var/list/datum/mind/modePlayer = new - var/list/datum/mind/antag_candidates = list() // List of possible starting antags goes here - var/list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist - var/list/protected_jobs = list() // Jobs that can't be traitors because - var/required_players = 0 - var/maximum_players = -1 // -1 is no maximum, positive numbers limit the selection of a mode on overstaffed stations - var/required_enemies = 0 - var/recommended_enemies = 0 - var/antag_flag = null //preferences flag such as BE_WIZARD that need to be turned on for players to be antag - var/mob/living/living_antag_player = null - var/list/datum/game_mode/replacementmode = null - var/round_converted = 0 //0: round not converted, 1: round going to convert, 2: round converted - var/reroll_friendly //During mode conversion only these are in the running - var/continuous_sanity_checked //Catches some cases where config options could be used to suggest that modes without antagonists should end when all antagonists die - var/enemy_minimum_age = 7 //How many days must players have been playing before they can play this antagonist - - var/announce_span = "warning" //The gamemode's name will be in this span during announcement. - var/announce_text = "This gamemode forgot to set a descriptive text! Uh oh!" //Used to describe a gamemode when it's announced. - - var/const/waittime_l = 600 - var/const/waittime_h = 1800 // started at 1800 - - var/list/datum/station_goal/station_goals = list() - - -/datum/game_mode/proc/announce() //Shows the gamemode's name and a fast description. - to_chat(world, "The gamemode is: [name]!") - to_chat(world, "[announce_text]") - - -///Checks to see if the game can be setup and ran with the current number of players or whatnot. -/datum/game_mode/proc/can_start() - var/playerC = 0 - for(var/mob/dead/new_player/player in GLOB.player_list) - if((player.client)&&(player.ready)) - playerC++ - if(!GLOB.Debug2) - if(playerC < required_players || (maximum_players >= 0 && playerC > maximum_players)) - return 0 - antag_candidates = get_players_for_role(antag_flag) - if(!GLOB.Debug2) - if(antag_candidates.len < required_enemies) - return 0 - return 1 - else - message_admins("DEBUG: GAME STARTING WITHOUT PLAYER NUMBER CHECKS, THIS WILL PROBABLY BREAK SHIT.") - return 1 - - -///Attempts to select players for special roles the mode might have. -/datum/game_mode/proc/pre_setup() - return 1 - - -///Everyone should now be on the station and have their normal gear. This is the place to give the special roles extra things -/datum/game_mode/proc/post_setup(report) //Gamemodes can override the intercept report. Passing TRUE as the argument will force a report. - if(!report) - report = config.intercept - addtimer(CALLBACK(GLOBAL_PROC, .proc/display_roundstart_logout_report), ROUNDSTART_LOGOUT_REPORT_TIME) - + + +/* + * GAMEMODES (by Rastaf0) + * + * In the new mode system all special roles are fully supported. + * You can have proper wizards/traitors/changelings/cultists during any mode. + * Only two things really depends on gamemode: + * 1. Starting roles, equipment and preparations + * 2. Conditions of finishing the round. + * + */ + + +/datum/game_mode + var/name = "invalid" + var/config_tag = null + var/votable = 1 + var/probability = 0 + var/station_was_nuked = 0 //see nuclearbomb.dm and malfunction.dm + var/explosion_in_progress = 0 //sit back and relax + var/round_ends_with_antag_death = 0 //flags the "one verse the station" antags as such + var/list/datum/mind/modePlayer = new + var/list/datum/mind/antag_candidates = list() // List of possible starting antags goes here + var/list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist + var/list/protected_jobs = list() // Jobs that can't be traitors because + var/required_players = 0 + var/maximum_players = -1 // -1 is no maximum, positive numbers limit the selection of a mode on overstaffed stations + var/required_enemies = 0 + var/recommended_enemies = 0 + var/antag_flag = null //preferences flag such as BE_WIZARD that need to be turned on for players to be antag + var/mob/living/living_antag_player = null + var/list/datum/game_mode/replacementmode = null + var/round_converted = 0 //0: round not converted, 1: round going to convert, 2: round converted + var/reroll_friendly //During mode conversion only these are in the running + var/continuous_sanity_checked //Catches some cases where config options could be used to suggest that modes without antagonists should end when all antagonists die + var/enemy_minimum_age = 7 //How many days must players have been playing before they can play this antagonist + + var/announce_span = "warning" //The gamemode's name will be in this span during announcement. + var/announce_text = "This gamemode forgot to set a descriptive text! Uh oh!" //Used to describe a gamemode when it's announced. + + var/const/waittime_l = 600 + var/const/waittime_h = 1800 // started at 1800 + + var/list/datum/station_goal/station_goals = list() + + +/datum/game_mode/proc/announce() //Shows the gamemode's name and a fast description. + to_chat(world, "The gamemode is: [name]!") + to_chat(world, "[announce_text]") + + +///Checks to see if the game can be setup and ran with the current number of players or whatnot. +/datum/game_mode/proc/can_start() + var/playerC = 0 + for(var/mob/dead/new_player/player in GLOB.player_list) + if((player.client)&&(player.ready)) + playerC++ + if(!GLOB.Debug2) + if(playerC < required_players || (maximum_players >= 0 && playerC > maximum_players)) + return 0 + antag_candidates = get_players_for_role(antag_flag) + if(!GLOB.Debug2) + if(antag_candidates.len < required_enemies) + return 0 + return 1 + else + message_admins("DEBUG: GAME STARTING WITHOUT PLAYER NUMBER CHECKS, THIS WILL PROBABLY BREAK SHIT.") + return 1 + + +///Attempts to select players for special roles the mode might have. +/datum/game_mode/proc/pre_setup() + return 1 + + +///Everyone should now be on the station and have their normal gear. This is the place to give the special roles extra things +/datum/game_mode/proc/post_setup(report) //Gamemodes can override the intercept report. Passing TRUE as the argument will force a report. + if(!report) + report = config.intercept + addtimer(CALLBACK(GLOBAL_PROC, .proc/display_roundstart_logout_report), ROUNDSTART_LOGOUT_REPORT_TIME) + if(SSdbcore.Connect()) var/sql if(SSticker && SSticker.mode) @@ -91,478 +91,477 @@ 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() - if(report) - addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h)) - generate_station_goals() - GLOB.start_state = new /datum/station_state() - GLOB.start_state.count(1) - return 1 - - -///Handles late-join antag assignments -/datum/game_mode/proc/make_antag_chance(mob/living/carbon/human/character) - if(replacementmode && round_converted == 2) - replacementmode.make_antag_chance(character) - return - - -///Allows rounds to basically be "rerolled" should the initial premise fall through. Also known as mulligan antags. -/datum/game_mode/proc/convert_roundtype() - set waitfor = FALSE - var/list/living_crew = list() - - for(var/mob/Player in GLOB.mob_list) - if(Player.mind && Player.stat != DEAD && !isnewplayer(Player) &&!isbrain(Player)) - living_crew += Player - if(living_crew.len / GLOB.joined_player_list.len <= config.midround_antag_life_check) //If a lot of the player base died, we start fresh - message_admins("Convert_roundtype failed due to too many dead people. Limit is [config.midround_antag_life_check * 100]% living crew") - return null - - var/list/datum/game_mode/runnable_modes = config.get_runnable_midround_modes(living_crew.len) - var/list/datum/game_mode/usable_modes = list() - for(var/datum/game_mode/G in runnable_modes) - if(G.reroll_friendly) - usable_modes += G - else - qdel(G) - - if(!usable_modes) - message_admins("Convert_roundtype failed due to no valid modes to convert to. Please report this error to the Coders.") - return null - - replacementmode = pickweight(usable_modes) - - switch(SSshuttle.emergency.mode) //Rounds on the verge of ending don't get new antags, they just run out - if(SHUTTLE_STRANDED, SHUTTLE_ESCAPE) - return 1 - if(SHUTTLE_CALL) - if(SSshuttle.emergency.timeLeft(1) < initial(SSshuttle.emergencyCallTime)*0.5) - return 1 - - if(world.time >= (config.midround_antag_time_check * 600)) - message_admins("Convert_roundtype failed due to round length. Limit is [config.midround_antag_time_check] minutes.") - return null - - var/list/antag_candidates = list() - - for(var/mob/living/carbon/human/H in living_crew) - if(H.client && H.client.prefs.allow_midround_antag) - antag_candidates += H - - if(!antag_candidates) - message_admins("Convert_roundtype failed due to no antag candidates.") - return null - - antag_candidates = shuffle(antag_candidates) - - if(config.protect_roles_from_antagonist) - replacementmode.restricted_jobs += replacementmode.protected_jobs - if(config.protect_assistant_from_antagonist) - replacementmode.restricted_jobs += "Assistant" - - message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit stop the creation of antags or end the round now.") - - . = 1 - sleep(rand(600,1800)) - //somewhere between 1 and 3 minutes from now - if(!config.midround_antag[SSticker.mode.config_tag]) - round_converted = 0 - return 1 - for(var/mob/living/carbon/human/H in antag_candidates) - replacementmode.make_antag_chance(H) - round_converted = 2 - message_admins("-- IMPORTANT: The roundtype has been converted to [replacementmode.name], antagonists may have been created! --") - - -///Called by the gameSSticker -/datum/game_mode/process() - return 0 - - -/datum/game_mode/proc/check_finished() //to be called by SSticker - if(replacementmode && round_converted == 2) - return replacementmode.check_finished() - if(SSshuttle.emergency && (SSshuttle.emergency.mode == SHUTTLE_ENDGAME)) - return TRUE - if(station_was_nuked) - return TRUE - if(!round_converted && (!config.continuous[config_tag] || (config.continuous[config_tag] && config.midround_antag[config_tag]))) //Non-continuous or continous with replacement antags - if(!continuous_sanity_checked) //make sure we have antags to be checking in the first place - for(var/mob/Player in GLOB.mob_list) - if(Player.mind) - if(Player.mind.special_role) - continuous_sanity_checked = 1 - return 0 - if(!continuous_sanity_checked) - message_admins("The roundtype ([config_tag]) has no antagonists, continuous round has been defaulted to on and midround_antag has been defaulted to off.") - config.continuous[config_tag] = 1 - config.midround_antag[config_tag] = 0 - SSshuttle.clearHostileEnvironment(src) - return 0 - - - if(living_antag_player && living_antag_player.mind && isliving(living_antag_player) && living_antag_player.stat != DEAD && !isnewplayer(living_antag_player) &&!isbrain(living_antag_player)) - return 0 //A resource saver: once we find someone who has to die for all antags to be dead, we can just keep checking them, cycling over everyone only when we lose our mark. - - for(var/mob/Player in GLOB.living_mob_list) - if(Player.mind && Player.stat != DEAD && !isnewplayer(Player) &&!isbrain(Player)) - if(Player.mind.special_role) //Someone's still antaging! - living_antag_player = Player - return 0 - - if(!config.continuous[config_tag]) - return 1 - - else - round_converted = convert_roundtype() - if(!round_converted) - if(round_ends_with_antag_death) - return 1 - else - config.midround_antag[config_tag] = 0 - return 0 - - return 0 - - -/datum/game_mode/proc/declare_completion() - var/clients = 0 - var/surviving_humans = 0 - var/surviving_total = 0 - var/ghosts = 0 - var/escaped_humans = 0 - var/escaped_total = 0 - - for(var/mob/M in GLOB.player_list) - if(M.client) - clients++ - if(ishuman(M)) - if(!M.stat) - surviving_humans++ + + if(report) + addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h)) + generate_station_goals() + return 1 + + +///Handles late-join antag assignments +/datum/game_mode/proc/make_antag_chance(mob/living/carbon/human/character) + if(replacementmode && round_converted == 2) + replacementmode.make_antag_chance(character) + return + + +///Allows rounds to basically be "rerolled" should the initial premise fall through. Also known as mulligan antags. +/datum/game_mode/proc/convert_roundtype() + set waitfor = FALSE + var/list/living_crew = list() + + for(var/mob/Player in GLOB.mob_list) + if(Player.mind && Player.stat != DEAD && !isnewplayer(Player) &&!isbrain(Player)) + living_crew += Player + if(living_crew.len / GLOB.joined_player_list.len <= config.midround_antag_life_check) //If a lot of the player base died, we start fresh + message_admins("Convert_roundtype failed due to too many dead people. Limit is [config.midround_antag_life_check * 100]% living crew") + return null + + var/list/datum/game_mode/runnable_modes = config.get_runnable_midround_modes(living_crew.len) + var/list/datum/game_mode/usable_modes = list() + for(var/datum/game_mode/G in runnable_modes) + if(G.reroll_friendly) + usable_modes += G + else + qdel(G) + + if(!usable_modes) + message_admins("Convert_roundtype failed due to no valid modes to convert to. Please report this error to the Coders.") + return null + + replacementmode = pickweight(usable_modes) + + switch(SSshuttle.emergency.mode) //Rounds on the verge of ending don't get new antags, they just run out + if(SHUTTLE_STRANDED, SHUTTLE_ESCAPE) + return 1 + if(SHUTTLE_CALL) + if(SSshuttle.emergency.timeLeft(1) < initial(SSshuttle.emergencyCallTime)*0.5) + return 1 + + if(world.time >= (config.midround_antag_time_check * 600)) + message_admins("Convert_roundtype failed due to round length. Limit is [config.midround_antag_time_check] minutes.") + return null + + var/list/antag_candidates = list() + + for(var/mob/living/carbon/human/H in living_crew) + if(H.client && H.client.prefs.allow_midround_antag) + antag_candidates += H + + if(!antag_candidates) + message_admins("Convert_roundtype failed due to no antag candidates.") + return null + + antag_candidates = shuffle(antag_candidates) + + if(config.protect_roles_from_antagonist) + replacementmode.restricted_jobs += replacementmode.protected_jobs + if(config.protect_assistant_from_antagonist) + replacementmode.restricted_jobs += "Assistant" + + message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit stop the creation of antags or end the round now.") + + . = 1 + sleep(rand(600,1800)) + //somewhere between 1 and 3 minutes from now + if(!config.midround_antag[SSticker.mode.config_tag]) + round_converted = 0 + return 1 + for(var/mob/living/carbon/human/H in antag_candidates) + replacementmode.make_antag_chance(H) + round_converted = 2 + message_admins("-- IMPORTANT: The roundtype has been converted to [replacementmode.name], antagonists may have been created! --") + + +///Called by the gameSSticker +/datum/game_mode/process() + return 0 + + +/datum/game_mode/proc/check_finished() //to be called by SSticker + if(replacementmode && round_converted == 2) + return replacementmode.check_finished() + if(SSshuttle.emergency && (SSshuttle.emergency.mode == SHUTTLE_ENDGAME)) + return TRUE + if(station_was_nuked) + return TRUE + if(!round_converted && (!config.continuous[config_tag] || (config.continuous[config_tag] && config.midround_antag[config_tag]))) //Non-continuous or continous with replacement antags + if(!continuous_sanity_checked) //make sure we have antags to be checking in the first place + for(var/mob/Player in GLOB.mob_list) + if(Player.mind) + if(Player.mind.special_role) + continuous_sanity_checked = 1 + return 0 + if(!continuous_sanity_checked) + message_admins("The roundtype ([config_tag]) has no antagonists, continuous round has been defaulted to on and midround_antag has been defaulted to off.") + config.continuous[config_tag] = 1 + config.midround_antag[config_tag] = 0 + SSshuttle.clearHostileEnvironment(src) + return 0 + + + if(living_antag_player && living_antag_player.mind && isliving(living_antag_player) && living_antag_player.stat != DEAD && !isnewplayer(living_antag_player) &&!isbrain(living_antag_player)) + return 0 //A resource saver: once we find someone who has to die for all antags to be dead, we can just keep checking them, cycling over everyone only when we lose our mark. + + for(var/mob/Player in GLOB.living_mob_list) + if(Player.mind && Player.stat != DEAD && !isnewplayer(Player) &&!isbrain(Player)) + if(Player.mind.special_role) //Someone's still antaging! + living_antag_player = Player + return 0 + + if(!config.continuous[config_tag]) + return 1 + + else + round_converted = convert_roundtype() + if(!round_converted) + if(round_ends_with_antag_death) + return 1 + else + config.midround_antag[config_tag] = 0 + return 0 + + return 0 + + +/datum/game_mode/proc/declare_completion() + var/clients = 0 + var/surviving_humans = 0 + var/surviving_total = 0 + var/ghosts = 0 + var/escaped_humans = 0 + var/escaped_total = 0 + + for(var/mob/M in GLOB.player_list) + if(M.client) + clients++ + if(ishuman(M)) + if(!M.stat) + surviving_humans++ if(M.z == ZLEVEL_CENTCOM) - escaped_humans++ - if(!M.stat) - surviving_total++ + escaped_humans++ + if(!M.stat) + surviving_total++ if(M.z == ZLEVEL_CENTCOM) - escaped_total++ - - - if(isobserver(M)) - ghosts++ - - if(clients > 0) - SSblackbox.set_val("round_end_clients",clients) - if(ghosts > 0) - SSblackbox.set_val("round_end_ghosts",ghosts) - if(surviving_humans > 0) - SSblackbox.set_val("survived_human",surviving_humans) - if(surviving_total > 0) - SSblackbox.set_val("survived_total",surviving_total) - if(escaped_humans > 0) - SSblackbox.set_val("escaped_human",escaped_humans) - if(escaped_total > 0) - SSblackbox.set_val("escaped_total",escaped_total) - send2irc("Server", "Round just ended.") - if(cult.len && !istype(SSticker.mode,/datum/game_mode/cult)) - datum_cult_completion() - return 0 - - -/datum/game_mode/proc/check_win() //universal trigger to be called at mob death, nuke explosion, etc. To be called from everywhere. - return 0 - - -/datum/game_mode/proc/send_intercept() - var/intercepttext = "Central Command Status Summary
" - intercepttext += "Central Command has intercepted and partially decoded a Syndicate transmission with vital information regarding their movements. The following report outlines the most \ - likely threats to appear in your sector." - var/list/possible_modes = list() - possible_modes.Add("blob", "changeling", "clock_cult", "cult", "extended", "gang", "malf", "nuclear", "revolution", "traitor", "wizard") - possible_modes -= name //remove the current gamemode to prevent it from being randomly deleted, it will be readded later - - for(var/i in 1 to 6) //Remove a few modes to leave four - possible_modes -= pick(possible_modes) - - possible_modes |= name //Re-add the actual gamemode - the intercept will thus always have the correct mode in its list - possible_modes = shuffle(possible_modes) //Meta prevention - - var/datum/intercept_text/i_text = new /datum/intercept_text - for(var/V in possible_modes) - intercepttext += i_text.build(V) - - if(station_goals.len) - intercepttext += "
Special Orders for [station_name()]:" - for(var/datum/station_goal/G in station_goals) - G.on_report() - intercepttext += G.get_report() - - print_command_report(intercepttext, "Central Command Status Summary", announce=FALSE) - priority_announce("A summary has been copied and printed to all communications consoles.", "Enemy communication intercepted. Security level elevated.", 'sound/AI/intercept.ogg') - if(GLOB.security_level < SEC_LEVEL_BLUE) - set_security_level(SEC_LEVEL_BLUE) - - -/datum/game_mode/proc/get_players_for_role(role) - var/list/players = list() - var/list/candidates = list() - var/list/drafted = list() - var/datum/mind/applicant = null - - // Ultimate randomizing code right here - for(var/mob/dead/new_player/player in GLOB.player_list) - if(player.client && player.ready) - players += player - - // Shuffling, the players list is now ping-independent!!! - // Goodbye antag dante - players = shuffle(players) - - for(var/mob/dead/new_player/player in players) - if(player.client && player.ready) - if(role in player.client.prefs.be_special) - if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, role)) //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 - - if(restricted_jobs) - for(var/datum/mind/player in candidates) - for(var/job in restricted_jobs) // Remove people who want to be antagonist but have a job already that precludes it - if(player.assigned_role == job) - candidates -= player - - if(candidates.len < recommended_enemies) - for(var/mob/dead/new_player/player in players) - if(player.client && player.ready) - if(!(role in player.client.prefs.be_special)) // We don't have enough people who want to be antagonist, make a seperate list of people who don't want to be one - if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans - drafted += player.mind - - if(restricted_jobs) - for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist - for(var/job in restricted_jobs) - if(player.assigned_role == job) - drafted -= player - - drafted = shuffle(drafted) // Will hopefully increase randomness, Donkie - - while(candidates.len < recommended_enemies) // Pick randomlly just the number of people we need and add them to our list of candidates - if(drafted.len > 0) - applicant = pick(drafted) - if(applicant) - candidates += applicant - drafted.Remove(applicant) - - else // Not enough scrubs, ABORT ABORT ABORT - break -/* - if(candidates.len < recommended_enemies && override_jobbans) //If we still don't have enough people, we're going to start drafting banned people. - for(var/mob/dead/new_player/player in players) - if (player.client && player.ready) - if(jobban_isbanned(player, "Syndicate") || jobban_isbanned(player, roletext)) //Nodrak/Carn: Antag Job-bans - drafted += player.mind -*/ - if(restricted_jobs) - for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist - for(var/job in restricted_jobs) - if(player.assigned_role == job) - drafted -= player - - drafted = shuffle(drafted) // Will hopefully increase randomness, Donkie - - while(candidates.len < recommended_enemies) // Pick randomlly just the number of people we need and add them to our list of candidates - if(drafted.len > 0) - applicant = pick(drafted) - if(applicant) - candidates += applicant - drafted.Remove(applicant) - - else // Not enough scrubs, ABORT ABORT ABORT - break - - return candidates // Returns: The number of people who had the antagonist role set to yes, regardless of recomended_enemies, if that number is greater than recommended_enemies - // recommended_enemies if the number of people with that role set to yes is less than recomended_enemies, - // Less if there are not enough valid players in the game entirely to make recommended_enemies. - -/* -/datum/game_mode/proc/check_player_role_pref(var/role, var/mob/dead/new_player/player) - if(player.preferences.be_special & role) - return 1 - return 0 -*/ - -/datum/game_mode/proc/num_players() - . = 0 - for(var/mob/dead/new_player/P in GLOB.player_list) - if(P.client && P.ready) - . ++ - -/////////////////////////////////// -//Keeps track of all living heads// -/////////////////////////////////// -/datum/game_mode/proc/get_living_heads() - . = list() - for(var/mob/living/carbon/human/player in GLOB.mob_list) - if(player.stat != DEAD && player.mind && (player.mind.assigned_role in GLOB.command_positions)) - . |= player.mind - - -//////////////////////////// -//Keeps track of all heads// -//////////////////////////// -/datum/game_mode/proc/get_all_heads() - . = list() - for(var/mob/player in GLOB.mob_list) - if(player.mind && (player.mind.assigned_role in GLOB.command_positions)) - . |= player.mind - -////////////////////////////////////////////// -//Keeps track of all living security members// -////////////////////////////////////////////// -/datum/game_mode/proc/get_living_sec() - . = list() - for(var/mob/living/carbon/human/player in GLOB.mob_list) - if(player.stat != DEAD && player.mind && (player.mind.assigned_role in GLOB.security_positions)) - . |= player.mind - -//////////////////////////////////////// -//Keeps track of all security members// -//////////////////////////////////////// -/datum/game_mode/proc/get_all_sec() - . = list() - for(var/mob/living/carbon/human/player in GLOB.mob_list) - if(player.mind && (player.mind.assigned_role in GLOB.security_positions)) - . |= player.mind - -////////////////////////// -//Reports player logouts// -////////////////////////// -/proc/display_roundstart_logout_report() - var/msg = "Roundstart logout report\n\n" - for(var/mob/living/L in GLOB.mob_list) - - if(L.ckey) - var/found = 0 - for(var/client/C in GLOB.clients) - if(C.ckey == L.ckey) - found = 1 - break - if(!found) - msg += "[L.name] ([L.ckey]), the [L.job] (Disconnected)\n" - - - if(L.ckey && L.client) - if(L.client.inactivity >= (ROUNDSTART_LOGOUT_REPORT_TIME / 2)) //Connected, but inactive (alt+tabbed or something) - msg += "[L.name] ([L.ckey]), the [L.job] (Connected, Inactive)\n" - continue //AFK client - if(L.stat) - if(L.suiciding) //Suicider - msg += "[L.name] ([L.ckey]), the [L.job] (Suicide)\n" - continue //Disconnected client - if(L.stat == UNCONSCIOUS) - msg += "[L.name] ([L.ckey]), the [L.job] (Dying)\n" - continue //Unconscious - if(L.stat == DEAD) - msg += "[L.name] ([L.ckey]), the [L.job] (Dead)\n" - continue //Dead - - continue //Happy connected client - for(var/mob/dead/observer/D in GLOB.mob_list) - if(D.mind && D.mind.current == L) - if(L.stat == DEAD) - if(L.suiciding) //Suicider - msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Suicide)\n" - continue //Disconnected client - else - msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Dead)\n" - continue //Dead mob, ghost abandoned - else - if(D.can_reenter_corpse) - continue //Adminghost, or cult/wizard ghost - else - msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Ghosted)\n" - continue //Ghosted while alive - - - - for(var/mob/M in GLOB.mob_list) - if(M.client && M.client.holder) - to_chat(M, msg) - -/datum/game_mode/proc/printplayer(datum/mind/ply, fleecheck) - var/text = "
[ply.key] was [ply.name] the [ply.assigned_role] and" - if(ply.current) - if(ply.current.stat == DEAD) - text += " died" - else - text += " survived" - if(fleecheck && ply.current.z > ZLEVEL_STATION) - text += " while fleeing the station" - if(ply.current.real_name != ply.name) - text += " as [ply.current.real_name]" - else - text += " had their body destroyed" - return text - -/datum/game_mode/proc/printobjectives(datum/mind/ply) - var/text = "" - var/count = 1 - for(var/datum/objective/objective in ply.objectives) - if(objective.check_completion()) - text += "
Objective #[count]: [objective.explanation_text] Success!" - else - text += "
Objective #[count]: [objective.explanation_text] Fail." - count++ - return text - -//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1 -/datum/game_mode/proc/age_check(client/C) - if(get_remaining_days(C) == 0) - return 1 //Available in 0 days = available right now = player is old enough to play. - return 0 - - -/datum/game_mode/proc/get_remaining_days(client/C) - if(!C) - return 0 - if(!config.use_age_restriction_for_jobs) - return 0 - if(!isnum(C.player_age)) - return 0 //This is only a number if the db connection is established, otherwise it is text: "Requires database", meaning these restrictions cannot be enforced - if(!isnum(enemy_minimum_age)) - return 0 - - return max(0, enemy_minimum_age - C.player_age) - -/datum/game_mode/proc/replace_jobbaned_player(mob/living/M, role_type, pref) - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [role_type]?", "[role_type]", null, pref, 50, M) - var/mob/dead/observer/theghost = null - if(candidates.len) - theghost = pick(candidates) - to_chat(M, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!") - message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(M)]) to replace a jobbaned player.") - M.ghostize(0) - M.key = theghost.key - -/datum/game_mode/proc/remove_antag_for_borging(datum/mind/newborgie) - SSticker.mode.remove_cultist(newborgie, 0, 0) - SSticker.mode.remove_revolutionary(newborgie, 0) - SSticker.mode.remove_gangster(newborgie, 0, remove_bosses=1) - -/datum/game_mode/proc/generate_station_goals() - var/list/possible = list() - for(var/T in subtypesof(/datum/station_goal)) - var/datum/station_goal/G = T - if(config_tag in initial(G.gamemode_blacklist)) - continue - possible += T - var/goal_weights = 0 - while(possible.len && goal_weights < STATION_GOAL_BUDGET) - var/datum/station_goal/picked = pick_n_take(possible) - goal_weights += initial(picked.weight) - station_goals += new picked - - -/datum/game_mode/proc/declare_station_goal_completion() - for(var/V in station_goals) - var/datum/station_goal/G = V - G.print_result() + escaped_total++ + + + if(isobserver(M)) + ghosts++ + + if(clients > 0) + SSblackbox.set_val("round_end_clients",clients) + if(ghosts > 0) + SSblackbox.set_val("round_end_ghosts",ghosts) + if(surviving_humans > 0) + SSblackbox.set_val("survived_human",surviving_humans) + if(surviving_total > 0) + SSblackbox.set_val("survived_total",surviving_total) + if(escaped_humans > 0) + SSblackbox.set_val("escaped_human",escaped_humans) + if(escaped_total > 0) + SSblackbox.set_val("escaped_total",escaped_total) + send2irc("Server", "Round just ended.") + if(cult.len && !istype(SSticker.mode,/datum/game_mode/cult)) + datum_cult_completion() + return 0 + + +/datum/game_mode/proc/check_win() //universal trigger to be called at mob death, nuke explosion, etc. To be called from everywhere. + return 0 + + +/datum/game_mode/proc/send_intercept() + var/intercepttext = "Central Command Status Summary
" + intercepttext += "Central Command has intercepted and partially decoded a Syndicate transmission with vital information regarding their movements. The following report outlines the most \ + likely threats to appear in your sector." + var/list/possible_modes = list() + possible_modes.Add("blob", "changeling", "clock_cult", "cult", "extended", "gang", "malf", "nuclear", "revolution", "traitor", "wizard") + possible_modes -= name //remove the current gamemode to prevent it from being randomly deleted, it will be readded later + + for(var/i in 1 to 6) //Remove a few modes to leave four + possible_modes -= pick(possible_modes) + + possible_modes |= name //Re-add the actual gamemode - the intercept will thus always have the correct mode in its list + possible_modes = shuffle(possible_modes) //Meta prevention + + var/datum/intercept_text/i_text = new /datum/intercept_text + for(var/V in possible_modes) + intercepttext += i_text.build(V) + + if(station_goals.len) + intercepttext += "
Special Orders for [station_name()]:" + for(var/datum/station_goal/G in station_goals) + G.on_report() + intercepttext += G.get_report() + + print_command_report(intercepttext, "Central Command Status Summary", announce=FALSE) + priority_announce("A summary has been copied and printed to all communications consoles.", "Enemy communication intercepted. Security level elevated.", 'sound/AI/intercept.ogg') + if(GLOB.security_level < SEC_LEVEL_BLUE) + set_security_level(SEC_LEVEL_BLUE) + + +/datum/game_mode/proc/get_players_for_role(role) + var/list/players = list() + var/list/candidates = list() + var/list/drafted = list() + var/datum/mind/applicant = null + + // Ultimate randomizing code right here + for(var/mob/dead/new_player/player in GLOB.player_list) + if(player.client && player.ready) + players += player + + // Shuffling, the players list is now ping-independent!!! + // Goodbye antag dante + players = shuffle(players) + + for(var/mob/dead/new_player/player in players) + if(player.client && player.ready) + if(role in player.client.prefs.be_special) + if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, role)) //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 + + if(restricted_jobs) + for(var/datum/mind/player in candidates) + for(var/job in restricted_jobs) // Remove people who want to be antagonist but have a job already that precludes it + if(player.assigned_role == job) + candidates -= player + + if(candidates.len < recommended_enemies) + for(var/mob/dead/new_player/player in players) + if(player.client && player.ready) + if(!(role in player.client.prefs.be_special)) // We don't have enough people who want to be antagonist, make a seperate list of people who don't want to be one + if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans + drafted += player.mind + + if(restricted_jobs) + for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist + for(var/job in restricted_jobs) + if(player.assigned_role == job) + drafted -= player + + drafted = shuffle(drafted) // Will hopefully increase randomness, Donkie + + while(candidates.len < recommended_enemies) // Pick randomlly just the number of people we need and add them to our list of candidates + if(drafted.len > 0) + applicant = pick(drafted) + if(applicant) + candidates += applicant + drafted.Remove(applicant) + + else // Not enough scrubs, ABORT ABORT ABORT + break +/* + if(candidates.len < recommended_enemies && override_jobbans) //If we still don't have enough people, we're going to start drafting banned people. + for(var/mob/dead/new_player/player in players) + if (player.client && player.ready) + if(jobban_isbanned(player, "Syndicate") || jobban_isbanned(player, roletext)) //Nodrak/Carn: Antag Job-bans + drafted += player.mind +*/ + if(restricted_jobs) + for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist + for(var/job in restricted_jobs) + if(player.assigned_role == job) + drafted -= player + + drafted = shuffle(drafted) // Will hopefully increase randomness, Donkie + + while(candidates.len < recommended_enemies) // Pick randomlly just the number of people we need and add them to our list of candidates + if(drafted.len > 0) + applicant = pick(drafted) + if(applicant) + candidates += applicant + drafted.Remove(applicant) + + else // Not enough scrubs, ABORT ABORT ABORT + break + + return candidates // Returns: The number of people who had the antagonist role set to yes, regardless of recomended_enemies, if that number is greater than recommended_enemies + // recommended_enemies if the number of people with that role set to yes is less than recomended_enemies, + // Less if there are not enough valid players in the game entirely to make recommended_enemies. + +/* +/datum/game_mode/proc/check_player_role_pref(var/role, var/mob/dead/new_player/player) + if(player.preferences.be_special & role) + return 1 + return 0 +*/ + +/datum/game_mode/proc/num_players() + . = 0 + for(var/mob/dead/new_player/P in GLOB.player_list) + if(P.client && P.ready) + . ++ + +/////////////////////////////////// +//Keeps track of all living heads// +/////////////////////////////////// +/datum/game_mode/proc/get_living_heads() + . = list() + for(var/mob/living/carbon/human/player in GLOB.mob_list) + if(player.stat != DEAD && player.mind && (player.mind.assigned_role in GLOB.command_positions)) + . |= player.mind + + +//////////////////////////// +//Keeps track of all heads// +//////////////////////////// +/datum/game_mode/proc/get_all_heads() + . = list() + for(var/mob/player in GLOB.mob_list) + if(player.mind && (player.mind.assigned_role in GLOB.command_positions)) + . |= player.mind + +////////////////////////////////////////////// +//Keeps track of all living security members// +////////////////////////////////////////////// +/datum/game_mode/proc/get_living_sec() + . = list() + for(var/mob/living/carbon/human/player in GLOB.mob_list) + if(player.stat != DEAD && player.mind && (player.mind.assigned_role in GLOB.security_positions)) + . |= player.mind + +//////////////////////////////////////// +//Keeps track of all security members// +//////////////////////////////////////// +/datum/game_mode/proc/get_all_sec() + . = list() + for(var/mob/living/carbon/human/player in GLOB.mob_list) + if(player.mind && (player.mind.assigned_role in GLOB.security_positions)) + . |= player.mind + +////////////////////////// +//Reports player logouts// +////////////////////////// +/proc/display_roundstart_logout_report() + var/msg = "Roundstart logout report\n\n" + for(var/mob/living/L in GLOB.mob_list) + + if(L.ckey) + var/found = 0 + for(var/client/C in GLOB.clients) + if(C.ckey == L.ckey) + found = 1 + break + if(!found) + msg += "[L.name] ([L.ckey]), the [L.job] (Disconnected)\n" + + + if(L.ckey && L.client) + if(L.client.inactivity >= (ROUNDSTART_LOGOUT_REPORT_TIME / 2)) //Connected, but inactive (alt+tabbed or something) + msg += "[L.name] ([L.ckey]), the [L.job] (Connected, Inactive)\n" + continue //AFK client + if(L.stat) + if(L.suiciding) //Suicider + msg += "[L.name] ([L.ckey]), the [L.job] (Suicide)\n" + continue //Disconnected client + if(L.stat == UNCONSCIOUS) + msg += "[L.name] ([L.ckey]), the [L.job] (Dying)\n" + continue //Unconscious + if(L.stat == DEAD) + msg += "[L.name] ([L.ckey]), the [L.job] (Dead)\n" + continue //Dead + + continue //Happy connected client + for(var/mob/dead/observer/D in GLOB.mob_list) + if(D.mind && D.mind.current == L) + if(L.stat == DEAD) + if(L.suiciding) //Suicider + msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Suicide)\n" + continue //Disconnected client + else + msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Dead)\n" + continue //Dead mob, ghost abandoned + else + if(D.can_reenter_corpse) + continue //Adminghost, or cult/wizard ghost + else + msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Ghosted)\n" + continue //Ghosted while alive + + + + for(var/mob/M in GLOB.mob_list) + if(M.client && M.client.holder) + to_chat(M, msg) + +/datum/game_mode/proc/printplayer(datum/mind/ply, fleecheck) + var/text = "
[ply.key] was [ply.name] the [ply.assigned_role] and" + if(ply.current) + if(ply.current.stat == DEAD) + text += " died" + else + text += " survived" + if(fleecheck && ply.current.z > ZLEVEL_STATION) + text += " while fleeing the station" + if(ply.current.real_name != ply.name) + text += " as [ply.current.real_name]" + else + text += " had their body destroyed" + return text + +/datum/game_mode/proc/printobjectives(datum/mind/ply) + var/text = "" + var/count = 1 + for(var/datum/objective/objective in ply.objectives) + if(objective.check_completion()) + text += "
Objective #[count]: [objective.explanation_text] Success!" + else + text += "
Objective #[count]: [objective.explanation_text] Fail." + count++ + return text + +//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1 +/datum/game_mode/proc/age_check(client/C) + if(get_remaining_days(C) == 0) + return 1 //Available in 0 days = available right now = player is old enough to play. + return 0 + + +/datum/game_mode/proc/get_remaining_days(client/C) + if(!C) + return 0 + if(!config.use_age_restriction_for_jobs) + return 0 + if(!isnum(C.player_age)) + return 0 //This is only a number if the db connection is established, otherwise it is text: "Requires database", meaning these restrictions cannot be enforced + if(!isnum(enemy_minimum_age)) + return 0 + + return max(0, enemy_minimum_age - C.player_age) + +/datum/game_mode/proc/replace_jobbaned_player(mob/living/M, role_type, pref) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [role_type]?", "[role_type]", null, pref, 50, M) + var/mob/dead/observer/theghost = null + if(candidates.len) + theghost = pick(candidates) + to_chat(M, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!") + message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(M)]) to replace a jobbaned player.") + M.ghostize(0) + M.key = theghost.key + +/datum/game_mode/proc/remove_antag_for_borging(datum/mind/newborgie) + SSticker.mode.remove_cultist(newborgie, 0, 0) + SSticker.mode.remove_revolutionary(newborgie, 0) + SSticker.mode.remove_gangster(newborgie, 0, remove_bosses=1) + +/datum/game_mode/proc/generate_station_goals() + var/list/possible = list() + for(var/T in subtypesof(/datum/station_goal)) + var/datum/station_goal/G = T + if(config_tag in initial(G.gamemode_blacklist)) + continue + possible += T + var/goal_weights = 0 + while(possible.len && goal_weights < STATION_GOAL_BUDGET) + var/datum/station_goal/picked = pick_n_take(possible) + goal_weights += initial(picked.weight) + station_goals += new picked + + +/datum/game_mode/proc/declare_station_goal_completion() + for(var/V in station_goals) + var/datum/station_goal/G = V + G.print_result() diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm index a961ec48b1..8b0903f4a6 100644 --- a/code/game/gamemodes/gang/dominator.dm +++ b/code/game/gamemodes/gang/dominator.dm @@ -1,5 +1,6 @@ #define DOM_BLOCKED_SPAM_CAP 6 #define DOM_REQUIRED_TURFS 30 +#define DOM_HULK_HITS_REQUIRED 10 /obj/machinery/dominator name = "dominator" @@ -20,6 +21,9 @@ var/datum/effect_system/spark_spread/spark_system var/obj/effect/countdown/dominator/countdown +/obj/machinery/dominator/hulk_damage() + return (max_integrity - integrity_failure) / DOM_HULK_HITS_REQUIRED + /proc/dominator_excessive_walls(atom/A) var/open = 0 for(var/turf/T in view(3, A)) @@ -33,13 +37,14 @@ /obj/machinery/dominator/tesla_act() qdel(src) -/obj/machinery/dominator/New() - ..() +/obj/machinery/dominator/Initialize() + . = ..() set_light(2) GLOB.poi_list |= src spark_system = new spark_system.set_up(5, TRUE, src) countdown = new(src) + update_icon() /obj/machinery/dominator/examine(mob/user) ..() @@ -103,8 +108,23 @@ spark_system.start() else if(!(stat & BROKEN)) spark_system.start() - cut_overlays() + update_icon() + +/obj/machinery/dominator/update_icon() + cut_overlays() + if(!(stat & BROKEN)) + icon_state = "dominator-active" + if(operating) + var/mutable_appearance/dominator_overlay = mutable_appearance('icons/obj/machines/dominator.dmi', "dominator-overlay") + if(gang) + dominator_overlay.color = gang.color_hex + add_overlay(dominator_overlay) + else + icon_state = "dominator" + if(obj_integrity/max_integrity < 0.66) add_overlay("damage") + else + icon_state = "dominator-broken" /obj/machinery/dominator/obj_break(damage_flag) if(!(stat & BROKEN) && !(flags & NODECONSTRUCT)) @@ -142,10 +162,9 @@ gang.message_gangtools("Hostile takeover cancelled: Dominator is no longer operational.[gang.dom_attempts ? " You have [gang.dom_attempts] attempt remaining." : " The station network will have likely blocked any more attempts by us."]",1,1) set_light(0) - icon_state = "dominator-broken" - cut_overlays() operating = 0 stat |= BROKEN + update_icon() STOP_PROCESSING(SSmachines, src) /obj/machinery/dominator/Destroy() @@ -196,9 +215,9 @@ priority_announce("Network breach detected in [locname]. The [gang.name] Gang is attempting to seize control of the station!","Network Alert") gang.domination() SSshuttle.registerHostileEnvironment(src) - src.name = "[gang.name] Gang [src.name]" + name = "[gang.name] Gang [name]" operating = 1 - icon_state = "dominator-[gang.color]" + update_icon() countdown.color = gang.color_hex countdown.start() diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index fc1ab12c6c..d6aa1830f2 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -75,7 +75,7 @@ /datum/gang_item/clothing/hands, /datum/gang_item/clothing/belt, - /datum/gang_item/weapon/shuriken, + /datum/gang_item/weapon/shuriken, /datum/gang_item/weapon/switchblade, /datum/gang_item/weapon/improvised, /datum/gang_item/weapon/ammo/improvised_ammo, diff --git a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm index 1145bd2a66..dae3c85be1 100644 --- a/code/game/gamemodes/gang/gang_items.dm +++ b/code/game/gamemodes/gang/gang_items.dm @@ -111,7 +111,7 @@ /datum/gang_item/clothing/hat name = "Pimp Hat" id = "hat" - cost = 18 + cost = 16 item_path = /obj/item/clothing/head/collectable/petehat/gang /obj/item/clothing/head/collectable/petehat/gang @@ -121,7 +121,7 @@ /datum/gang_item/clothing/mask name = "Golden Death Mask" id = "mask" - cost = 20 + cost = 18 item_path = /obj/item/clothing/mask/gskull /obj/item/clothing/mask/gskull @@ -133,7 +133,7 @@ /datum/gang_item/clothing/shoes name = "Bling Boots" id = "boots" - cost = 25 + cost = 22 item_path = /obj/item/clothing/shoes/gang /obj/item/clothing/shoes/gang @@ -144,14 +144,14 @@ /datum/gang_item/clothing/neck name = "Gold Necklace" id = "necklace" - cost = 10 + cost = 9 item_path = /obj/item/clothing/neck/necklace/dope /datum/gang_item/clothing/hands name = "Decorative Brass Knuckles" id = "hand" - cost = 12 + cost = 11 item_path = /obj/item/clothing/gloves/gang /obj/item/clothing/gloves/gang @@ -163,7 +163,7 @@ /datum/gang_item/clothing/belt name = "Badass Belt" id = "belt" - cost = 15 + cost = 13 item_path = /obj/item/weapon/storage/belt/military/gang /obj/item/weapon/storage/belt/military/gang @@ -215,7 +215,6 @@ name = "Sawn-Off Improvised Shotgun" id = "sawn" cost = 6 - item_path = /obj/item/weapon/gun/ballistic/revolver/doublebarrel/improvised/sawn /datum/gang_item/weapon/ammo/improvised_ammo name = "Box of Buckshot" @@ -236,16 +235,24 @@ item_path = /obj/item/ammo_box/magazine/m10mm /datum/gang_item/weapon/sniper - name = ".50cal Sniper Rifle" + name = "Black Market .50cal Sniper Rifle" id = "sniper" cost = 40 item_path = /obj/item/weapon/gun/ballistic/automatic/sniper_rifle /datum/gang_item/weapon/ammo/sniper_ammo - name = "Standard .50cal Sniper Rounds" + name = "Smuggled .50cal Sniper Rounds" id = "sniper_ammo" cost = 15 - item_path = /obj/item/ammo_box/magazine/sniper_rounds + item_path = /obj/item/ammo_box/magazine/sniper_rounds/gang + + +/datum/gang_item/weapon/ammo/sleeper_ammo + name = "Illicit Tranquilizer Cartridges" + id = "sniper_ammo" + cost = 15 + item_path = /obj/item/ammo_box/magazine/sniper_rounds/gang/sleeper + /datum/gang_item/weapon/machinegun name = "Mounted Machine Gun" diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 4f09f2e362..199c07cf86 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -194,7 +194,7 @@ set desc = "Detonate all RCDs on the station, while sparing onboard cyborg RCDs." set waitfor = FALSE - if(!canUseTopic() || malf_cooldown) + if(!canUseTopic() || malf_cooldown > world.time) return for(var/I in GLOB.rcd_list) @@ -203,9 +203,7 @@ RCD.detonate_pulse() to_chat(src, "RCD detonation pulse emitted.") - malf_cooldown = TRUE - sleep(100) - malf_cooldown = FALSE + malf_cooldown = world.time + 100 /datum/AI_Module/large/mecha_domination module_name = "Viral Mech Domination" @@ -446,7 +444,7 @@ set name = "Reactivate Cameranet" set category = "Malfunction" - if(!canUseTopic() || malf_cooldown) + if(!canUseTopic() || malf_cooldown > world.time) return var/fixedcams = 0 //Tells the AI how many cams it fixed. Stats are fun. @@ -469,9 +467,7 @@ break to_chat(src, "Diagnostic complete! Operations completed: [fixedcams].") - malf_cooldown = 1 - spawn(30) //Lag protection - malf_cooldown = 0 + malf_cooldown = world.time + 30 /datum/AI_Module/large/upgrade_cameras module_name = "Upgrade Camera Network" diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 9def30992e..3ce5a01cfa 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -31,15 +31,15 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event var/max_i = 10//number of tries to spawn meteor. while(!isspaceturf(pickedstart)) var/startSide = pick(GLOB.cardinal) - pickedstart = spaceDebrisStartLoc(startSide, 1) - pickedgoal = spaceDebrisFinishLoc(startSide, 1) + pickedstart = spaceDebrisStartLoc(startSide, ZLEVEL_STATION) + pickedgoal = spaceDebrisFinishLoc(startSide, ZLEVEL_STATION) max_i-- if(max_i<=0) return var/Me = pickweight(meteortypes) var/obj/effect/meteor/M = new Me(pickedstart) M.dest = pickedgoal - M.z_original = 1 + M.z_original = ZLEVEL_STATION spawn(0) walk_towards(M, M.dest, 1) @@ -96,7 +96,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event pass_flags = PASSTABLE var/heavy = 0 var/meteorsound = 'sound/effects/meteorimpact.ogg' - var/z_original = 1 + var/z_original = ZLEVEL_STATION var/threat = 0 // used for determining which meteors are most interesting var/lifetime = DEFAULT_METEOR_LIFETIME diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm index 2bd7fd17fa..553276e6aa 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm @@ -212,13 +212,12 @@ /obj/machinery/abductor/experiment/proc/SendBack(mob/living/carbon/human/H) H.Sleeping(8) + H.uncuff() if(console && console.pad && console.pad.teleport_target) H.forceMove(console.pad.teleport_target) - H.uncuff() return //Area not chosen / It's not safe area - teleport to arrivals - H.forceMove(pick(GLOB.latejoin)) - H.uncuff() + SSjob.SendToLateJoin(H, FALSE) return diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm index d8bf34c99e..06ba9ec2b5 100644 --- a/code/game/gamemodes/wizard/raginmages.dm +++ b/code/game/gamemodes/wizard/raginmages.dm @@ -142,7 +142,8 @@ return //First we spawn a dude. - var/mob/living/carbon/human/new_character = new(pick(GLOB.latejoin))//The mob being spawned. + var/mob/living/carbon/human/new_character = new//The mob being spawned. + SSjob.SendToLateJoin(new_character) G_found.client.prefs.copy_to(new_character) new_character.dna.update_dna_identity() diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index bd06d4e8d3..621d96f6f6 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -5,7 +5,7 @@ start_active = 1 /obj/machinery/camera/emp_proof/Initialize() - ..() + . = ..() upgradeEmpProof() // X-RAY @@ -15,7 +15,7 @@ icon_state = "xraycam" // Thanks to Krutchen for the icons. /obj/machinery/camera/xray/Initialize() - ..() + . = ..() upgradeXRay() // MOTION @@ -32,7 +32,7 @@ start_active = 1 /obj/machinery/camera/all/Initialize() - ..() + . = ..() upgradeEmpProof() upgradeXRay() upgradeMotion() @@ -43,23 +43,22 @@ var/number = 0 //camera number in area //This camera type automatically sets it's name to whatever the area that it's in is called. -/obj/machinery/camera/autoname/Initialize(mapload) - if(mapload) - ..() - return TRUE - else - if(!initialized) - ..() - number = 1 - var/area/A = get_area(src) - if(A) - for(var/obj/machinery/camera/autoname/C in GLOB.machines) - if(C == src) continue - var/area/CA = get_area(C) - if(CA.type == A.type) - if(C.number) - number = max(number, C.number+1) - c_tag = "[A.name] #[number]" +/obj/machinery/camera/autoname/Initialize() + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/camera/autoname/LateInitialize() + . = ..() + number = 1 + var/area/A = get_area(src) + if(A) + for(var/obj/machinery/camera/autoname/C in GLOB.machines) + if(C == src) continue + var/area/CA = get_area(C) + if(CA.type == A.type) + if(C.number) + number = max(number, C.number+1) + c_tag = "[A.name] #[number]" // CHECKS diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index fac4f7f31b..c0d7cad13b 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -331,8 +331,8 @@ to_chat(user, "Error: Pod has no occupant.") return else - connected_message("Authorized Ejection") - SPEAK("An authorized ejection of [clonemind.name] has occurred.") + connected_message("Emergency Ejection") + SPEAK("An emergency ejection of [clonemind.name] has occurred. Survival not guaranteed.") to_chat(user, "You force an emergency ejection. ") go_out() else diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index d4a0b7efa4..bede3ff526 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -134,12 +134,10 @@ D["Cancel"] = "Cancel" for(var/obj/machinery/camera/C in L) if(!C.network) - spawn(0) - throw EXCEPTION("Camera in a cameranet has no camera network") + stack_trace("Camera in a cameranet has no camera network") continue if(!(istype(C.network,/list))) - spawn(0) - throw EXCEPTION("Camera in a cameranet has a non-list camera network") + stack_trace("Camera in a cameranet has a non-list camera network") continue var/list/tempnetwork = C.network&network if(tempnetwork.len) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index ca329f61e5..097f9232d8 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -24,7 +24,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) //Cooldown for closing positions in seconds //if set to -1: No cooldown... probably a bad idea //if set to 0: Not able to close "original" positions. You can only close positions that you have opened before - var/change_position_cooldown = 60 + var/change_position_cooldown = 30 //Jobs you cannot open new positions for var/list/blacklisted = list( "AI", @@ -46,6 +46,11 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) light_color = LIGHT_COLOR_BLUE +/obj/machinery/computer/card/Initialize() + . = ..() + change_position_cooldown = config.id_console_jobslot_delay + + /obj/machinery/computer/card/attackby(obj/O, mob/user, params)//TODO:SANITY if(istype(O, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/idcard = O @@ -532,7 +537,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) else SSjob.prioritized_jobs += j prioritycount++ - to_chat(usr, "[j.title] has been successfully [priority ? "prioritized" : "unprioritized"]. Potential employees will notice your request.") + to_chat(usr, "[j.title] has been successfully [priority ? "prioritized" : "unprioritized"]. Potential employees will notice your request.") playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if ("print") diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 4837e64e89..809760abc9 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -28,7 +28,7 @@ var/list/buffer[NUMBER_OF_BUFFERS] - var/injectorready = 0 //Quick fix for issue 286 (screwdriver the screen twice to restore injector) -Pete + var/injectorready = 0 //world timer cooldown var var/current_screen = "mainmenu" var/obj/machinery/dna_scannernew/connected = null var/obj/item/weapon/disk/data/diskette = null @@ -61,8 +61,7 @@ connected = locate(/obj/machinery/dna_scannernew, get_step(src, dir)) if(!isnull(connected)) break - spawn(250) - injectorready = 1 + injectorready = world.time + INJECTOR_TIMEOUT return return @@ -213,7 +212,7 @@ else temp_html += "Occupant" temp_html += "Occupant:Delayed " - if(injectorready) + if(injectorready < world.time) temp_html += "Injector" else temp_html += "Injector" @@ -227,7 +226,7 @@ else temp_html += "Occupant" temp_html += "Occupant:Delayed " - if(injectorready) + if(injectorready < world.time) temp_html += "Injector" else temp_html += "Injector" @@ -240,7 +239,7 @@ else temp_html += "Occupant" temp_html += "Occupant:Delayed " - if(injectorready) + if(injectorready < world.time) temp_html += "UI+UE Injector" else temp_html += "UI+UE Injector" @@ -251,7 +250,7 @@ else temp_html += "Occupant " temp_html += "Occupant:Delayed " - if(injectorready) + if(injectorready < world.time ) temp_html += "Injector" else temp_html += "Injector" @@ -391,7 +390,7 @@ if("mixed") apply_buffer(SCANNER_ACTION_MIXED,num) if("injector") - if(num && injectorready) + if(num && injectorready < world.time) num = Clamp(num, 1, NUMBER_OF_BUFFERS) var/list/buffer_slot = buffer[num] if(istype(buffer_slot)) @@ -439,9 +438,7 @@ if(connected) I.damage_coeff = connected.damage_coeff if(I) - injectorready = 0 - spawn(INJECTOR_TIMEOUT) - injectorready = 1 + injectorready = world.time + INJECTOR_TIMEOUT if("loaddisk") if(num && diskette && diskette.fields) num = Clamp(num, 1, NUMBER_OF_BUFFERS) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 2175be22fe..c3c718966d 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -98,20 +98,14 @@ /obj/machinery/door/airlock/Initialize() . = ..() - + wires = new /datum/wires/airlock(src) if (cyclelinkeddir) cyclelinkairlock() if(frequency) set_frequency(frequency) - update_icon() - - wires = new /datum/wires/airlock(src) - if(src.closeOtherId != null) - spawn (5) - for (var/obj/machinery/door/airlock/A in GLOB.airlocks) - if(A.closeOtherId == src.closeOtherId && A != src) - src.closeOther = A - break + + if(closeOtherId != null) + addtimer(CALLBACK(.proc/update_other_id), 5) if(glass) airlock_material = "glass" if(security_level > AIRLOCK_SECURITY_METAL) @@ -127,6 +121,15 @@ diag_hud.add_to_hud(src) diag_hud_set_electrified() + + update_icon() + +/obj/machinery/door/airlock/proc/update_other_id() + for(var/obj/machinery/door/airlock/A in GLOB.airlocks) + if(A.closeOtherId == closeOtherId && A != src) + closeOther = A + break + /obj/machinery/door/airlock/proc/cyclelinkairlock() if (cyclelinkedairlock) cyclelinkedairlock.cyclelinkedairlock = null @@ -330,16 +333,14 @@ /obj/machinery/door/airlock/proc/shock(mob/user, prb) if(!hasPower()) // unpowered, no shock return FALSE - if(hasShocked) + if(hasShocked > world.time) return FALSE //Already shocked someone recently? if(!prob(prb)) return FALSE //you lucked out, no shock for you do_sparks(5, TRUE, src) var/tmp/check_range = TRUE if(electrocute_mob(user, get_area(src), src, 1, check_range)) - hasShocked = TRUE - spawn(10) - hasShocked = FALSE + hasShocked = world.time + 10 return TRUE else return FALSE diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 8301416f0c..d0303d47f6 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -58,12 +58,11 @@ Possible to do for anyone motivated enough: /obj/machinery/holopad/Destroy() if(outgoing_call) - LAZYADD(holo_calls, outgoing_call) + outgoing_call.ConnectionFailure(src) for(var/I in holo_calls) var/datum/holocall/HC = I HC.ConnectionFailure(src) - LAZYCLEARLIST(holo_calls) for (var/I in masters) clear_holo(I) @@ -74,7 +73,14 @@ Possible to do for anyone motivated enough: if (powered()) stat &= ~NOPOWER else - stat |= ~NOPOWER + stat |= NOPOWER + if(outgoing_call) + outgoing_call.ConnectionFailure(src) + +/obj/machinery/holopad/obj_break() + . = ..() + if(outgoing_call) + outgoing_call.ConnectionFailure(src) /obj/machinery/holopad/RefreshParts() var/holograph_range = 4 @@ -99,26 +105,11 @@ Possible to do for anyone motivated enough: return return ..() -/obj/machinery/holopad/proc/CheckCallClose() - for(var/I in holo_calls) - var/datum/holocall/HC = I - if(usr == HC.eye) - HC.Disconnect(HC.calling_holopad) //disconnect via clicking the called holopad - return TRUE - return FALSE - -/obj/machinery/holopad/Click(location,control,params) - if(!CheckCallClose()) - return ..() - /obj/machinery/holopad/AltClick(mob/living/carbon/human/user) if(isAI(user)) hangup_all_calls() return - if(!CheckCallClose()) - interact(user) - /obj/machinery/holopad/interact(mob/living/carbon/human/user) //Carn: Hologram requests. if(!istype(user)) return @@ -402,4 +393,4 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ req_components = list(/obj/item/weapon/stock_parts/capacitor = 1) #undef HOLOPAD_PASSIVE_POWER_USAGE -#undef HOLOGRAM_POWER_USAGE \ No newline at end of file +#undef HOLOGRAM_POWER_USAGE diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 39e27e531a..a15f2d9f96 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -58,15 +58,11 @@ var/p_dir = text2num(href_list["dir"]) var/obj/item/pipe/P = new (src.loc, pipe_type=p_type, dir=p_dir) P.add_fingerprint(usr) - wait = 1 - spawn(10) - wait = 0 + wait = world.time + 10 if(href_list["makemeter"]) - if(!wait) + if(wait < world.time ) new /obj/item/pipe_meter(src.loc) - wait = 1 - spawn(15) - wait = 0 + wait = world.time + 15 return /obj/machinery/pipedispenser/attackby(obj/item/W, mob/user, params) @@ -165,7 +161,7 @@ Nah usr.set_machine(src) src.add_fingerprint(usr) if(href_list["dmake"]) - if(!wait) + if(wait < world.time) var/p_type = text2num(href_list["dmake"]) var/obj/structure/disposalconstruct/C = new (src.loc,p_type) @@ -176,9 +172,7 @@ Nah C.add_fingerprint(usr) C.update_icon() - wait = 1 - spawn(15) - wait = 0 + wait = world.time + 15 return //transit tube dispenser @@ -216,7 +210,7 @@ Nah return 1 usr.set_machine(src) src.add_fingerprint(usr) - if(!wait) + if(wait < world.time) if(href_list["tube"]) var/tube_type = text2num(href_list["tube"]) var/obj/structure/C @@ -241,7 +235,5 @@ Nah C = new /obj/structure/c_transit_tube_pod(loc) if(C) C.add_fingerprint(usr) - wait = 1 - spawn(15) - wait = 0 + wait = world.time + 15 return diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 89af059fca..4b2176c603 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -1102,4 +1102,4 @@ if(target == user || target == get_turf(src)) return target_turf = get_turf(target) - fire_helper(target_turf) + fire_helper(user) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 5f318c794d..c54b6fab77 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -49,9 +49,7 @@ /obj/structure/emergency_shield/take_damage(damage, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() if(.) //damage was dealt - set_opacity(1) - spawn(20) - set_opacity(0) + new /obj/effect/temp_visual/impact_effect/ion(loc) /obj/structure/emergency_shield/sanguine name = "sanguine barrier" @@ -86,23 +84,24 @@ req_access = list(GLOB.access_engine) max_integrity = 100 obj_integrity = 100 - var/active = 0 - var/list/deployed_shields = list() + var/active = FALSE + var/list/deployed_shields var/locked = 0 var/shield_range = 4 -/obj/machinery/shieldgen/Destroy() - for(var/obj/structure/emergency_shield/ES in deployed_shields) - qdel(ES) +/obj/machinery/shieldgen/Initialize(mapload) + . = ..() deployed_shields = list() + if(mapload && active && anchored) + shields_up() + +/obj/machinery/shieldgen/Destroy() + QDEL_LIST(deployed_shields) return ..() /obj/machinery/shieldgen/proc/shields_up() - if(active) - return 0 //If it's already turned on, how did this get called? - - active = 1 + active = TRUE update_icon() for(var/turf/target_tile in range(shield_range, src)) @@ -111,15 +110,9 @@ deployed_shields += new /obj/structure/emergency_shield(target_tile) /obj/machinery/shieldgen/proc/shields_down() - if(!active) - return 0 //If it's already off, how did this get called? - - active = 0 + active = FALSE update_icon() - - for(var/obj/structure/emergency_shield/ES in deployed_shields) - qdel(ES) - deployed_shields.Cut() + QDEL_LIST(deployed_shields) /obj/machinery/shieldgen/process() if((stat & BROKEN) && active) diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 2b46183efe..9ebd0e7563 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -45,12 +45,14 @@ // register for radio system /obj/machinery/status_display/Initialize() - ..() + . = ..() + GLOB.ai_status_displays.Add(src) SSradio.add_object(src, frequency) /obj/machinery/status_display/Destroy() if(SSradio) SSradio.remove_object(src,frequency) + GLOB.ai_status_displays.Remove(src) return ..() // timed process diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index c182d9dceb..6074fc932e 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -68,8 +68,7 @@ message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Wormhole Generator in [ADMIN_COORDJMP(T)]",0,1) log_game("[key_name(chassis.occupant)] used a Wormhole Generator in [COORD(T)]") src = null - spawn(rand(150,300)) - qdel(P) + QDEL_IN(P, rand(150,300)) return 1 diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm index 14333c2bc1..2ee81b0422 100644 --- a/code/game/objects/effects/contraband.dm +++ b/code/game/objects/effects/contraband.dm @@ -12,8 +12,8 @@ var/poster_type var/obj/structure/sign/poster/poster_structure -/obj/item/weapon/poster/New(loc, obj/structure/sign/poster/new_poster_structure) - ..() +/obj/item/weapon/poster/Initialize(mapload, obj/structure/sign/poster/new_poster_structure) + . = ..() poster_structure = new_poster_structure if(!new_poster_structure && poster_type) poster_structure = new poster_type(src) @@ -58,8 +58,8 @@ var/poster_item_desc = "This hypothetical poster item should not exist, let's be honest here." var/poster_item_icon_state = "rolled_poster" -/obj/structure/sign/poster/New() - ..() +/obj/structure/sign/poster/Initialize() + . = ..() if(random_basetype) randomise(random_basetype) if(!ruined) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 5ce88f1c27..2c701ee274 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -182,7 +182,7 @@ /obj/effect/landmark/latejoin/Initialize(mapload) ..() - GLOB.latejoin += loc + SSjob.latejoin_trackers += loc qdel(src) // carp. diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 74459cc85d..7af12ac577 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -127,8 +127,8 @@ var/pure_red = list(0,0,0,0,0,0,0,0,0,1,0,0) spawn(0) - new /obj/effect/hallucination/delusion(victim.loc,victim,force_kind="demon",duration=duration,skip_nearby=0) - + new /obj/effect/hallucination/delusion(victim.loc,victim,"demon",duration,0) + var/obj/item/weapon/twohanded/required/chainsaw/doomslayer/chainsaw = new(victim.loc) chainsaw.flags |= NODROP victim.drop_all_held_items() diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 6403faa380..d6a4d33c7c 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -85,7 +85,7 @@ /obj/item/organ/heart/gland/spiderman = 5, /obj/item/organ/heart/gland/ventcrawling = 1, /obj/item/organ/body_egg/alien_embryo = 1, - /obj/item/organ/hivelord_core = 2) + /obj/item/organ/regenerative_core = 2) lootcount = 3 /obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index c3cf2a5103..6fd0530935 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -169,7 +169,9 @@ /obj/effect/temp_visual/fire icon = 'icons/effects/fire.dmi' icon_state = "3" - duration = 20 + light_range = 3 + light_color = LIGHT_COLOR_FIRE + duration = 10 /obj/effect/temp_visual/revenant name = "spooky lights" diff --git a/code/game/objects/effects/wanted_poster.dm b/code/game/objects/effects/wanted_poster.dm index 6d4f309aeb..746283f487 100644 --- a/code/game/objects/effects/wanted_poster.dm +++ b/code/game/objects/effects/wanted_poster.dm @@ -1,19 +1,18 @@ /obj/item/weapon/poster/wanted icon_state = "rolled_poster" -/obj/item/weapon/poster/wanted/New(turf/loc, icon/person_icon, wanted_name, description) - var/obj/structure/sign/poster/wanted/wanted_poster = new(person_icon, wanted_name, description) - ..(loc, wanted_poster) +/obj/item/weapon/poster/wanted/Initialize(mapload, icon/person_icon, wanted_name, description) + . = ..(mapload, new /obj/structure/sign/poster/wanted(src, person_icon, wanted_name, description)) name = "wanted poster ([wanted_name])" desc = "A wanted poster for [wanted_name]." /obj/structure/sign/poster/wanted var/wanted_name -/obj/structure/sign/poster/wanted/New(var/icon/person_icon, var/person_name, var/description) +/obj/structure/sign/poster/wanted/Initialize(mapload, icon/person_icon, person_name, description) + . = ..() if(!person_icon) - qdel(src) - return + return INITIALIZE_HINT_QDEL name = "wanted poster ([person_name])" wanted_name = person_name desc = description diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index 352a4fb9a7..287b34ec82 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -12,7 +12,7 @@ "Traitor", "Nuke Op", "Cultist", "Clockwork Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", "Ash Walker", "Deathsquad Officer", "Ian", "Slaughter Demon", - "Laughter Demon") + "Laughter Demon", "Private Security Officer") var/pushed_over = FALSE //If the cutout is pushed over and has to be righted var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version @@ -168,6 +168,11 @@ desc = "A cardboard cutout of a laughter demon." icon = 'icons/mob/mob.dmi' icon_state = "bowmon" + if("Private Security Officer") + name = "Private Security Officer" + desc = "A cardboard cutout of a private security officer." + icon = 'icons/mob/mob.dmi' + icon_state = "cutout_ntsec" return 1 /obj/item/cardboard_cutout/setDir(newdir) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 3ab826ec41..a93437c5c7 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -90,7 +90,7 @@ name = "" desc = "" density = 0 - var/can_move = 1 + var/can_move = 0 var/obj/item/device/chameleon/master = null /obj/effect/dummy/chameleon/proc/activate(mob/M, saved_appearance, obj/item/device/chameleon/C) @@ -126,19 +126,21 @@ if(isspaceturf(loc) || !direction) return //No magical space movement! - if(can_move) - can_move = 0 + if(can_move < world.time) + var/amount switch(user.bodytemperature) if(300 to INFINITY) - spawn(10) can_move = 1 + amount = 10 if(295 to 300) - spawn(13) can_move = 1 + amount = 13 if(280 to 295) - spawn(16) can_move = 1 + amount = 16 if(260 to 280) - spawn(20) can_move = 1 + amount = 20 else - spawn(25) can_move = 1 + amount = 25 + + can_move = world.time + amount step(src, direction) return diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index eafd5fdba4..9a4b3bdfec 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -111,7 +111,7 @@ "You bop [M] on the head!") playsound(loc, 'sound/weapons/tap.ogg', 50, 1, -1) if(2) - if(!scooldown) + if(scooldown < world.time) if(M.health >= 0) if(ishuman(M)||ismonkey(M)) M.electrocute_act(5, "[user]", safety = 1) @@ -128,11 +128,9 @@ "You shock [M] to no effect.") playsound(loc, 'sound/effects/sparks2.ogg', 50, 1, -1) user.cell.charge -= 500 - scooldown = TRUE - spawn(20) - scooldown = FALSE + scooldown = world.time + 20 if(3) - if(!ccooldown) + if(ccooldown < world.time) if(M.health >= 0) if(ishuman(M)) user.visible_message("[user] crushes [M] in their grip!", \ @@ -143,9 +141,7 @@ playsound(loc, 'sound/weapons/smash.ogg', 50, 1, -1) M.adjustBruteLoss(15) user.cell.charge -= 300 - ccooldown = TRUE - spawn(10) - ccooldown = FALSE + ccooldown = world.time + 10 /obj/item/borg/cyborghug/peacekeeper shockallowed = TRUE diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index 1563781267..16737f7057 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -60,6 +60,7 @@ origin_tech = "bluespace=6;materials=3" materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT) attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed") + novariants = TRUE var/crystal_type = /obj/item/weapon/ore/bluespace_crystal/refined /obj/item/stack/sheet/bluespace_crystal/attack_self(mob/user)// to prevent the construction menu from ever happening diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 018d5573a3..f1367f814e 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -5,11 +5,13 @@ amount = 6 max_amount = 6 w_class = WEIGHT_CLASS_TINY + full_w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 resistance_flags = FLAMMABLE obj_integrity = 40 max_integrity = 40 + novariants = FALSE var/heal_brute = 0 var/heal_burn = 0 var/stop_bleeding = 0 diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 1a8257fd79..9cdb097cdc 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -20,6 +20,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ max_amount = 50 attack_verb = list("hit", "bludgeoned", "whacked") hitsound = 'sound/weapons/grenadelaunch.ogg' + novariants = TRUE /obj/item/stack/rods/Initialize(mapload, new_amount, merge = TRUE) ..() diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 9c14a4376a..f8efd500e3 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -2,12 +2,14 @@ name = "hide" desc = "Something went wrong." origin_tech = "biotech=3" + novariants = TRUE /obj/item/stack/sheet/animalhide/human name = "human skin" desc = "The by-product of human farming." singular_name = "human skin piece" icon_state = "sheet-hide" + novariants = FALSE GLOBAL_LIST_INIT(human_recipes, list( \ new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/hooded/bloated_human, 5, on_floor = 1), \ @@ -22,6 +24,7 @@ GLOBAL_LIST_INIT(human_recipes, list( \ desc = "A piece of skin." singular_name = "skin piece" icon_state = "sheet-hide" + novariants = FALSE /obj/item/stack/sheet/animalhide/corgi name = "corgi hide" @@ -87,6 +90,7 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \ icon = 'icons/mob/alien.dmi' icon_state = "chitin" origin_tech = null + novariants = TRUE /obj/item/xenos_claw name = "alien claw" @@ -153,6 +157,7 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \ singular_name = "watcher sinew" icon_state = "sinew" origin_tech = "biotech=4" + novariants = TRUE GLOBAL_LIST_INIT(sinew_recipes, list ( \ @@ -166,23 +171,27 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ /* * Plates */ - /obj/item/stack/sheet/animalhide/goliath_hide name = "goliath hide plates" desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." icon = 'icons/obj/mining.dmi' icon_state = "goliath_hide" singular_name = "hide plate" + max_amount = 6 + novariants = FALSE flags = NOBLUDGEON w_class = WEIGHT_CLASS_NORMAL layer = MOB_LAYER + /obj/item/stack/sheet/animalhide/ashdrake name = "ash drake hide" desc = "The strong, scaled hide of an ash drake." icon = 'icons/obj/mining.dmi' icon_state = "dragon_hide" singular_name = "drake plate" + max_amount = 10 + novariants = FALSE flags = NOBLUDGEON w_class = WEIGHT_CLASS_NORMAL layer = MOB_LAYER diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 9514be618c..ea1f8db498 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -68,6 +68,7 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \ singular_name = "sandbag" layer = LOW_ITEM_LAYER origin_tech = "materials=2" + novariants = TRUE GLOBAL_LIST_INIT(sandbag_recipes, list ( \ new/datum/stack_recipe("sandbags", /obj/structure/barricade/sandbags, 1, time = 25, one_per_turf = 1, on_floor = 1), \ @@ -104,6 +105,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ origin_tech = "materials=6" sheettype = "diamond" materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT) + novariants = TRUE GLOBAL_LIST_INIT(diamond_recipes, list ( \ new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \ @@ -127,6 +129,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ origin_tech = "materials=5" sheettype = "uranium" materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) + novariants = TRUE GLOBAL_LIST_INIT(uranium_recipes, list ( \ new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \ @@ -237,6 +240,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ origin_tech = "materials=4" sheettype = "clown" materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) + novariants = TRUE GLOBAL_LIST_INIT(clown_recipes, list ( \ new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \ @@ -355,6 +359,7 @@ GLOBAL_LIST_INIT(adamantine_recipes, list( icon_state = "sheet-mythril" singular_name = "mythril sheet" origin_tech = "materials=4" + novariants = TRUE /* * Alien Alloy diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 3b9f5b4509..61abe97859 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -162,6 +162,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0) resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/mineral/wood + novariants = TRUE /obj/item/stack/sheet/mineral/wood/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.wood_recipes @@ -239,6 +240,7 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ origin_tech = "materials=1" resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/cardboard + novariants = TRUE /obj/item/stack/sheet/cardboard/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.cardboard_recipes @@ -268,6 +270,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ icon = 'icons/obj/items.dmi' sheettype = "runed" merge_type = /obj/item/stack/sheet/runed_metal + novariants = TRUE /obj/item/stack/sheet/runed_metal/ratvar_act() new /obj/item/stack/tile/brass(loc, amount) @@ -322,6 +325,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ throw_speed = 1 throw_range = 3 turf_type = /turf/open/floor/clockwork + novariants = FALSE /obj/item/stack/tile/brass/narsie_act() new /obj/item/stack/sheet/runed_metal(loc, amount) @@ -339,6 +343,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ singular_name = "lesser gem" icon_state = "sheet-lessergem" origin_tech = "materials=4" + novariants = TRUE /obj/item/stack/sheet/greatergem @@ -347,6 +352,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ singular_name = "greater gem" icon_state = "sheet-greatergem" origin_tech = "materials=7" + novariants = TRUE /* * Bones @@ -359,6 +365,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ desc = "Someone's been drinking their milk." force = 7 throwforce = 5 + max_amount = 12 w_class = WEIGHT_CLASS_NORMAL throw_speed = 1 throw_range = 3 diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index 0788ad6eba..c3fc626233 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -1,11 +1,12 @@ /obj/item/stack/sheet name = "sheet" - w_class = WEIGHT_CLASS_NORMAL + full_w_class = WEIGHT_CLASS_NORMAL force = 5 throwforce = 5 max_amount = 50 throw_speed = 1 throw_range = 3 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed") + novariants = FALSE var/perunit = MINERAL_MATERIAL_AMOUNT var/sheettype = null //this is used for girders in the creation of walls/false walls \ No newline at end of file diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index e5f9026257..64af889af6 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -18,6 +18,8 @@ var/datum/robot_energy_storage/source var/cost = 1 // How much energy from storage it costs var/merge_type = null // This path and its children should merge with this stack, defaults to src.type + var/full_w_class = WEIGHT_CLASS_NORMAL //The weight class the stack should have at amount > 2/3rds max_amount + var/novariants = TRUE //Determines whether the item should update it's sprites based on amount. /obj/item/stack/Initialize(mapload, new_amount=null , merge = TRUE) ..() @@ -29,6 +31,28 @@ for(var/obj/item/stack/S in loc) if(S.merge_type == merge_type) merge(S) + update_weight() + update_icon() + +/obj/item/stack/proc/update_weight() + if(amount <= (max_amount * (1/3))) + w_class = Clamp(full_w_class-2, WEIGHT_CLASS_TINY, full_w_class) + else if (amount <= (max_amount * (2/3))) + w_class = Clamp(full_w_class-1, WEIGHT_CLASS_TINY, full_w_class) + else + w_class = full_w_class + +/obj/item/stack/update_icon() + if(novariants) + return ..() + if(amount <= (max_amount * (1/3))) + icon_state = initial(icon_state) + else if (amount <= (max_amount * (2/3))) + icon_state = "[initial(icon_state)]_2" + else + icon_state = "[initial(icon_state)]_3" + ..() + /obj/item/stack/Destroy() if (usr && usr.machine==src) @@ -188,6 +212,7 @@ amount -= used zero_amount() update_icon() + update_weight() return 1 /obj/item/stack/proc/zero_amount() @@ -204,6 +229,7 @@ else src.amount += amount update_icon() + update_weight() /obj/item/stack/proc/merge(obj/item/stack/S) //Merge src into S, as much as possible if(QDELETED(S) || QDELETED(src) || S == src) //amusingly this can cause a stack to consume itself, let's not allow that. diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index ef123030f5..8b97bda160 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -12,6 +12,7 @@ origin_tech = "materials=1" var/turf_type = null var/mineralType = null + novariants = TRUE /obj/item/stack/tile/Initialize(mapload, amount) . = ..() diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 42362c1e55..32ae6029ca 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -103,7 +103,7 @@ to_chat(user, "You need one length of coil to wire the assembly!") return - else if(stage == READY && istype(I, /obj/item/weapon/wirecutters)) + else if(stage == READY && istype(I, /obj/item/weapon/wirecutters) && !active) stage_change(WIRED) to_chat(user, "You unlock the [initial(name)] assembly.") diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index 91b605543b..834714f3a0 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -185,17 +185,6 @@ maxWeightClass = 7 gasPerThrow = 5 -/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but - name = "Pneumatic Cannon" - result = /obj/item/weapon/pneumatic_cannon/ghetto - tools = list(/obj/item/weapon/weldingtool, - /obj/item/weapon/wrench) - reqs = list(/obj/item/stack/sheet/metal = 4, - /obj/item/stack/packageWrap = 8, - /obj/item/pipe = 2) - time = 300 - category = CAT_WEAPON - /obj/item/weapon/pneumatic_cannon/proc/updateTank(obj/item/weapon/tank/internals/thetank, removing = 0, mob/living/carbon/human/user) if(removing) if(!src.tank) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index f2e9ca9fc6..228203bcae 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -200,10 +200,10 @@ /obj/item/weapon/storage/pill_bottle, /obj/item/weapon/ore, /obj/item/weapon/reagent_containers/food/drinks, - /obj/item/organ/hivelord_core, + /obj/item/organ/regenerative_core, /obj/item/device/wormhole_jaunter, /obj/item/weapon/storage/bag/plants, - + /obj/item/stack/marker_beacon ) @@ -247,10 +247,10 @@ ) /obj/item/weapon/storage/belt/military - name = "chest rig" - desc = "A set of tactical webbing worn by Syndicate boarding parties." - icon_state = "explorer1" - item_state = "explorer1" + name = "chest rig" + desc = "A set of tactical webbing worn by Syndicate boarding parties." + icon_state = "militarywebbing" + item_state = "militarywebbing" max_w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/storage/belt/military/abductor diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 43301e6702..679f9c3784 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -405,10 +405,9 @@ if(iscyborg(user)) return //Robots can't interact with storage items. - if(contents.len >= storage_slots) //don't use items on the backpack if they don't fit - return 1 - if(!can_be_inserted(W, 0 , user)) + if(contents.len >= storage_slots) //don't use items on the backpack if they don't fit + return 1 return 0 handle_item_insertion(W, 0 , user) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index baf65fd084..0fad89dec5 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -698,56 +698,4 @@ sharpness = IS_SHARP /obj/item/weapon/twohanded/bonespear/update_icon() - icon_state = "bone_spear[wielded]" - -/* - * Sky Bulge (Gae Bolg, tradtional dragoon lance from many FF games.) - */ -/obj/item/weapon/twohanded/skybulge //Copy+paste job from bonespear because no explosions. - icon_state = "sky_bulge0" - name = "Sky Bulge" - desc = "A legendary stick with a very pointy tip. Looks to be used for throwing. And jumping. Can be stubborn if you throw too much." //TODO: Be funnier. - force = 10 //This thing aint for robusting. - w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK - force_unwielded = 10 - force_wielded = 18 //Same as regular spear. This is a utility weapon. - throwforce = 24 //And that utility is throwing. 24 so it takes 5 hits instead of 4. - throw_speed = 4 - embedded_impact_pain_multiplier = 0 //If you somehow embed this, it's not going to hurt. - armour_penetration = 15 //Same as Bone Spear - embed_chance = 0 //Would ruin the whole theme of the thing. - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "poked", "jabbed", "torn", "gored", "lanced") //Added lanced for flavour. - sharpness = IS_SHARP - var/maxdist = 16 - var/throw_cooldown = 0 //Should equate to half a second. Not supposed to be varedited. - -/obj/item/weapon/twohanded/skybulge/update_icon() - icon_state = "sky_bulge[wielded]" - -/obj/item/weapon/twohanded/skybulge/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback) //Throw cooldown and offhand-proofing. - if(throw_cooldown > world.time) - var/mob/user = thrownby - user.put_in_hands(src) - return - unwield(src) - ..() - -/obj/item/weapon/twohanded/skybulge/throw_impact(atom/target) //Praise be the ratvar spear for showing me how to use this proc. - var/turf/turfhit = get_turf(target) - var/mob/user = thrownby - var/turf/source = get_turf(thrownby) - - if(source.z == ZLEVEL_STATION && get_dist(turfhit, source) < maxdist || source.z != ZLEVEL_STATION) - ..() - if(do_after_mob(user, src, 5, uninterruptible = 1, progress = 0)) - if(QDELETED(src)) - return - var/turf/landing = get_turf(src) - if (loc != landing) - return - user.forceMove(landing) - throw_cooldown = world.time + 5 //Half a second between throws. - user.put_in_hands(src) - playsound(src, 'sound/weapons/laser2.ogg', 20, 1) + icon_state = "bone_spear[wielded]" \ No newline at end of file diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 7202aeae1c..e1531b4ef7 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -25,7 +25,7 @@ return ..() /obj/structure/chair/proc/RemoveFromLatejoin() - GLOB.latejoin -= src //These may be here due to the arrivals shuttle + SSjob.latejoin_trackers -= src //These may be here due to the arrivals shuttle /obj/structure/chair/deconstruct() // If we have materials, and don't have the NOCONSTRUCT flag diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 801808f25e..de8d807f93 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -64,6 +64,7 @@ new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/head/soft/purple(src) new /obj/item/weapon/paint/paint_remover(src) + new /obj/item/weapon/melee/flyswatter(src) new /obj/item/device/flashlight(src) for(var/i in 1 to 3) new /obj/item/weapon/caution(src) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 39ff2a7da9..62d0adfef7 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -3,6 +3,7 @@ * Morgue * Morgue tray * Crematorium + * Creamatorium * Crematorium tray * Crematorium button */ @@ -223,6 +224,20 @@ GLOBAL_LIST_EMPTY(crematoriums) update_icon() playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) //you horrible people +/obj/structure/bodycontainer/crematorium/creamatorium + name = "creamatorium" + desc = "A human incinerator. Works well during ice cream socials." + +/obj/structure/bodycontainer/crematorium/creamatorium/cremate(mob/user) + var/list/icecreams = new() + for(var/mob/living/i_scream in GetAllContents()) + var/obj/item/weapon/reagent_containers/food/snacks/icecream/IC = new() + IC.set_cone_type("waffle") + IC.add_mob_flavor(i_scream) + icecreams += IC + . = ..() + for(var/obj/IC in icecreams) + IC.forceMove(src) /* * Generic Tray diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm index fc5a57e16d..46bb461660 100644 --- a/code/game/turfs/simulated/floor/mineral_floor.dm +++ b/code/game/turfs/simulated/floor/mineral_floor.dm @@ -151,18 +151,14 @@ honk() /turf/open/floor/mineral/bananium/proc/honk() - if(!spam_flag) - spam_flag = 1 + if(spam_flag < world.time) playsound(src, 'sound/items/bikehorn.ogg', 50, 1) - spawn(20) - spam_flag = 0 + spam_flag = world.time + 20 /turf/open/floor/mineral/bananium/proc/squeek() - if(!spam_flag) - spam_flag = 1 + if(spam_flag < world.time) playsound(src, "clownstep", 50, 1) - spawn(10) - spam_flag = 0 + spam_flag = world.time + 10 /turf/open/floor/mineral/bananium/airless initial_gas_mix = "TEMP=2.7" diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index 8a00267a22..18d81b1932 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -322,6 +322,7 @@ slowdown = 2 environment_type = "snow" sand_type = /obj/item/stack/sheet/mineral/snow + flags = NONE /turf/open/floor/plating/asteroid/snow/airless initial_gas_mix = "TEMP=2.7" diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index b2dc6882cb..33baff0834 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -122,7 +122,7 @@ computerid = "0" if(!ip) ip = "0.0.0.0" - var/sql = "INSERT INTO [format_table_name("ban")] (`bantime`,`server_ip`,`server_port`,`bantype`,`reason`,`job`,`duration`,`expiration_time`,`ckey`,`computerid`,`ip`,`a_ckey`,`a_computerid`,`a_ip`,`who`,`adminwho`) VALUES (Now(), INET_ATON('[world.internet_address]'), '[world.port]', '[bantype_str]', '[reason]', '[job]', [(duration)?"[duration]":"0"], Now() + INTERVAL [(duration>0) ? duration : 0] MINUTE, '[ckey]', '[computerid]', INET_ATON('[ip]'), '[a_ckey]', '[a_computerid]', INET_ATON('[a_ip]'), '[who]', '[adminwho]')" + var/sql = "INSERT INTO [format_table_name("ban")] (`bantime`,`server_ip`,`server_port`,`round_id`,`bantype`,`reason`,`job`,`duration`,`expiration_time`,`ckey`,`computerid`,`ip`,`a_ckey`,`a_computerid`,`a_ip`,`who`,`adminwho`) VALUES (Now(), INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', '[GLOB.round_id]', '[bantype_str]', '[reason]', '[job]', [(duration)?"[duration]":"0"], Now() + INTERVAL [(duration>0) ? duration : 0] MINUTE, '[ckey]', '[computerid]', INET_ATON('[ip]'), '[a_ckey]', '[a_computerid]', INET_ATON('[a_ip]'), '[who]', '[adminwho]')" var/datum/DBQuery/query_add_ban = SSdbcore.NewQuery(sql) if(!query_add_ban.warn_execute()) return diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index b89d219245..a1f98cb89f 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -421,6 +421,8 @@ return var/list/options = list("Regular Restart", "Hard Restart (No Delay/Feeback Reason)", "Hardest Restart (No actions, just reboot)") + if(world.RunningService()) + options += "Service Restart (Force restart DD)"; var result = input(usr, "Select reboot method", "World Reboot", options[1]) as null|anything in options if(result) SSblackbox.add_details("admin_verb","Reboot World") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -433,6 +435,9 @@ if("Hardest Restart (No actions, just reboot)") world.Reboot(fast_track = TRUE) + if("Service Restart (Force restart DD)") + GLOB.reboot_mode = REBOOT_MODE_HARD + world.ServiceReboot() /datum/admins/proc/end_round() set category = "Server" @@ -590,7 +595,7 @@ set category = "Admin" set name = "Unprison" if (M.z == ZLEVEL_CENTCOM) - M.loc = pick(GLOB.latejoin) + SSjob.SendToLateJoin(M) message_admins("[key_name_admin(usr)] has unprisoned [key_name_admin(M)]") log_admin("[key_name(usr)] has unprisoned [key_name(M)]") else diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 8e9abff81c..628ff6d9bb 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -183,7 +183,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) to_chat(C, "PM to-Admins: [name]") //send it to irc if nobody is on and tell us how many were on - var/admin_number_present = send2irc_adminless_only(initiator_ckey, name) + var/admin_number_present = send2irc_adminless_only(initiator_ckey, "Ticket #[id]: [name]") log_admin_private("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.") if(admin_number_present <= 0) to_chat(C, "No active admins are online, your adminhelp was sent to the admin irc.") @@ -431,9 +431,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /obj/effect/statclick/ahelp var/datum/admin_help/ahelp_datum -/obj/effect/statclick/ahelp/Initialize(mapload, datum/admin_help/AH) +/obj/effect/statclick/ahelp/Initialize(mapload, datum/admin_help/AH) ahelp_datum = AH - . = ..() + . = ..() /obj/effect/statclick/ahelp/update() return ..(ahelp_datum.name) @@ -479,7 +479,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) current_ticket.MessageNoRecipient(msg) current_ticket.TimeoutVerb() return - else + else to_chat(usr, "Ticket not found, creating new one...") else current_ticket.AddInteraction("[key_name_admin(usr)] opened a new ticket.") @@ -567,9 +567,10 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /proc/send2irc(msg,msg2) - if(config.useircbot) + if(world.RunningService()) + world.ExportService("[SERVICE_REQUEST_IRC_ADMIN_CHANNEL_MESSAGE] [msg] | [msg2]") + else if(config.useircbot) shell("python nudge.py [msg] [msg2]") - return /proc/send2otherserver(source,msg,type = "Ahelp") if(config.cross_allowed) @@ -591,7 +592,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) admin_keys += "[C][C.holder.fakekey ? "(Stealth)" : ""][C.is_afk() ? "(AFK)" : ""]" for(var/admin in admin_keys) - if(LAZYLEN(message) > 1) + if(LAZYLEN(message) > 1) message += ", [admin]" else message += "[admin]" diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index eb3e24265c..fa906640de 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -11,7 +11,7 @@ if( !ismob(M) || !M.client ) return cmd_admin_pm(M.client,null) - SSblackbox.add_details("admin_verb","Admin PM Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.add_details("admin_verb","Admin PM Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //shows a list of clients we could send PMs to, then forwards our choice to cmd_admin_pm /client/proc/cmd_admin_pm_panel() @@ -33,7 +33,7 @@ targets["(No Mob) - [T]"] = T var/target = input(src,"To whom shall we send a message?","Admin PM",null) as null|anything in sortList(targets) cmd_admin_pm(targets[target],null) - SSblackbox.add_details("admin_verb","Admin PM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.add_details("admin_verb","Admin PM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_ahelp_reply(whom) if(prefs.muted & MUTE_ADMINHELP) @@ -59,11 +59,11 @@ if (!msg) message_admins("[key_name_admin(src)] has cancelled their reply to [key_name(C, 0, 0)]'s admin help.") return - cmd_admin_pm(whom, msg, AH) + cmd_admin_pm(whom, msg) //takes input from cmd_admin_pm_context, cmd_admin_pm_panel or /client/Topic and sends them a PM. //Fetching a message if needed. src is the sender and C is the target client -/client/proc/cmd_admin_pm(whom, msg, datum/admin_help/AH) +/client/proc/cmd_admin_pm(whom, msg) if(prefs.muted & MUTE_ADMINHELP) to_chat(src, "Error: Admin-PM: You are unable to use admin PM-s (muted).") return @@ -103,7 +103,7 @@ if(!recipient) if(holder) to_chat(src, "Error: Admin-PM: Client not found.") - to_chat(src, msg) + to_chat(src, msg) else current_ticket.MessageNoRecipient(msg) return @@ -144,9 +144,9 @@ if(irc) to_chat(src, "PM to-Admins: [rawmsg]") - admin_ticket_log(src, "Reply PM from-[key_name(src, TRUE, TRUE)] to IRC: [keywordparsedmsg]") + var/datum/admin_help/AH = admin_ticket_log(src, "Reply PM from-[key_name(src, TRUE, TRUE)] to IRC: [keywordparsedmsg]") ircreplyamount-- - send2irc("Reply: [ckey]",rawmsg) + send2irc("[AH ? "#[AH.id] " : ""]Reply: [ckey]", rawmsg) else if(recipient.holder) if(holder) //both are admins @@ -221,42 +221,44 @@ var/datum/admin_help/ticket = C ? C.current_ticket : GLOB.ahelp_tickets.CKey2ActiveTicket(target) var/compliant_msg = trim(lowertext(msg)) - var/unhandled = FALSE var/irc_tagged = "[sender](IRC)" - switch(compliant_msg) - if("ticket close") - if(ticket) - ticket.Close(irc_tagged) - return "Ticket #[ticket.id] successfully closed" - if("ticket resolve") - if(ticket) - ticket.Resolve(irc_tagged) - return "Ticket #[ticket.id] successfully resolved" - if("ticket ic") - if(ticket) - ticket.ICIssue(irc_tagged) - return "Ticket #[ticket.id] successfully marked as IC issue" - if("ticket reject") - if(ticket) - ticket.Reject(irc_tagged) - return "Ticket #[ticket.id] successfully rejected" - else - unhandled = TRUE - if(!unhandled) - return "Ticket could not be found" + var/list/splits = splittext(compliant_msg, " ") + if(splits.len && splits[1] == "ticket") + if(splits.len < 2) + return "Usage: ticket " + switch(splits[2]) + if("close") + if(ticket) + ticket.Close(irc_tagged) + return "Ticket #[ticket.id] successfully closed" + if("resolve") + if(ticket) + ticket.Resolve(irc_tagged) + return "Ticket #[ticket.id] successfully resolved" + if("icissue") + if(ticket) + ticket.ICIssue(irc_tagged) + return "Ticket #[ticket.id] successfully marked as IC issue" + if("reject") + if(ticket) + ticket.Reject(irc_tagged) + return "Ticket #[ticket.id] successfully rejected" + else + return "Usage: ticket " + return "Error: Ticket could not be found" var/static/stealthkey var/adminname = config.showircname ? irc_tagged : "Administrator" if(!C) - return "No client" + return "Error: No client" if(!stealthkey) stealthkey = GenIrcStealthKey() msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN)) if(!msg) - return "No message" + return "Error: No message" message_admins("IRC message from [sender] to [key_name_admin(C)] : [msg]") log_admin_private("IRC PM: [sender] -> [key_name(C)] : [msg]") diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 9bed5ad238..7df2832481 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -52,7 +52,20 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(!procname) return - if(targetselected && !hascall(target,procname)) + //hascall() doesn't support proc paths (eg: /proc/gib(), it only supports "gib") + var/testname = procname + if(targetselected) + //Find one of the 3 possible ways they could have written /proc/PROCNAME + if(findtext(procname, "/proc/")) + testname = replacetext(procname, "/proc/", "") + else if(findtext(procname, "/proc")) + testname = replacetext(procname, "/proc", "") + else if(findtext(procname, "proc/")) + testname = replacetext(procname, "proc/", "") + //Clear out any parenthesis if they're a dummy + testname = replacetext(testname, "()", "") + + if(targetselected && !hascall(target,testname)) to_chat(usr, "Error: callproc(): type [target.type] has no proc named [procname].") return else @@ -581,7 +594,8 @@ GLOBAL_PROTECT(AdminProcCallCount) var/list/paths = subtypesof(/datum/outfit) - typesof(/datum/outfit/job) for(var/path in paths) var/datum/outfit/O = path //not much to initalize here but whatever - outfits[initial(O.name)] = path + if(initial(O.can_be_admin_equipped)) + outfits[initial(O.name)] = path var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in outfits @@ -596,7 +610,8 @@ GLOBAL_PROTECT(AdminProcCallCount) var/list/job_outfits = list() for(var/path in job_paths) var/datum/outfit/O = path - job_outfits[initial(O.name)] = path + if(initial(O.can_be_admin_equipped)) + job_outfits[initial(O.name)] = path dresscode = input("Select job equipment", "Robust quick dress shop") as null|anything in job_outfits dresscode = job_outfits[dresscode] diff --git a/code/modules/admin/verbs/individual_logging.dm b/code/modules/admin/verbs/individual_logging.dm index cef424d4b2..d7db82f5b3 100644 --- a/code/modules/admin/verbs/individual_logging.dm +++ b/code/modules/admin/verbs/individual_logging.dm @@ -16,7 +16,7 @@ for(var/log_type in M.logging) var/list/reversed = M.logging[log_type] reversed = reverseRange(reversed.Copy()) - dat += "
[log_type]

" + dat += "
[log_type]

" for(var/entry in reversed) dat += "[entry]: [reversed[entry]]
" dat += "
" @@ -26,6 +26,6 @@ if(reversed) reversed = reverseRange(reversed.Copy()) for(var/entry in reversed) - dat += "[entry]: [reversed[entry]]
" + dat += "[entry]: [reversed[entry]]
" usr << browse(dat, "window=invidual_logging;size=600x480") \ No newline at end of file diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 09dfcf4d69..c31ec9b537 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -227,7 +227,7 @@ return 0 var/alien_caste = input(usr, "Please choose which caste to spawn.","Pick a caste",null) as null|anything in list("Queen","Praetorian","Hunter","Sentinel","Drone","Larva") - var/obj/effect/landmark/spawn_here = GLOB.xeno_spawn.len ? pick(GLOB.xeno_spawn) : pick(GLOB.latejoin) + var/obj/effect/landmark/spawn_here = GLOB.xeno_spawn.len ? pick(GLOB.xeno_spawn) : null var/mob/living/carbon/alien/new_xeno switch(alien_caste) if("Queen") @@ -244,6 +244,8 @@ new_xeno = new /mob/living/carbon/alien/larva(spawn_here) else return 0 + if(!spawn_here) + SSjob.SendToLateJoin(new_xeno, FALSE) new_xeno.ckey = ckey var/msg = "[key_name_admin(usr)] has spawned [ckey] as a filthy xeno [alien_caste]." @@ -284,8 +286,6 @@ Traitors and the like can also be revived with the previous role mostly intact. var/turf/T if(GLOB.xeno_spawn.len) T = pick(GLOB.xeno_spawn) - else - T = pick(GLOB.latejoin) var/mob/living/carbon/alien/new_xeno switch(G_found.mind.special_role)//If they have a mind, we can determine which caste they were. @@ -302,6 +302,9 @@ Traitors and the like can also be revived with the previous role mostly intact. else//If we don't know what special role they have, for whatever reason, or they're a larva. create_xeno(G_found.ckey) return + + if(!T) + SSjob.SendToLateJoin(new_xeno, FALSE) //Now to give them their mind back. G_found.mind.transfer_to(new_xeno) //be careful when doing stuff like this! I've already checked the mind isn't in use @@ -315,7 +318,8 @@ Traitors and the like can also be revived with the previous role mostly intact. //check if they were a monkey else if(findtext(G_found.real_name,"monkey")) if(alert("This character appears to have been a monkey. Would you like to respawn them as such?",,"Yes","No")=="Yes") - var/mob/living/carbon/monkey/new_monkey = new(pick(GLOB.latejoin)) + var/mob/living/carbon/monkey/new_monkey = new + SSjob.SendToLateJoin(new_monkey) G_found.mind.transfer_to(new_monkey) //be careful when doing stuff like this! I've already checked the mind isn't in use new_monkey.key = G_found.key to_chat(new_monkey, "You have been fully respawned. Enjoy the game.") @@ -326,7 +330,8 @@ Traitors and the like can also be revived with the previous role mostly intact. //Ok, it's not a xeno or a monkey. So, spawn a human. - var/mob/living/carbon/human/new_character = new(pick(GLOB.latejoin))//The mob being spawned. + var/mob/living/carbon/human/new_character = new//The mob being spawned. + SSjob.SendToLateJoin(new_character) var/datum/data/record/record_found //Referenced to later to either randomize or not randomize the character. if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something @@ -1206,4 +1211,5 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits return message_admins("[key_name_admin(usr)] triggered a Centcom recall, with the admiral message of: [message]") - log_game("[key_name(usr)] triggered a Centcom recall, with the message of: [message]") \ No newline at end of file + log_game("[key_name(usr)] triggered a Centcom recall, with the message of: [message]") + SSshuttle.centcom_recall(SSshuttle.emergency.timer, message) \ No newline at end of file diff --git a/code/modules/admin/whitelist.dm b/code/modules/admin/whitelist.dm index 934e47aa23..d6e8fc908f 100644 --- a/code/modules/admin/whitelist.dm +++ b/code/modules/admin/whitelist.dm @@ -1,11 +1,11 @@ -#define WHITELISTFILE "config/whitelist.txt" +#define WHITELISTFILE "config/whitelist.txt, gamedata/config/whitelist.txt" GLOBAL_LIST(whitelist) GLOBAL_PROTECT(whitelist) /proc/load_whitelist() GLOB.whitelist = list() - for(var/line in world.file2list(WHITELISTFILE)) + for(var/line in world.file2list(WHITELISTFILE)) if(!line) continue if(findtextEx(line,"#",1,2)) diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index d3fbc38208..976827ccf1 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -1,6 +1,6 @@ #define PUMP_OUT "out" #define PUMP_IN "in" -#define PUMP_MAX_PRESSURE (ONE_ATMOSPHERE * 30) +#define PUMP_MAX_PRESSURE (ONE_ATMOSPHERE * 10) #define PUMP_MIN_PRESSURE (ONE_ATMOSPHERE / 10) #define PUMP_DEFAULT_PRESSURE (ONE_ATMOSPHERE) diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm index 2e7ce98510..8f111b6eb2 100644 --- a/code/modules/awaymissions/bluespaceartillery.dm +++ b/code/modules/awaymissions/bluespaceartillery.dm @@ -55,16 +55,3 @@ var/loc = pick(L) explosion(loc,explosiondev,explosionmed,explosionlight) reload = 0 - -/*/mob/proc/openfire() - var/A - A = input("Area to jump bombard", "Open Fire", A) in GLOB.teleportlocs - var/area/thearea = GLOB.teleportlocs[A] - priority_announce("Bluespace artillery fire detected. Brace for impact.") - spawn(30) - var/list/L = list() - - for(var/turf/T in get_area_turfs(thearea.type)) - L+=T - var/loc = pick(L) - explosion(loc,2,5,11)*/ diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 9e3695d83e..d7abbd77e7 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -18,6 +18,8 @@ var/uses = 1 //how many times can we spawn from it. set to -1 for infinite. var/brute_damage = 0 var/oxy_damage = 0 + var/burn_damage = 0 + var/mob_color //Change the mob's color density = 1 anchored = 1 var/banType = "lavaland" @@ -68,6 +70,8 @@ M.adjustOxyLoss(oxy_damage) M.adjustBruteLoss(brute_damage) + M.adjustFireLoss(burn_damage) + M.color = mob_color equip(M) if(ckey) @@ -115,23 +119,29 @@ var/l_pocket = -1 var/back = -1 var/id = -1 + var/neck = -1 + var/backpack_contents = -1 + var/suit_store = -1 /obj/effect/mob_spawn/human/Initialize() - . = ..() if(ispath(outfit)) outfit = new outfit() if(!outfit) outfit = new /datum/outfit - + return ..() /obj/effect/mob_spawn/human/equip(mob/living/carbon/human/H) if(mob_species) H.set_species(mob_species) if(husk) H.Drain() - + else //Because for some reason I can't track down, things are getting turned into husks even if husk = false. It's in some damage proc somewhere. + H.cure_husk() + H.underwear = "Nude" + H.undershirt = "Nude" + H.socks = "Nude" if(outfit) - var/static/list/slots = list("uniform", "r_hand", "l_hand", "suit", "shoes", "gloves", "ears", "glasses", "mask", "head", "belt", "r_pocket", "l_pocket", "back", "id") + var/static/list/slots = list("uniform", "r_hand", "l_hand", "suit", "shoes", "gloves", "ears", "glasses", "mask", "head", "belt", "r_pocket", "l_pocket", "back", "id", "neck", "backpack_contents", "suit_store") for(var/slot in slots) var/T = vars[slot] if(!isnum(T)) @@ -319,7 +329,6 @@ icon_state = "sleeper" flavour_text = "You are a beach bum!" - /datum/outfit/beachbum name = "Beach Bum" glasses = /obj/item/clothing/glasses/sunglasses @@ -353,7 +362,7 @@ /obj/effect/mob_spawn/human/commander name = "Commander" id_job = "Commander" - id_access_list = list(GLOB.access_cent_captain) + id_access_list = list(GLOB.access_cent_captain, GLOB.access_cent_general, GLOB.access_cent_specops, GLOB.access_cent_medical, GLOB.access_cent_storage) outfit = /datum/outfit/nanotrasencommandercorpse /datum/outfit/nanotrasencommandercorpse @@ -373,7 +382,7 @@ /obj/effect/mob_spawn/human/nanotrasensoldier name = "Nanotrasen Private Security Officer" id_job = "Private Security Force" - id_access_list = list(GLOB.access_cent_specops) + id_access_list = list(GLOB.access_cent_captain, GLOB.access_cent_general, GLOB.access_cent_specops, GLOB.access_cent_medical, GLOB.access_cent_storage, GLOB.access_security) outfit = /datum/outfit/nanotrasensoldiercorpse /datum/outfit/nanotrasensoldiercorpse @@ -397,6 +406,16 @@ icon_state = "sleeper" flavour_text = "You are a Nanotrasen Commander!" +/obj/effect/mob_spawn/human/nanotrasensoldier/alive + death = FALSE + roundstart = FALSE + mob_name = "Private Security Officer" + name = "sleeper" + icon = 'icons/obj/Cryogenic2.dmi' + icon_state = "sleeper" + faction = "nanotrasenprivate" + flavour_text = "You are a Nanotrasen Private Security Officer!" + /////////////////Spooky Undead////////////////////// @@ -460,4 +479,4 @@ back = /obj/item/weapon/storage/backpack shoes = /obj/item/clothing/shoes/sneakers/black suit = /obj/item/clothing/suit/armor/vest - glasses = /obj/item/clothing/glasses/sunglasses/reagent + glasses = /obj/item/clothing/glasses/sunglasses/reagent \ No newline at end of file diff --git a/code/modules/cargo/exports/organs.dm b/code/modules/cargo/exports/organs.dm index 39c0051a4e..858914f0fd 100644 --- a/code/modules/cargo/exports/organs.dm +++ b/code/modules/cargo/exports/organs.dm @@ -66,10 +66,10 @@ /datum/export/organ/hivelord cost = 1500 - unit_name = "active hivelord core" - export_types = list(/obj/item/organ/hivelord_core) + unit_name = "active regenerative core" + export_types = list(/obj/item/organ/regenerative_core) -/datum/export/organ/alien/plasmavessel/get_cost(obj/item/organ/hivelord_core/C) +/datum/export/organ/alien/plasmavessel/get_cost(obj/item/organ/regenerative_core/C) if(C.inert) return ..() / 3 if(C.preserved) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index d236558ddf..fc21e9e0d2 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -488,7 +488,7 @@ GLOBAL_LIST(external_rsc_urls) return 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`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),INET_ATON('[world.internet_address]'),'[world.port]','[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]')") + var/datum/DBQuery/query_log_connection = SSdbcore.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),COALESCE(INET_ATON('[world.internet_address]'), 0),'[world.port]','[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]')") query_log_connection.Execute() /client/proc/findJoinDate() diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 1cadd5cc0d..9c554455f9 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -100,7 +100,6 @@ cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80) - flags_inv = HIDEJUMPSUIT strip_delay = 80 put_on_delay = 60 diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index e90c750d12..bcf2e49426 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -60,7 +60,7 @@ name = "goliath cloak" icon_state = "goliath_cloak" desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits." - allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/pickaxe, /obj/item/weapon/twohanded/spear, /obj/item/weapon/twohanded/bonespear, /obj/item/organ/hivelord_core/legion, /obj/item/weapon/kitchen/knife/combat/bone, /obj/item/weapon/kitchen/knife/combat/survival) + allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/pickaxe, /obj/item/weapon/twohanded/spear, /obj/item/weapon/twohanded/bonespear, /obj/item/organ/regenerative_core/legion, /obj/item/weapon/kitchen/knife/combat/bone, /obj/item/weapon/kitchen/knife/combat/survival) armor = list(melee = 35, bullet = 10, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 60, acid = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath body_parts_covered = CHEST|GROIN|ARMS diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index a14d301a31..91278beb23 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -1,24 +1,35 @@ /datum/personal_crafting var/busy var/viewing_category = 1 //typical powergamer starting on the Weapons tab - var/list/categories = list(CAT_WEAPON, - CAT_AMMO, + var/viewing_subcategory = 1 + var/list/categories = list( + CAT_WEAPONRY, CAT_ROBOT, CAT_MISC, CAT_PRIMAL, - CAT_BREAD, - CAT_BURGER, - CAT_CAKE, - CAT_EGG, - CAT_MEAT, - CAT_MISCFOOD, - CAT_PASTRY, - CAT_PIE, - CAT_PIZZA, - CAT_SALAD, - CAT_SANDWICH, - CAT_SOUP, - CAT_SPAGHETTI) + CAT_FOOD) + var/list/subcategories = list( + list( //Weapon subcategories + CAT_WEAPON, + CAT_AMMO), + CAT_NONE, //Robot subcategories + CAT_NONE, //Misc subcategories + CAT_NONE, //Tribal subcategories + list( //Food subcategories + CAT_BREAD, + CAT_BURGER, + CAT_CAKE, + CAT_EGG, + CAT_MEAT, + CAT_MISCFOOD, + CAT_PASTRY, + CAT_PIE, + CAT_PIZZA, + CAT_SALAD, + CAT_SANDWICH, + CAT_SOUP, + CAT_SPAGHETTI)) + var/datum/action/innate/crafting/button var/display_craftable_only = FALSE var/display_compact = TRUE @@ -262,11 +273,19 @@ /datum/personal_crafting/ui_data(mob/user) var/list/data = list() + var/list/subs = list() + var/cur_subcategory = CAT_NONE var/cur_category = categories[viewing_category] + if (islist(subcategories[viewing_category])) + subs = subcategories[viewing_category] + cur_subcategory = subs[viewing_subcategory] data["busy"] = busy data["prev_cat"] = categories[prev_cat()] + data["prev_subcat"] = subs[prev_subcat()] data["category"] = cur_category + data["subcategory"] = cur_subcategory data["next_cat"] = categories[next_cat()] + data["next_subcat"] = subs[next_subcat()] data["display_craftable_only"] = display_craftable_only data["display_compact"] = display_compact @@ -275,7 +294,7 @@ var/list/cant_craft = list() for(var/rec in GLOB.crafting_recipes) var/datum/crafting_recipe/R = rec - if(R.category != cur_category) + if((R.category != cur_category) || (R.subcategory != cur_subcategory)) continue if(check_contents(R, surroundings)) can_craft += list(build_recipe_data(R)) @@ -302,29 +321,41 @@ busy = 0 ui_interact(usr) if("forwardCat") //Meow - viewing_category = next_cat() - to_chat(usr, "Category is now [categories[viewing_category]].") + viewing_category = next_cat(FALSE) . = TRUE if("backwardCat") - viewing_category = prev_cat() - to_chat(usr, "Category is now [categories[viewing_category]].") + viewing_category = prev_cat(FALSE) + . = TRUE + if("forwardSubCat") + viewing_subcategory = next_subcat() + . = TRUE + if("backwardSubCat") + viewing_subcategory = prev_subcat() . = TRUE if("toggle_recipes") display_craftable_only = !display_craftable_only - to_chat(usr, "You will now [display_craftable_only ? "only see recipes you can craft":"see all recipes"].") . = TRUE if("toggle_compact") display_compact = !display_compact - to_chat(usr, "Crafting menu is now [display_compact? "compact" : "full size"].") . = TRUE //Next works nicely with modular arithmetic -/datum/personal_crafting/proc/next_cat() +/datum/personal_crafting/proc/next_cat(readonly = TRUE) + if (!readonly) + viewing_subcategory = 1 . = viewing_category % categories.len + 1 +/datum/personal_crafting/proc/next_subcat() + if(islist(subcategories[viewing_category])) + var/list/subs = subcategories[viewing_category] + . = viewing_subcategory % subs.len + 1 + + //Previous can go fuck itself -/datum/personal_crafting/proc/prev_cat() +/datum/personal_crafting/proc/prev_cat(readonly = TRUE) + if (!readonly) + viewing_subcategory = 1 if(viewing_category == categories.len) . = viewing_category-1 else @@ -332,6 +363,18 @@ if(. <= 0) . = categories.len +/datum/personal_crafting/proc/prev_subcat() + if(islist(subcategories[viewing_category])) + var/list/subs = subcategories[viewing_category] + if(viewing_subcategory == subs.len) + . = viewing_subcategory-1 + else + . = viewing_subcategory % subs.len - 1 + if(. <= 0) + . = subs.len + else + . = null + /datum/personal_crafting/proc/build_recipe_data(datum/crafting_recipe/R) var/list/data = list() diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index a489d0fb6a..b5fe59f019 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -8,6 +8,7 @@ var/parts[] = list() //type paths of items that will be placed in the result var/chem_catalysts[] = list() //like tools but for reagents var/category = CAT_NONE //where it shows up in the crafting UI + var/subcategory = CAT_NONE /datum/crafting_recipe/pin_removal @@ -17,7 +18,8 @@ parts = list(/obj/item/weapon/gun = 1) tools = list(/obj/item/weapon/weldingtool, /obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters) time = 50 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/IED name = "IED" @@ -28,7 +30,8 @@ /obj/item/weapon/reagent_containers/food/drinks/soda_cans = 1) parts = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans = 1) time = 15 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/lance name = "explosive lance (grenade)" @@ -38,7 +41,8 @@ parts = list(/obj/item/weapon/twohanded/spear = 1, /obj/item/weapon/grenade = 1) time = 15 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/strobeshield name = "strobe shield" @@ -47,7 +51,8 @@ /obj/item/device/assembly/flash/handheld = 1, /obj/item/weapon/shield/riot = 1) time = 40 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/molotov name = "Molotov" @@ -56,7 +61,8 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle = 1) parts = list(/obj/item/weapon/reagent_containers/food/drinks/bottle = 1) time = 40 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/stunprod name = "Stunprod" @@ -65,7 +71,8 @@ /obj/item/stack/rods = 1, /obj/item/device/assembly/igniter = 1) time = 40 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/teleprod name = "Teleprod" @@ -75,7 +82,8 @@ /obj/item/device/assembly/igniter = 1, /obj/item/weapon/ore/bluespace_crystal = 1) time = 40 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/bola name = "Bola" @@ -84,6 +92,7 @@ /obj/item/stack/sheet/metal = 6) time = 20//15 faster than crafting them by hand! category= CAT_WEAPON + subcategory = CAT_WEAPON /datum/crafting_recipe/tailclub name = "Tail Club" @@ -91,7 +100,8 @@ reqs = list(/obj/item/severedtail = 1, /obj/item/stack/sheet/metal = 1) time = 40 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/tailwhip name = "Liz O' Nine Tails" @@ -99,7 +109,8 @@ reqs = list(/obj/item/severedtail = 1, /obj/item/stack/cable_coil = 1) time = 40 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/ed209 name = "ED209" @@ -159,6 +170,18 @@ time = 40 category = CAT_ROBOT +/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but + name = "Pneumatic Cannon" + result = /obj/item/weapon/pneumatic_cannon/ghetto + tools = list(/obj/item/weapon/weldingtool, + /obj/item/weapon/wrench) + reqs = list(/obj/item/stack/sheet/metal = 4, + /obj/item/stack/packageWrap = 8, + /obj/item/pipe = 2) + time = 300 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + /datum/crafting_recipe/flamethrower name = "Flamethrower" result = /obj/item/weapon/flamethrower @@ -169,7 +192,8 @@ /obj/item/weapon/weldingtool = 1) tools = list(/obj/item/weapon/screwdriver) time = 10 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/meteorshot name = "Meteorshot Shell" @@ -179,7 +203,8 @@ /obj/item/weapon/stock_parts/manipulator = 2) tools = list(/obj/item/weapon/screwdriver) time = 5 - category = CAT_AMMO + category = CAT_WEAPONRY + subcategory = CAT_AMMO /datum/crafting_recipe/pulseslug name = "Pulse Slug Shell" @@ -189,7 +214,8 @@ /obj/item/weapon/stock_parts/micro_laser/ultra = 1) tools = list(/obj/item/weapon/screwdriver) time = 5 - category = CAT_AMMO + category = CAT_WEAPONRY + subcategory = CAT_AMMO /datum/crafting_recipe/dragonsbreath name = "Dragonsbreath Shell" @@ -197,7 +223,8 @@ reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,/datum/reagent/phosphorus = 5) tools = list(/obj/item/weapon/screwdriver) time = 5 - category = CAT_AMMO + category = CAT_WEAPONRY + subcategory = CAT_AMMO /datum/crafting_recipe/frag12 name = "FRAG-12 Shell" @@ -208,7 +235,8 @@ /datum/reagent/toxin/acid/fluacid = 5) tools = list(/obj/item/weapon/screwdriver) time = 5 - category = CAT_AMMO + category = CAT_WEAPONRY + subcategory = CAT_AMMO /datum/crafting_recipe/ionslug name = "Ion Scatter Shell" @@ -218,7 +246,8 @@ /obj/item/weapon/stock_parts/subspace/crystal = 1) tools = list(/obj/item/weapon/screwdriver) time = 5 - category = CAT_AMMO + category = CAT_WEAPONRY + subcategory = CAT_AMMO /datum/crafting_recipe/improvisedslug name = "Improvised Shotgun Shell" @@ -229,7 +258,8 @@ /datum/reagent/fuel = 10) tools = list(/obj/item/weapon/screwdriver) time = 5 - category = CAT_AMMO + category = CAT_WEAPONRY + subcategory = CAT_AMMO /datum/crafting_recipe/improvisedslugoverload name = "Overload Improvised Shell" @@ -239,7 +269,8 @@ /datum/reagent/toxin/plasma = 20) tools = list(/obj/item/weapon/screwdriver) time = 5 - category = CAT_AMMO + category = CAT_WEAPONRY + subcategory = CAT_AMMO /datum/crafting_recipe/laserslug name = "Laser Slug Shell" @@ -249,7 +280,8 @@ /obj/item/weapon/stock_parts/micro_laser/high = 1) tools = list(/obj/item/weapon/screwdriver) time = 5 - category = CAT_AMMO + category = CAT_WEAPONRY + subcategory = CAT_AMMO /datum/crafting_recipe/ishotgun name = "Improvised Shotgun" @@ -260,7 +292,8 @@ /obj/item/stack/packageWrap = 5) tools = list(/obj/item/weapon/screwdriver) time = 100 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/chainsaw name = "Chainsaw" @@ -270,7 +303,8 @@ /obj/item/stack/sheet/plasteel = 1) tools = list(/obj/item/weapon/weldingtool) time = 50 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/spear name = "Spear" @@ -279,7 +313,8 @@ /obj/item/weapon/shard = 1, /obj/item/stack/rods = 1) time = 40 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/spooky_camera name = "Camera Obscura" @@ -354,7 +389,8 @@ ) parts = list(/obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/grenade/chem_grenade = 2) time = 30 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/chemical_payload2 name = "Chemical Payload (gibtonite)" @@ -366,7 +402,8 @@ ) parts = list(/obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/grenade/chem_grenade = 2) time = 50 - category = CAT_WEAPON + category = CAT_WEAPONRY + subcategory = CAT_WEAPON /datum/crafting_recipe/bonearmor name = "Bone Armor" diff --git a/code/modules/events/devil.dm b/code/modules/events/devil.dm index 69648fa95a..0b49f38343 100644 --- a/code/modules/events/devil.dm +++ b/code/modules/events/devil.dm @@ -14,9 +14,7 @@ /datum/round_event/ghost_role/devil/spawn_role() //selecting a spawn_loc - var/list/spawn_locs = GLOB.latejoin - var/spawn_loc = pick(spawn_locs) - if(!spawn_loc) + if(!SSjob.latejoin_trackers.len) return MAP_ERROR //selecting a candidate player @@ -30,7 +28,7 @@ var/datum/mind/Mind = create_devil_mind(key) Mind.active = 1 - var/mob/living/carbon/human/devil = create_event_devil(spawn_loc) + var/mob/living/carbon/human/devil = create_event_devil() Mind.transfer_to(devil) add_devil(devil, ascendable = FALSE) @@ -45,6 +43,8 @@ /proc/create_event_devil(spawn_loc) var/mob/living/carbon/human/new_devil = new(spawn_loc) + if(!spawn_loc) + SSjob.SendToLateJoin(new_devil) var/datum/preferences/A = new() //Randomize appearance for the devil. A.copy_to(new_devil) new_devil.dna.update_dna_identity() diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index a7a7d70720..2b46d82df1 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -21,8 +21,8 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 /datum/round_event/immovable_rod/start() var/startside = pick(GLOB.cardinal) - var/turf/startT = spaceDebrisStartLoc(startside, 1) - var/turf/endT = spaceDebrisFinishLoc(startside, 1) + var/turf/startT = spaceDebrisStartLoc(startside, ZLEVEL_STATION) + var/turf/endT = spaceDebrisFinishLoc(startside, ZLEVEL_STATION) new /obj/effect/immovablerod(startT, endT) /obj/effect/immovablerod diff --git a/code/modules/fields/peaceborg_dampener.dm b/code/modules/fields/peaceborg_dampener.dm index 5d2d2829a9..ed7a3737ee 100644 --- a/code/modules/fields/peaceborg_dampener.dm +++ b/code/modules/fields/peaceborg_dampener.dm @@ -54,6 +54,7 @@ var/obj/effect/abstract/proximity_checker/advanced/F = edge_turfs[T] F.appearance = I.appearance F.invisibility = 0 + F.mouse_opacity = 0 F.layer = 5 /datum/proximity_monitor/advanced/peaceborg_dampener/cleanup_edge_turf(turf/T) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 9710098c5f..cacfbd101b 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -437,7 +437,7 @@ Gunshots/explosions/opening doors/less rare audio (done) var/list/image/delusions = list() /obj/effect/hallucination/delusion/Initialize(mapload, mob/living/carbon/T,force_kind = null , duration = 300,skip_nearby = 1, custom_icon = null, custom_icon_file = null) - ..() + . = ..() target = T var/image/A = null var/kind = force_kind ? force_kind : pick("clown","corgi","carp","skeleton","demon","zombie") diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 43be7ad747..2f810d70d7 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -147,15 +147,7 @@ if(product_types[dispense_cone] >= 1) product_types[dispense_cone] -= 1 var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = new(src.loc) - I.cone_type = cone_name - I.icon_state = "icecream_cone_[cone_name]" - switch (I.cone_type) - if ("waffle") - I.reagents.add_reagent("nutriment", 1) - if ("chocolate") - I.reagents.add_reagent("cocoa", 1) // chocolate ain't as nutritious kids - - I.desc = "Delicious [cone_name] cone, but no ice cream." + I.set_cone_type(cone_name) src.visible_message("[usr] dispenses a crunchy [cone_name] cone from [src].") else to_chat(usr, "There are no [cone_name] cones left!") @@ -187,10 +179,23 @@ var/cone_type bitesize = 3 -/obj/item/weapon/reagent_containers/food/snacks/icecream/New() +/obj/item/weapon/reagent_containers/food/snacks/icecream/Initialize() + . = ..() create_reagents(20) reagents.add_reagent("nutriment", 4) +/obj/item/weapon/reagent_containers/food/snacks/icecream/proc/set_cone_type(var/cone_name) + cone_type = cone_name + icon_state = "icecream_cone_[cone_name]" + switch (cone_type) + if ("waffle") + reagents.add_reagent("nutriment", 1) + if ("chocolate") + reagents.add_reagent("cocoa", 1) // chocolate ain't as nutritious kids + + desc = "Delicious [cone_name] cone, but no ice cream." + + /obj/item/weapon/reagent_containers/food/snacks/icecream/proc/add_ice_cream(var/flavour_name) name = "[flavour_name] icecream" src.add_overlay("icecream_[flavour_name]") @@ -206,8 +211,15 @@ if ("blue") desc = "A delicious [cone_type] cone filled with blue ice cream. Made with real... blue?" reagents.add_reagent("singulo", 2) + if ("mob") + desc = "A suspicious [cone_type] cone filled with bright red ice cream. That's probably not strawberry..." + reagents.add_reagent("liquidgibs", 2) ice_creamed = 1 +/obj/item/weapon/reagent_containers/food/snacks/icecream/proc/add_mob_flavor(var/mob/M) + add_ice_cream("mob") + name = "[M.name] icecream" + /obj/machinery/icecream_vat/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) new /obj/item/stack/sheet/metal(loc, 4) diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index 314ee2c8e2..17662feb6e 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -1,5 +1,6 @@ /datum/crafting_recipe/food var/real_parts + category = CAT_FOOD /datum/crafting_recipe/food/New() real_parts = parts.Copy() diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm index d0682ced1e..3888207011 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm @@ -11,7 +11,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/meat - category = CAT_BREAD + subcategory = CAT_BREAD /datum/crafting_recipe/food/xenomeatbread name = "Xenomeat bread" @@ -21,7 +21,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/xenomeat - category = CAT_BREAD + subcategory = CAT_BREAD /datum/crafting_recipe/food/spidermeatbread name = "Spidermeat bread" @@ -31,7 +31,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/spidermeat - category = CAT_BREAD + subcategory = CAT_BREAD /datum/crafting_recipe/food/banananutbread name = "Banana nut bread" @@ -42,7 +42,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/banana - category = CAT_BREAD + subcategory = CAT_BREAD /datum/crafting_recipe/food/tofubread name = "Tofu bread" @@ -52,7 +52,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/tofu - category = CAT_BREAD + subcategory = CAT_BREAD /datum/crafting_recipe/food/creamcheesebread name = "Cream cheese bread" @@ -62,7 +62,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/creamcheese - category = CAT_BREAD + subcategory = CAT_BREAD /datum/crafting_recipe/food/mimanabread name = "Mimana bread" @@ -73,7 +73,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/banana/mime = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/mimana - category = CAT_BREAD + subcategory = CAT_BREAD /datum/crafting_recipe/food/butteredtoast name = "Buttered Toast" @@ -82,7 +82,7 @@ /obj/item/weapon/reagent_containers/food/snacks/butter = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/butteredtoast - category = CAT_BREAD + subcategory = CAT_BREAD /datum/crafting_recipe/food/butterbiscuit name = "Butter Biscuit" @@ -91,5 +91,5 @@ /obj/item/weapon/reagent_containers/food/snacks/butter = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/butterbiscuit - category = CAT_BREAD + subcategory = CAT_BREAD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm index 573574f4e9..4a150faad7 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm @@ -14,7 +14,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain/human = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/human - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/burger name = "Burger" @@ -24,7 +24,7 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/plain - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/corgiburger name = "Corgi burger" @@ -34,7 +34,7 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/corgi - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/appendixburger name = "Appendix burger" @@ -43,7 +43,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/appendix - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/brainburger name = "Brain burger" @@ -52,7 +52,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/brain - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/xenoburger name = "Xeno burger" @@ -61,7 +61,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/xeno - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/bearger name = "Bearger" @@ -70,7 +70,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/bearger - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/fishburger name = "Fish burger" @@ -79,7 +79,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/fish - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/tofuburger name = "Tofu burger" @@ -88,7 +88,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/tofu - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/ghostburger name = "Ghost burger" @@ -97,7 +97,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/ghost - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/clownburger name = "Clown burger" @@ -106,7 +106,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/clown - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/mimeburger name = "Mime burger" @@ -115,7 +115,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/mime - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/redburger name = "Red burger" @@ -125,7 +125,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/red - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/orangeburger name = "Orange burger" @@ -135,7 +135,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/orange - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/yellowburger name = "Yellow burger" @@ -145,7 +145,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/yellow - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/greenburger name = "Green burger" @@ -155,7 +155,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/green - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/blueburger name = "Blue burger" @@ -165,7 +165,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/blue - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/purpleburger name = "Purple burger" @@ -175,7 +175,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/purple - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/spellburger name = "Spell burger" @@ -183,7 +183,7 @@ /obj/item/clothing/head/wizard/fake = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/spellburger2 name = "Spell burger" @@ -192,7 +192,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/bigbiteburger name = "Big bite burger" @@ -201,7 +201,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/bigbite - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/superbiteburger name = "Super bite burger" @@ -216,7 +216,7 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/superbite - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/slimeburger name = "Jelly burger" @@ -225,7 +225,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/slime - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/jellyburger name = "Jelly burger" @@ -234,7 +234,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/cherry - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/fivealarmburger name = "Five alarm burger" @@ -243,7 +243,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/fivealarm - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/ratburger name = "Rat burger" @@ -252,7 +252,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/rat - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/baseballburger name = "Home run baseball burger" @@ -261,7 +261,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/baseball - category = CAT_BURGER + subcategory = CAT_BURGER /datum/crafting_recipe/food/baconburger name = "Bacon Burger" @@ -272,4 +272,4 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/baconburger - category = CAT_BURGER + subcategory = CAT_BURGER diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm index 439db2986b..af288dddfc 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm @@ -10,7 +10,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/carrot - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/cheesecake name = "Cheese cake" @@ -19,7 +19,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/cheese - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/applecake name = "Apple cake" @@ -28,7 +28,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/apple = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/apple - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/orangecake name = "Orange cake" @@ -37,7 +37,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/orange - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/limecake name = "Lime cake" @@ -46,7 +46,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/lime - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/lemoncake name = "Lemon cake" @@ -55,7 +55,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/lemon - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/chocolatecake name = "Chocolate cake" @@ -64,7 +64,7 @@ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/chocolate - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/birthdaycake name = "Birthday cake" @@ -73,7 +73,7 @@ /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/birthday - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/braincake name = "Brain cake" @@ -82,7 +82,7 @@ /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/brain - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/slimecake name = "Slime cake" @@ -91,7 +91,7 @@ /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/slimecake - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/pumpkinspicecake name = "Pumpkin spice cake" @@ -100,7 +100,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/pumpkinspice - category = CAT_CAKE + subcategory = CAT_CAKE /datum/crafting_recipe/food/cak name = "Living cat/cake hybrid" @@ -114,4 +114,4 @@ /datum/reagent/teslium = 1 //To shock the whole thing into life ) result = /mob/living/simple_animal/pet/cat/cak - category = CAT_CAKE //Cat! Haha, get it? CAT? GET IT??? + subcategory = CAT_CAKE //Cat! Haha, get it? CAT? GET IT??? diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm index c03fbe4710..f1e96f526e 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm @@ -11,7 +11,7 @@ /obj/item/weapon/reagent_containers/food/snacks/boiledegg = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/friedegg - category = CAT_EGG + subcategory = CAT_EGG /datum/crafting_recipe/food/omelette name = "omelette" @@ -20,7 +20,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/omelette - category = CAT_EGG + subcategory = CAT_EGG /datum/crafting_recipe/food/chocolateegg name = "Chocolate egg" @@ -29,7 +29,7 @@ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/chocolateegg - category = CAT_EGG + subcategory = CAT_EGG /datum/crafting_recipe/food/eggsbenedict name = "Eggs benedict" @@ -39,4 +39,4 @@ /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/benedict - category = CAT_EGG + subcategory = CAT_EGG diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index 878dda1804..60d949bb9d 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -9,7 +9,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain/human = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/kebab/human - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/kebab name = "Kebab" @@ -18,7 +18,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/steak = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/kebab/monkey - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/tofukebab name = "Tofu kebab" @@ -27,7 +27,7 @@ /obj/item/weapon/reagent_containers/food/snacks/tofu = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/kebab/tofu - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/tailkebab name = "Lizard tail kebab" @@ -36,7 +36,7 @@ /obj/item/severedtail = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/kebab/tail - category = CAT_MEAT + subcategory = CAT_MEAT // see code/module/crafting/table.dm @@ -50,7 +50,7 @@ /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/cubancarp - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/fishandchips name = "Fish and chips" @@ -59,7 +59,7 @@ /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/fishfingers name = "Fish fingers" @@ -69,7 +69,7 @@ /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/sashimi name = "Sashimi" @@ -79,7 +79,7 @@ /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/sashimi - category = CAT_MEAT + subcategory = CAT_MEAT ////////////////////////////////////////////////MR SPIDER//////////////////////////////////////////////// @@ -91,7 +91,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/spider = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/spidereggsham - category = CAT_MEAT + subcategory = CAT_MEAT ////////////////////////////////////////////////MISC RECIPE's//////////////////////////////////////////////// @@ -103,7 +103,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/cornedbeef - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/bearsteak name = "Filet migrawr" @@ -113,7 +113,7 @@ ) tools = list(/obj/item/weapon/lighter) result = /obj/item/weapon/reagent_containers/food/snacks/bearsteak - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/enchiladas name = "Enchiladas" @@ -123,7 +123,7 @@ /obj/item/weapon/reagent_containers/food/snacks/tortilla = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/stewedsoymeat name = "Stewed soymeat" @@ -133,7 +133,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/sausage name = "Sausage" @@ -142,7 +142,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/sausage - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/nugget name = "Chicken nugget" @@ -150,7 +150,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/nugget - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/rawkhinkali name = "Raw Khinkali" @@ -159,7 +159,7 @@ /obj/item/weapon/reagent_containers/food/snacks/faggot = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/rawkhinkali - category = CAT_MEAT + subcategory = CAT_MEAT /datum/crafting_recipe/food/pigblanket name = "Pig in a Blanket" @@ -169,4 +169,4 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pigblanket - category = CAT_MEAT + subcategory = CAT_MEAT diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index fff76d630f..606c897d61 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -10,7 +10,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/apple = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/chococoin name = "Choco coin" @@ -19,7 +19,7 @@ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/chococoin - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/fudgedice name = "Fudge dice" @@ -28,7 +28,7 @@ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/fudgedice - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/chocoorange name = "Choco orange" @@ -37,7 +37,7 @@ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/chocoorange - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/loadedbakedpotato name = "Loaded baked potato" @@ -47,7 +47,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/cheesyfries name = "Cheesy fries" @@ -56,7 +56,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/wrap name = "Wrap" @@ -65,7 +65,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/eggwrap - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/beans name = "Beans" @@ -74,7 +74,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/beans - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/eggplantparm name ="Eggplant parmigiana" @@ -83,7 +83,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/baguette name = "Baguette" @@ -93,7 +93,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/baguette - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD ////////////////////////////////////////////////TOAST//////////////////////////////////////////////// @@ -104,7 +104,7 @@ /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/jelliedyoast name = "Jellied toast" @@ -113,7 +113,7 @@ /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/twobread name = "Two bread" @@ -122,7 +122,7 @@ /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/twobread - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/burrito name ="Burrito" @@ -131,7 +131,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/burrito - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/cheesyburrito name ="Cheesy burrito" @@ -141,7 +141,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/cheesyburrito - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/carneburrito name ="Carne de asada burrito" @@ -151,7 +151,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/carneburrito - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/fuegoburrito name ="Fuego plasma burrito" @@ -161,7 +161,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/fuegoburrito - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/melonfruitbowl name ="Melon fruit bowl" @@ -174,7 +174,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/melonfruitbowl - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/spacefreezy name ="Space freezy" @@ -184,7 +184,7 @@ /obj/item/weapon/reagent_containers/food/snacks/icecream = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/spacefreezy - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/sundae name ="Sundae" @@ -195,7 +195,7 @@ /obj/item/weapon/reagent_containers/food/snacks/icecream = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/sundae - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/honkdae name ="Honkdae" @@ -207,7 +207,7 @@ /obj/item/weapon/reagent_containers/food/snacks/icecream = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/honkdae - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/nachos name ="Nachos" @@ -216,7 +216,7 @@ /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/nachos - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/cheesynachos name ="Cheesy nachos" @@ -226,7 +226,7 @@ /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/cheesynachos - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/cubannachos name ="Cuban nachos" @@ -236,7 +236,7 @@ /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/cubannachos - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/melonkeg name ="Melon keg" @@ -247,7 +247,7 @@ ) parts = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka = 1) result = /obj/item/weapon/reagent_containers/food/snacks/melonkeg - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/honeybar name = "Honey nut bar" @@ -256,7 +256,7 @@ /datum/reagent/consumable/honey = 5 ) result = /obj/item/weapon/reagent_containers/food/snacks/honeybar - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/stuffedlegion @@ -264,12 +264,12 @@ time = 40 reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/goliath = 1, - /obj/item/organ/hivelord_core/legion = 1, + /obj/item/organ/regenerative_core/legion = 1, /datum/reagent/consumable/ketchup = 2, /datum/reagent/consumable/capsaicin = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/stuffedlegion - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/lizardwine @@ -280,7 +280,7 @@ /datum/reagent/consumable/ethanol = 100 ) result = /obj/item/weapon/reagent_containers/food/drinks/bottle/lizardwine - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/powercrepe @@ -294,7 +294,7 @@ /obj/item/weapon/melee/sabre = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/powercrepe - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/taco name ="Classic Taco" @@ -305,7 +305,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/taco - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/tacoplain name ="Plain Taco" @@ -315,7 +315,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/taco/plain - category = CAT_MISCFOOD + subcategory = CAT_MISCFOOD /datum/crafting_recipe/food/branrequests name = "Bran Requests Cereal" diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index fd943379e0..b20a957546 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -11,7 +11,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/donut time = 15 @@ -21,7 +21,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/donut - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/jellydonut name = "Jelly donut" @@ -30,7 +30,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/cherryjellydonut name = "Cherry jelly donut" @@ -39,7 +39,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/slimejellydonut name = "Slime jelly donut" @@ -48,7 +48,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/slimejelly - category = CAT_PASTRY + subcategory = CAT_PASTRY ////////////////////////////////////////////////WAFFLES//////////////////////////////////////////////// @@ -59,7 +59,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/waffles - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/soylenviridians @@ -69,7 +69,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/soylentgreen name = "Soylent green" @@ -78,7 +78,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/soylentgreen - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/rofflewaffles @@ -88,7 +88,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles - category = CAT_PASTRY + subcategory = CAT_PASTRY ////////////////////////////////////////////////DONKPOCCKETS//////////////////////////////////////////////// @@ -100,7 +100,7 @@ /obj/item/weapon/reagent_containers/food/snacks/faggot = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/dankpocket time = 15 @@ -110,7 +110,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/cannabis = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/dankpocket - category = CAT_PASTRY + subcategory = CAT_PASTRY ////////////////////////////////////////////////MUFFINS//////////////////////////////////////////////// @@ -122,7 +122,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/muffin - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/berrymuffin name = "Berry muffin" @@ -132,7 +132,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/berries = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/muffin/berry - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/booberrymuffin name = "Booberry muffin" @@ -143,7 +143,7 @@ /obj/item/weapon/ectoplasm = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/muffin/booberry - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/chawanmushi name = "Chawanmushi" @@ -154,7 +154,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/chawanmushi - category = CAT_PASTRY + subcategory = CAT_PASTRY ////////////////////////////////////////////OTHER//////////////////////////////////////////// @@ -166,7 +166,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sausage = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/hotdog - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/meatbun name = "Meat bun" @@ -177,7 +177,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/meatbun - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/khachapuri name = "Khachapuri" @@ -187,7 +187,7 @@ /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/khachapuri - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/sugarcookie time = 15 @@ -197,7 +197,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/sugarcookie - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/fortunecookie time = 15 @@ -210,7 +210,7 @@ /obj/item/weapon/paper = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/poppypretzel time = 15 @@ -220,7 +220,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/plumphelmetbiscuit time = 15 @@ -230,7 +230,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/cracker time = 15 @@ -240,7 +240,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/cracker - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/chococornet name = "Choco cornet" @@ -250,7 +250,7 @@ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/chococornet - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/oatmealcookie name = "Oatmeal cookie" @@ -268,7 +268,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/oat = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/raisincookie - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/cherrycupcake name = "Cherry cupcake" @@ -277,7 +277,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/cherries = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/cherrycupcake - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/bluecherrycupcake name = "Blue cherry cupcake" @@ -286,7 +286,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/bluecherrycupcake - category = CAT_PASTRY + subcategory = CAT_PASTRY /datum/crafting_recipe/food/honeybun name = "Honey bun" @@ -295,4 +295,4 @@ /datum/reagent/consumable/honey = 5 ) result = /obj/item/weapon/reagent_containers/food/snacks/honeybun - category = CAT_PASTRY + subcategory = CAT_PASTRY diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm index df47c64de7..f1628d41bc 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm @@ -11,7 +11,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/cream - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/meatpie name = "Meat pie" @@ -22,7 +22,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/meatpie - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/tofupie name = "Tofu pie" @@ -31,7 +31,7 @@ /obj/item/weapon/reagent_containers/food/snacks/tofu = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/tofupie - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/xenopie name = "Xeno pie" @@ -40,7 +40,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/xeno = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/xemeatpie - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/cherrypie name = "Cherry pie" @@ -49,7 +49,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/cherries = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/cherrypie - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/berryclafoutis name = "Berry clafoutis" @@ -58,7 +58,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/berries = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/berryclafoutis - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/bearypie name = "Beary Pie" @@ -68,7 +68,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/steak/bear = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/bearypie - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/amanitapie name = "Amanita pie" @@ -77,7 +77,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/amanita_pie - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/plumppie name = "Plump pie" @@ -86,7 +86,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/applepie name = "Apple pie" @@ -95,7 +95,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/apple = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/applepie - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/pumpkinpie name = "Pumpkin pie" @@ -106,7 +106,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/pumpkinpie - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/goldenappletart name = "Golden apple tart" @@ -117,7 +117,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/appletart - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/grapetart name = "Grape tart" @@ -128,7 +128,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/grapes = 3 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/grapetart - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/blumpkinpie name = "Blumpkin pie" @@ -139,7 +139,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/blumpkinpie - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/dulcedebatata name = "Dulce de batata" @@ -149,7 +149,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/dulcedebatata - category = CAT_PIE + subcategory = CAT_PIE /datum/crafting_recipe/food/frostypie name = "Frosty pie" @@ -158,4 +158,4 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pie/frostypie - category = CAT_PIE + subcategory = CAT_PIE diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm index 8bb73ad7c8..95580df603 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm @@ -11,7 +11,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pizza/margherita - category = CAT_PIZZA + subcategory = CAT_PIZZA /datum/crafting_recipe/food/meatpizza name = "Meat pizza" @@ -22,7 +22,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pizza/meat - category = CAT_PIZZA + subcategory = CAT_PIZZA /datum/crafting_recipe/food/mushroompizza name = "Mushroom pizza" @@ -31,7 +31,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom = 5 ) result = /obj/item/weapon/reagent_containers/food/snacks/pizza/mushroom - category = CAT_PIZZA + subcategory = CAT_PIZZA /datum/crafting_recipe/food/vegetablepizza name = "Vegetable pizza" @@ -43,7 +43,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pizza/vegetable - category = CAT_PIZZA + subcategory = CAT_PIZZA /datum/crafting_recipe/food/donpocketpizza name = "Donkpocket pizza" @@ -54,7 +54,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pizza/donkpocket - category = CAT_PIZZA + subcategory = CAT_PIZZA /datum/crafting_recipe/food/dankpizza name = "Dank pizza" @@ -65,7 +65,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pizza/dank - category = CAT_PIZZA + subcategory = CAT_PIZZA /datum/crafting_recipe/food/sassysagepizza name = "Sassysage pizza" @@ -76,4 +76,4 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/pizza/sassysage - category = CAT_PIZZA + subcategory = CAT_PIZZA diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm index d60fc34083..66ed6f40ee 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm @@ -11,7 +11,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/apple = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/salad/herbsalad - category = CAT_SALAD + subcategory = CAT_SALAD /datum/crafting_recipe/food/aesirsalad name = "Aesir salad" @@ -21,7 +21,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/salad/aesirsalad - category = CAT_SALAD + subcategory = CAT_SALAD /datum/crafting_recipe/food/validsalad name = "Valid salad" @@ -32,7 +32,7 @@ /obj/item/weapon/reagent_containers/food/snacks/faggot = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/salad/validsalad - category = CAT_SALAD + subcategory = CAT_SALAD /datum/crafting_recipe/food/monkeysdelight name = "Monkeys delight" @@ -45,7 +45,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/monkeysdelight - category = CAT_SALAD + subcategory = CAT_SALAD /datum/crafting_recipe/food/oatmeal name = "Oatmeal" @@ -55,7 +55,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/oat = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/salad/oatmeal - category = CAT_SALAD + subcategory = CAT_SALAD /datum/crafting_recipe/food/fruitsalad name = "Fruit salad" @@ -68,7 +68,7 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/salad/fruit - category = CAT_SALAD + subcategory = CAT_SALAD /datum/crafting_recipe/food/junglesalad name = "Jungle salad" @@ -81,7 +81,7 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/salad/jungle - category = CAT_SALAD + subcategory = CAT_SALAD /datum/crafting_recipe/food/citrusdelight name = "Citrus delight" @@ -93,7 +93,7 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/salad/citrusdelight - category = CAT_SALAD + subcategory = CAT_SALAD /datum/crafting_recipe/food/ricepork name = "Rice and pork" @@ -102,7 +102,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/salad/ricepork - category = CAT_SALAD + subcategory = CAT_SALAD /datum/crafting_recipe/food/eggbowl name = "Egg bowl" @@ -113,7 +113,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/corn = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/salad/eggbowl - category = CAT_SALAD + subcategory = CAT_SALAD /datum/crafting_recipe/food/ricepudding name = "Rice pudding" @@ -123,4 +123,4 @@ /obj/item/weapon/reagent_containers/food/snacks/salad/boiledrice = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/salad/ricepudding - category = CAT_SALAD + subcategory = CAT_SALAD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm index 3880dbdeca..f2ed7da6aa 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm @@ -14,7 +14,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/sandwich - category = CAT_SANDWICH + subcategory = CAT_SANDWICH /datum/crafting_recipe/food/grilledcheesesandwich name = "Grilled cheese sandwich" @@ -23,7 +23,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese - category = CAT_SANDWICH + subcategory = CAT_SANDWICH /datum/crafting_recipe/food/slimesandwich name = "Jelly sandwich" @@ -32,7 +32,7 @@ /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, ) result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime - category = CAT_SANDWICH + subcategory = CAT_SANDWICH /datum/crafting_recipe/food/cherrysandwich name = "Jelly sandwich" @@ -41,7 +41,7 @@ /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, ) result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry - category = CAT_SANDWICH + subcategory = CAT_SANDWICH /datum/crafting_recipe/food/icecreamsandwich name = "Icecream sandwich" @@ -51,7 +51,7 @@ /obj/item/weapon/reagent_containers/food/snacks/icecream = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich - category = CAT_SANDWICH + subcategory = CAT_SANDWICH /datum/crafting_recipe/food/notasandwich name = "Not a sandwich" @@ -60,7 +60,7 @@ /obj/item/clothing/mask/fakemoustache = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/notasandwich - category = CAT_SANDWICH + subcategory = CAT_SANDWICH diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm index 8ab865f65d..9a2a39c8f2 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm @@ -13,7 +13,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/potato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/meatball - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/vegetablesoup name = "Vegetable soup" @@ -26,7 +26,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/potato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/vegetable - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/nettlesoup name = "Nettle soup" @@ -38,7 +38,7 @@ /obj/item/weapon/reagent_containers/food/snacks/boiledegg = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/nettle - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/wingfangchu name = "Wingfangchu" @@ -48,7 +48,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/xeno = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/wingfangchu - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/wishsoup name = "Wish soup" @@ -57,7 +57,7 @@ /obj/item/weapon/reagent_containers/glass/bowl = 1 ) result= /obj/item/weapon/reagent_containers/food/snacks/soup/wish - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/hotchili name = "Hot chili" @@ -68,7 +68,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/hotchili - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/coldchili name = "Cold chili" @@ -79,7 +79,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/coldchili - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/tomatosoup name = "Tomato soup" @@ -89,7 +89,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/tomato - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/eyeballsoup name = "Eyeball soup" @@ -100,7 +100,7 @@ /obj/item/organ/eyes = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/tomato/eyeball - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/milosoup @@ -112,7 +112,7 @@ /obj/item/weapon/reagent_containers/food/snacks/tofu = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/milo - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/bloodsoup name = "Blood soup" @@ -122,7 +122,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blood = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/blood - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/slimesoup name = "Slime soup" @@ -132,7 +132,7 @@ /obj/item/weapon/reagent_containers/glass/bowl = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/slime - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/clownstears name = "Clowns tears" @@ -143,7 +143,7 @@ /obj/item/weapon/ore/bananium = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/clownstears - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/mysterysoup name = "Mystery soup" @@ -156,7 +156,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/mystery - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/mushroomsoup name = "Mushroom soup" @@ -167,7 +167,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/mushroom - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/beetsoup name = "Beet soup" @@ -178,7 +178,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/beet - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/stew name = "Stew" @@ -193,7 +193,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/stew - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/spacylibertyduff name = "Spacy liberty duff" @@ -203,7 +203,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap = 3 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/spacylibertyduff - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/amanitajelly name = "Amanita jelly" @@ -213,7 +213,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita = 3 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/amanitajelly - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/sweetpotatosoup name = "Sweet potato soup" @@ -224,7 +224,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/sweetpotato - category = CAT_SOUP + subcategory = CAT_SOUP /datum/crafting_recipe/food/redbeetsoup name = "Red beet soup" @@ -235,4 +235,4 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/soup/beet/red - category = CAT_SOUP + subcategory = CAT_SOUP diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm index 412157033b..ed6dc4bf41 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm @@ -10,7 +10,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato - category = CAT_SPAGHETTI + subcategory = CAT_SPAGHETTI /datum/crafting_recipe/food/copypasta name = "Copypasta" @@ -18,7 +18,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pastatomato = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/copypasta - category = CAT_SPAGHETTI + subcategory = CAT_SPAGHETTI /datum/crafting_recipe/food/spaghettimeatball name = "Spaghetti meatball" @@ -27,7 +27,7 @@ /obj/item/weapon/reagent_containers/food/snacks/faggot = 2 ) result = /obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti - category = CAT_SPAGHETTI + subcategory = CAT_SPAGHETTI /datum/crafting_recipe/food/spesslaw name = "Spesslaw" @@ -36,7 +36,7 @@ /obj/item/weapon/reagent_containers/food/snacks/faggot = 4 ) result = /obj/item/weapon/reagent_containers/food/snacks/spesslaw - category = CAT_SPAGHETTI + subcategory = CAT_SPAGHETTI /datum/crafting_recipe/food/beefnoodle name = "Beef noodle" @@ -47,7 +47,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/beefnoodle - category = CAT_SPAGHETTI + subcategory = CAT_SPAGHETTI /datum/crafting_recipe/food/chowmein name = "Chowmein" @@ -58,7 +58,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/chowmein - category = CAT_SPAGHETTI + subcategory = CAT_SPAGHETTI /datum/crafting_recipe/food/butternoodles name = "Butter Noodles" @@ -67,4 +67,4 @@ /obj/item/weapon/reagent_containers/food/snacks/butter = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/butternoodles - category = CAT_SPAGHETTI \ No newline at end of file + subcategory = CAT_SPAGHETTI \ No newline at end of file diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index 527b6ff736..23655607a8 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -98,9 +98,9 @@ GLOBAL_VAR_CONST(access_away_generic3, 207) GLOBAL_VAR_CONST(access_away_generic4, 208) /obj/var/list/req_access = null -/obj/var/req_access_txt = "0" +/obj/var/req_access_txt = "0" as text /obj/var/list/req_one_access = null -/obj/var/req_one_access_txt = "0" +/obj/var/req_one_access_txt = "0" as text //returns 1 if this mob has sufficient access to use this object /obj/proc/allowed(mob/M) diff --git a/code/modules/mining/equipment/goliath_hide.dm b/code/modules/mining/equipment/goliath_hide.dm new file mode 100644 index 0000000000..e76a053732 --- /dev/null +++ b/code/modules/mining/equipment/goliath_hide.dm @@ -0,0 +1,39 @@ + +/obj/item/stack/sheet/animalhide/goliath_hide + name = "goliath hide plates" + desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." + icon = 'icons/obj/mining.dmi' + icon_state = "goliath_hide" + flags = NOBLUDGEON + w_class = WEIGHT_CLASS_NORMAL + layer = MOB_LAYER + +/obj/item/stack/sheet/animalhide/goliath_hide/afterattack(atom/target, mob/user, proximity_flag) + if(proximity_flag) + if(istype(target, /obj/item/clothing/suit/space/hardsuit/mining) || istype(target, /obj/item/clothing/head/helmet/space/hardsuit/mining) || istype(target, /obj/item/clothing/suit/hooded/explorer) || istype(target, /obj/item/clothing/head/hooded/explorer)) + var/obj/item/clothing/C = target + var/list/current_armor = C.armor + if(current_armor.["melee"] < 60) + current_armor.["melee"] = min(current_armor.["melee"] + 10, 60) + to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") + use(1) + else + to_chat(user, "You can't improve [C] any further!") + return + if(istype(target, /obj/mecha/working/ripley)) + var/obj/mecha/working/ripley/D = target + if(D.hides < 3) + D.hides++ + D.armor["melee"] = min(D.armor["melee"] + 10, 70) + D.armor["bullet"] = min(D.armor["bullet"] + 5, 50) + D.armor["laser"] = min(D.armor["laser"] + 5, 50) + to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") + D.update_icon() + if(D.hides == 3) + D.desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - its pilot must be an experienced monster hunter." + else + D.desc = "Autonomous Power Loader Unit. Its armour is enhanced with some goliath hide plates." + qdel(src) + else + to_chat(user, "You can't improve [D] any further!") + return diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 15d6c6afc5..6d8a99c1a2 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -5,9 +5,7 @@ item_state = "mining_hammer1" name = "proto-kinetic crusher" desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club. \ - While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna.\ - \nMark a mob with the destabilizing force, then hit them in melee to activate it for extra damage. Extra damage if backstabbed in this fashion. \ - This weapon is only particularly effective against large creatures." + While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna." force = 20 //As much as a bone spear, but this is significantly more annoying to carry around due to requiring the use of both hands at all times w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK @@ -21,9 +19,97 @@ hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") sharpness = IS_SHARP + var/list/trophies = list() var/charged = TRUE var/charge_time = 14 +/obj/item/weapon/twohanded/required/mining_hammer/Destroy() + for(var/a in trophies) + qdel(a) + trophies = null + return ..() + +/obj/item/weapon/twohanded/required/mining_hammer/examine(mob/living/user) + ..() + to_chat(user, "Mark a large creature with the destabilizing force, then hit them in melee to do 50 damage.") + to_chat(user, "Does 80 damage if the target is backstabbed, instead of 50.") + for(var/t in trophies) + var/obj/item/crusher_trophy/T = t + to_chat(user, "It has \a [T] attached, which causes [T.effect_desc()].") + +/obj/item/weapon/twohanded/required/mining_hammer/attackby(obj/item/A, mob/living/user) + if(istype(A, /obj/item/weapon/crowbar)) + if(LAZYLEN(trophies)) + to_chat(user, "You remove [src]'s trophies.") + playsound(loc, A.usesound, 100, 1) + for(var/t in trophies) + var/obj/item/crusher_trophy/T = t + T.remove_from(src, user) + else + to_chat(user, "There are no trophies on [src].") + else if(istype(A, /obj/item/crusher_trophy)) + var/obj/item/crusher_trophy/T = A + T.add_to(src, user) + else + return ..() + +/obj/item/weapon/twohanded/required/mining_hammer/attack(mob/living/target, mob/living/carbon/user) + var/datum/status_effect/crusher_damage/C = target.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) + var/target_health = target.health + ..() + for(var/t in trophies) + if(!QDELETED(target)) + var/obj/item/crusher_trophy/T = t + T.on_melee_hit(target, user) + if(!QDELETED(C) && !QDELETED(target)) + C.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did + +/obj/item/weapon/twohanded/required/mining_hammer/afterattack(atom/target, mob/living/user, proximity_flag) + if(!proximity_flag && charged)//Mark a target, or mine a tile. + var/turf/proj_turf = user.loc + if(!isturf(proj_turf)) + return + var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf) + for(var/t in trophies) + var/obj/item/crusher_trophy/T = t + T.on_projectile_fire(D, user) + D.preparePixelProjectile(target, get_turf(target), user) + D.firer = user + D.hammer_synced = src + playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, 1) + D.fire() + charged = FALSE + icon_state = "mining_hammer1_uncharged" + addtimer(CALLBACK(src, .proc/Recharge), charge_time) + return + if(proximity_flag && isliving(target)) + var/mob/living/L = target + var/datum/status_effect/crusher_mark/CM = L.has_status_effect(STATUS_EFFECT_CRUSHERMARK) + if(!CM || CM.hammer_synced != src || !L.remove_status_effect(STATUS_EFFECT_CRUSHERMARK)) + return + var/datum/status_effect/crusher_damage/C = L.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) + var/target_health = L.health + for(var/t in trophies) + var/obj/item/crusher_trophy/T = t + T.on_mark_detonation(target, user) + new /obj/effect/temp_visual/kinetic_blast(get_turf(L)) + var/backstab_dir = get_dir(user, L) + var/def_check = L.getarmor(type = "bomb") + if((user.dir & backstab_dir) && (L.dir & backstab_dir)) + L.apply_damage(80, BRUTE, blocked = def_check) + playsound(user, 'sound/weapons/Kenetic_accel.ogg', 100, 1) //Seriously who spelled it wrong + else + L.apply_damage(50, BRUTE, blocked = def_check) + if(!QDELETED(C) && !QDELETED(L)) + C.total_damage += target_health - L.health //we did some damage, but let's not assume how much we did + +/obj/item/weapon/twohanded/required/mining_hammer/proc/Recharge() + if(!charged) + charged = TRUE + icon_state = "mining_hammer1" + playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) + +//destablizing force /obj/item/projectile/destabilizer name = "destabilizing force" icon_state = "pulse1" @@ -42,8 +128,13 @@ /obj/item/projectile/destabilizer/on_hit(atom/target, blocked = 0) if(isliving(target)) var/mob/living/L = target + var/had_effect = (L.has_status_effect(STATUS_EFFECT_CRUSHERMARK)) //used as a boolean var/datum/status_effect/crusher_mark/CM = L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK) - CM.hammer_synced = hammer_synced + if(hammer_synced) + CM.hammer_synced = hammer_synced + for(var/t in hammer_synced.trophies) + var/obj/item/crusher_trophy/T = t + T.on_mark_application(target, CM, had_effect) var/target_turf = get_turf(target) if(ismineralturf(target_turf)) var/turf/closed/mineral/M = target_turf @@ -51,36 +142,153 @@ M.gets_drilled(firer) ..() -/obj/item/weapon/twohanded/required/mining_hammer/afterattack(atom/target, mob/user, proximity_flag) - if(!proximity_flag && charged)//Mark a target, or mine a tile. - var/turf/proj_turf = user.loc - if(!isturf(proj_turf)) - return - var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf) - D.preparePixelProjectile(target, get_turf(target), user) - D.hammer_synced = src - playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, 1) - D.fire() - charged = FALSE - icon_state = "mining_hammer1_uncharged" - addtimer(CALLBACK(src, .proc/Recharge), charge_time) - return - if(proximity_flag && isliving(target)) - var/mob/living/L = target - var/datum/status_effect/crusher_mark/CM = L.has_status_effect(STATUS_EFFECT_CRUSHERMARK) - if(!CM || CM.hammer_synced != src || !L.remove_status_effect(STATUS_EFFECT_CRUSHERMARK)) - return - new /obj/effect/temp_visual/kinetic_blast(get_turf(L)) - var/backstab_dir = get_dir(user, L) - var/def_check = L.getarmor(type = "bomb") - if((user.dir & backstab_dir) && (L.dir & backstab_dir)) - L.apply_damage(80, BRUTE, blocked = def_check) - playsound(user, 'sound/weapons/Kenetic_accel.ogg', 100, 1) //Seriously who spelled it wrong - else - L.apply_damage(50, BRUTE, blocked = def_check) +//trophies +/obj/item/crusher_trophy + name = "tail spike" + desc = "A strange spike with no usage." + icon = 'icons/obj/lavaland/artefacts.dmi' + icon_state = "tail_spike" + var/bonus_value = 10 //if it has a bonus effect, this is how much that effect is + var/denied_type = /obj/item/crusher_trophy -/obj/item/weapon/twohanded/required/mining_hammer/proc/Recharge() - if(!charged) - charged = TRUE - icon_state = "mining_hammer1" - playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) +/obj/item/crusher_trophy/examine(mob/living/user) + ..() + to_chat(user, "Causes [effect_desc()] when attached to a kinetic crusher.") + +/obj/item/crusher_trophy/proc/effect_desc() + return "errors" + +/obj/item/crusher_trophy/attackby(obj/item/A, mob/living/user) + if(istype(A, /obj/item/weapon/twohanded/required/mining_hammer)) + add_to(A, user) + else + ..() + +/obj/item/crusher_trophy/proc/add_to(obj/item/weapon/twohanded/required/mining_hammer/H, mob/living/user) + for(var/t in H.trophies) + var/obj/item/crusher_trophy/T = t + if(istype(T, denied_type) || istype(src, T.denied_type)) + to_chat(user, "You can't seem to attach [src] to [H]. Maybe remove a few trophies?") + return FALSE + H.trophies += src + forceMove(H) + to_chat(user, "You attach [src] to [H].") + return TRUE + +/obj/item/crusher_trophy/proc/remove_from(obj/item/weapon/twohanded/required/mining_hammer/H, mob/living/user) + forceMove(get_turf(H)) + H.trophies -= src + return TRUE + +/obj/item/crusher_trophy/proc/on_melee_hit(mob/living/target, mob/living/user) //the target and the user +/obj/item/crusher_trophy/proc/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user) //the projectile fired and the user +/obj/item/crusher_trophy/proc/on_mark_application(mob/living/target, datum/status_effect/crusher_mark/mark, had_mark) //the target, the mark applied, and if the target had a mark before +/obj/item/crusher_trophy/proc/on_mark_detonation(mob/living/target, mob/living/user) //the target and the user + +//ash drake +/obj/item/crusher_trophy/tail_spike + desc = "A spike taken from a ash drake's tail." + denied_type = /obj/item/crusher_trophy/tail_spike + bonus_value = 5 + +/obj/item/crusher_trophy/tail_spike/effect_desc() + return "mark detonation to do [bonus_value] damage to nearby creatures and push them back" + +/obj/item/crusher_trophy/tail_spike/on_mark_detonation(mob/living/target, mob/living/user) + for(var/mob/living/L in oview(2, user)) + if(L.stat == DEAD) + continue + playsound(L, 'sound/magic/Fireball.ogg', 20, 1) + new /obj/effect/temp_visual/fire(L.loc) + addtimer(CALLBACK(src, .proc/pushback, L, user), 1) //no free backstabs, we push AFTER module stuff is done + L.adjustBruteLoss(bonus_value) + +/obj/item/crusher_trophy/tail_spike/proc/pushback(mob/living/target, mob/living/user) + if(!target.anchored || ismegafauna(target)) //megafauna will always be pushed + step(target, get_dir(user, target)) + +//bubblegum +/obj/item/crusher_trophy/demon_claws + name = "demon claws" + desc = "A set of blood-drenched claws from a massive demon's hand." + icon_state = "demon_claws" + gender = PLURAL + denied_type = /obj/item/crusher_trophy/demon_claws + bonus_value = 10 + var/static/list/damage_heal_order = list(BRUTE, BURN, OXY) + +/obj/item/crusher_trophy/demon_claws/effect_desc() + return "melee hits to do [bonus_value * 0.2] more damage and heal you for [bonus_value * 0.1]; this effect is increased by 500% during mark detonation" + +/obj/item/crusher_trophy/demon_claws/add_to(obj/item/weapon/twohanded/required/mining_hammer/H, mob/living/user) + . = ..() + if(.) + H.force += bonus_value * 0.2 + H.force_unwielded += bonus_value * 0.2 + H.force_wielded += bonus_value * 0.2 + +/obj/item/crusher_trophy/demon_claws/remove_from(obj/item/weapon/twohanded/required/mining_hammer/H, mob/living/user) + . = ..() + if(.) + H.force -= bonus_value * 0.2 + H.force_unwielded -= bonus_value * 0.2 + H.force_wielded -= bonus_value * 0.2 + +/obj/item/crusher_trophy/demon_claws/on_melee_hit(mob/living/target, mob/living/user) + user.heal_ordered_damage(bonus_value * 0.1, damage_heal_order) + +/obj/item/crusher_trophy/demon_claws/on_mark_detonation(mob/living/target, mob/living/user) + target.adjustBruteLoss(bonus_value * 0.8) + user.heal_ordered_damage(bonus_value * 0.4, damage_heal_order) + +//colossus +/obj/item/crusher_trophy/blaster_tubes + name = "blaster tubes" + desc = "The blaster tubes from a colossus's arm." + icon_state = "blaster_tubes" + gender = PLURAL + denied_type = /obj/item/crusher_trophy/blaster_tubes + bonus_value = 15 + var/deadly_shot = FALSE + +/obj/item/crusher_trophy/blaster_tubes/effect_desc() + return "mark detonation to make the next destabilizer shot deal [bonus_value] damage but move slower" + +/obj/item/crusher_trophy/blaster_tubes/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user) + if(deadly_shot) + marker.name = "deadly [marker.name]" + marker.icon_state = "chronobolt" + marker.damage = bonus_value + marker.nodamage = FALSE + marker.speed = 2 + deadly_shot = FALSE + +/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) + +/obj/item/crusher_trophy/blaster_tubes/proc/reset_deadly_shot() + deadly_shot = FALSE + +//hierophant +/obj/item/crusher_trophy/vortex_talisman + name = "vortex talisman" + desc = "A glowing trinket that was originally the Hierophant's beacon." + icon_state = "vortex_talisman" + denied_type = /obj/item/crusher_trophy/vortex_talisman + +/obj/item/crusher_trophy/vortex_talisman/effect_desc() + return "mark detonation to create a barrier you can pass" + +/obj/item/crusher_trophy/vortex_talisman/on_mark_detonation(mob/living/target, mob/living/user) + var/turf/T = get_turf(user) + new /obj/effect/temp_visual/hierophant/wall/crusher(T, user) //a wall only you can pass! + var/turf/otherT = get_step(T, turn(user.dir, 90)) + if(otherT) + new /obj/effect/temp_visual/hierophant/wall/crusher(otherT, user) + otherT = get_step(T, turn(user.dir, -90)) + if(otherT) + new /obj/effect/temp_visual/hierophant/wall/crusher(otherT, user) + +/obj/effect/temp_visual/hierophant/wall/crusher + duration = 75 diff --git a/code/modules/mining/equipment/marker_beacons.dm b/code/modules/mining/equipment/marker_beacons.dm index 2770897c34..49e8adad68 100644 --- a/code/modules/mining/equipment/marker_beacons.dm +++ b/code/modules/mining/equipment/marker_beacons.dm @@ -22,6 +22,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list( icon_state = "marker" merge_type = /obj/item/stack/marker_beacon max_amount = 100 + novariants = TRUE var/picked_color = "random" /obj/item/stack/marker_beacon/ten //miners start with 10 of these @@ -55,14 +56,14 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list( var/obj/structure/marker_beacon/M = new(user.loc, picked_color) transfer_fingerprints_to(M) -/obj/item/stack/marker_beacon/AltClick(mob/user) - if(user.incapacitated()) +/obj/item/stack/marker_beacon/AltClick(mob/living/user) + if(user.incapacitated() || !istype(user)) to_chat(user, "You can't do that right now!") return if(!in_range(src, user)) return var/input_color = input(user, "Choose a color.", "Beacon Color") as null|anything in GLOB.marker_beacon_colors - if(user.incapacitated() || !in_range(src, user)) + if(user.incapacitated() || !istype(user) || !in_range(src, user)) return if(input_color) picked_color = input_color @@ -127,15 +128,15 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list( else return ..() -/obj/structure/marker_beacon/AltClick(mob/user) +/obj/structure/marker_beacon/AltClick(mob/living/user) ..() - if(user.incapacitated()) + if(user.incapacitated() || !istype(user)) to_chat(user, "You can't do that right now!") return if(!in_range(src, user)) return var/input_color = input(user, "Choose a color.", "Beacon Color") as null|anything in GLOB.marker_beacon_colors - if(user.incapacitated() || !in_range(src, user)) + if(user.incapacitated() || !istype(user) || !in_range(src, user)) return if(input_color) picked_color = input_color diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm new file mode 100644 index 0000000000..6843379164 --- /dev/null +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -0,0 +1,128 @@ +/*********************Hivelord stabilizer****************/ +/obj/item/weapon/hivelordstabilizer + name = "stabilizing serum" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle19" + desc = "Inject certain types of monster organs with this stabilizer to preserve their healing powers indefinitely." + w_class = WEIGHT_CLASS_TINY + origin_tech = "biotech=3" + +/obj/item/weapon/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user) + var/obj/item/organ/regenerative_core/C = M + if(!istype(C, /obj/item/organ/regenerative_core)) + to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.") + return ..() + + C.preserved() + to_chat(user, "You inject the [M] with the stabilizer. It will no longer go inert.") + qdel(src) + +/************************Hivelord core*******************/ +/obj/item/organ/regenerative_core + 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 = NOBLUDGEON + slot = "hivecore" + force = 0 + actions_types = list(/datum/action/item_action/organ_action/use) + var/inert = 0 + var/preserved = 0 + +/obj/item/organ/regenerative_core/Initialize() + . = ..() + addtimer(CALLBACK(src, .proc/inert_check), 2400) + +/obj/item/organ/regenerative_core/proc/inert_check() + if(!preserved) + go_inert() + +/obj/item/organ/regenerative_core/proc/preserved(implanted = 0) + inert = FALSE + preserved = TRUE + update_icon() + desc = "All that remains of a hivelord. It is preserved, allowing you to use it to heal completely without danger of decay." + if(implanted) + SSblackbox.add_details("hivelord_core", "[type]|implanted") + else + SSblackbox.add_details("hivelord_core", "[type]|stabilizer") + +/obj/item/organ/regenerative_core/proc/go_inert() + inert = TRUE + name = "decayed regenerative core" + desc = "All that remains of a hivelord. It has decayed, and is completely useless." + SSblackbox.add_details("hivelord_core", "[type]|inert") + update_icon() + +/obj/item/organ/regenerative_core/ui_action_click() + if(inert) + to_chat(owner, "[src] breaks down as it tries to activate.") + else + owner.revive(full_heal = 1) + qdel(src) + +/obj/item/organ/regenerative_core/on_life() + ..() + if(owner.health < HEALTH_THRESHOLD_CRIT) + ui_action_click() + +/obj/item/organ/regenerative_core/afterattack(atom/target, mob/user, proximity_flag) + if(proximity_flag && ishuman(target)) + var/mob/living/carbon/human/H = target + if(inert) + to_chat(user, "[src] has decayed and can no longer be used to heal.") + return + else + if(H.stat == DEAD) + to_chat(user, "[src] are useless on the dead.") + return + if(H != user) + H.visible_message("[user] forces [H] to apply [src]... [H.p_they()] quickly regenerate all injuries!") + SSblackbox.add_details("hivelord_core","[src.type]|used|other") + else + to_chat(user, "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.") + SSblackbox.add_details("hivelord_core","[src.type]|used|self") + H.revive(full_heal = 1) + qdel(src) + ..() + +/obj/item/organ/regenerative_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) + . = ..() + if(!preserved && !inert) + preserved(TRUE) + owner.visible_message("[src] stabilizes as it's inserted.") + +/obj/item/organ/regenerative_core/Remove(mob/living/carbon/M, special = 0) + if(!inert && !special) + owner.visible_message("[src] rapidly decays as it's removed.") + go_inert() + return ..() + +/obj/item/organ/regenerative_core/prepare_eat() + return null + +/*************************Legion core********************/ +/obj/item/organ/regenerative_core/legion + desc = "A strange rock that crackles with power. It can be used to heal completely, but it will rapidly decay into uselessness." + icon_state = "legion_soul" + +/obj/item/organ/regenerative_core/legion/Initialize() + . = ..() + update_icon() + +/obj/item/organ/regenerative_core/update_icon() + icon_state = inert ? "legion_soul_inert" : "legion_soul" + cut_overlays() + if(!inert && !preserved) + add_overlay("legion_soul_crackle") + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() + +/obj/item/organ/regenerative_core/legion/go_inert() + ..() + desc = "[src] has become inert. It has decayed, and is completely useless." + +/obj/item/organ/regenerative_core/legion/preserved(implanted = 0) + ..() + desc = "[src] has been stabilized. It is preserved, allowing you to use it to heal completely without danger of decay." diff --git a/code/modules/mining/equipment/vendor_items.dm b/code/modules/mining/equipment/vendor_items.dm index 4ff83ea21f..8868d4655b 100644 --- a/code/modules/mining/equipment/vendor_items.dm +++ b/code/modules/mining/equipment/vendor_items.dm @@ -12,22 +12,3 @@ /obj/item/clothing/mask/facehugger/toy/Die() return - -/*********************Hivelord stabilizer****************/ -/obj/item/weapon/hivelordstabilizer - name = "stabilizing serum" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle19" - desc = "Inject certain types of monster organs with this stabilizer to preserve their healing powers indefinitely." - w_class = WEIGHT_CLASS_TINY - origin_tech = "biotech=3" - -/obj/item/weapon/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user) - var/obj/item/organ/hivelord_core/C = M - if(!istype(C, /obj/item/organ/hivelord_core)) - to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.") - return ..() - - C.preserved() - to_chat(user, "You inject the [M] with the stabilizer. It will no longer go inert.") - qdel(src) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 8a3f4ee633..8b6f43ee25 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,26) + var/loot = rand(1,27) switch(loot) if(1) new /obj/item/device/shared_storage/red(src) @@ -28,9 +28,7 @@ if(7) new /obj/item/weapon/pickaxe/diamond(src) if(8) - new /obj/item/clothing/head/culthood(src) - new /obj/item/clothing/suit/cultrobes(src) - new /obj/item/weapon/bedsheet/cult(src) + new /obj/item/borg/upgrade/modkit/resonator_blasts(src) if(9) new /obj/item/organ/brain/alien(src) if(10) @@ -40,7 +38,7 @@ if(12) new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker(src) if(13) - new /obj/item/weapon/sord(src) + new /obj/item/borg/upgrade/modkit/cooldown/repeater(src) if(14) new /obj/item/weapon/nullrod/scythe/talking(src) if(15) @@ -68,6 +66,9 @@ new /obj/item/weapon/spellbook/oneuse/summonitem(src) if(26) new /obj/item/book_of_babel(src) + if(27) + new /obj/item/borg/upgrade/modkit/lifesteal(src) + new /obj/item/weapon/bedsheet/cult(src) @@ -488,6 +489,13 @@ if(4) new /obj/item/weapon/dragons_blood(src) +/obj/structure/closet/crate/necropolis/dragon/crusher + name = "firey dragon chest" + +/obj/structure/closet/crate/necropolis/dragon/crusher/PopulateContents() + ..() + new /obj/item/crusher_trophy/tail_spike(src) + /obj/item/weapon/melee/ghost_sword name = "\improper spectral blade" desc = "A rusted and dulled blade. It doesn't look like it'd do much damage. It glows weakly." @@ -700,7 +708,26 @@ icon_state = "lavastaff_warn" duration = 50 -///Bubblegum +//Bubblegum +/obj/structure/closet/crate/necropolis/bubblegum + name = "bubblegum chest" + +/obj/structure/closet/crate/necropolis/bubblegum/PopulateContents() + var/loot = rand(1,3) + switch(loot) + if(1) + new /obj/item/mayhem(src) + if(2) + new /obj/item/blood_contract(src) + if(3) + new /obj/item/weapon/gun/magic/staff/spellblade(src) + +/obj/structure/closet/crate/necropolis/bubblegum/crusher + name = "bloody bubblegum chest" + +/obj/structure/closet/crate/necropolis/bubblegum/crusher/PopulateContents() + ..() + new /obj/item/crusher_trophy/demon_claws(src) /obj/item/mayhem name = "mayhem in a bottle" @@ -716,19 +743,6 @@ playsound(user.loc, 'sound/effects/Glassbr1.ogg', 100, 1) qdel(src) -/obj/structure/closet/crate/necropolis/bubblegum - name = "bubblegum chest" - -/obj/structure/closet/crate/necropolis/bubblegum/PopulateContents() - var/loot = rand(1,3) - switch(loot) - if(1) - new /obj/item/mayhem(src) - if(2) - new /obj/item/blood_contract(src) - if(3) - new /obj/item/weapon/gun/magic/staff/spellblade(src) - /obj/item/blood_contract name = "blood contract" icon = 'icons/obj/wizard.dmi' @@ -773,6 +787,23 @@ qdel(src) +//Colossus +/obj/structure/closet/crate/necropolis/colossus + name = "colossus chest" + +/obj/structure/closet/crate/necropolis/colossus/PopulateContents() + var/list/choices = subtypesof(/obj/machinery/anomalous_crystal) + var/random_crystal = pick(choices) + new random_crystal(src) + new /obj/item/organ/vocal_cords/colossus(src) + +/obj/structure/closet/crate/necropolis/colossus/crusher + name = "angelic colossus chest" + +/obj/structure/closet/crate/necropolis/colossus/crusher/PopulateContents() + ..() + new /obj/item/crusher_trophy/blaster_tubes(src) + //Hierophant /obj/item/weapon/hierophant_club name = "hierophant club" diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 9a9fefac03..9c4f71140c 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -260,7 +260,6 @@ 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)]") - spawn(det_time) if(primed) if(quality == 3) explosion(src.loc,2,4,9,adminlog = notify_admins) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index e3943d07e6..cb76cb29f1 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -140,8 +140,7 @@ observer.name = observer.real_name observer.update_icon() observer.stop_sound_channel(CHANNEL_LOBBYMUSIC) - qdel(mind) - + QDEL_NULL(mind) qdel(src) return 1 @@ -322,28 +321,9 @@ if(isliving(equip)) //Borgs get borged in the equip, so we need to make sure we handle the new mob. character = equip - var/D - if(GLOB.latejoin.len) - D = get_turf(pick(GLOB.latejoin)) - if(!D) - for(var/turf/T in get_area_turfs(/area/shuttle/arrival)) - if(!T.density) - var/clear = 1 - for(var/obj/O in T) - if(O.density) - clear = 0 - break - if(clear) - D = T - continue - - character.loc = D + SSjob.SendToLateJoin(character) character.update_parallax_teleport() - var/atom/movable/chair = locate(/obj/structure/chair) in character.loc - if(chair) - chair.buckle_mob(character) - SSticker.minds += character.mind var/mob/living/carbon/human/humanc @@ -371,7 +351,6 @@ if(SHUTTLE_CALL) if(SSshuttle.emergency.timeLeft(1) > initial(SSshuttle.emergencyCallTime)*0.5) SSticker.mode.make_antag_chance(humanc) - qdel(src) /mob/dead/new_player/proc/AddEmploymentContract(mob/living/carbon/human/employee) //TODO: figure out a way to exclude wizards/nukeops/demons from this. @@ -470,6 +449,8 @@ if(.) new_character.key = key //Manually transfer the key to log them in new_character.stop_sound_channel(CHANNEL_LOBBYMUSIC) + new_character = null + qdel(src) /mob/dead/new_player/proc/ViewManifest() var/dat = "" diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 7001e397e8..381ae5c511 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -38,7 +38,7 @@ #define MAX_ALIEN_LEAP_DIST 7 /mob/living/carbon/alien/humanoid/hunter/proc/leap_at(atom/A) - if(pounce_cooldown) + if(pounce_cooldown > world.time) to_chat(src, "You are too fatigued to pounce right now!") return @@ -83,9 +83,7 @@ Weaken(2, 1, 1) toggle_leap(0) - pounce_cooldown = !pounce_cooldown - spawn(pounce_cooldown_time) //3s by default - pounce_cooldown = !pounce_cooldown + pounce_cooldown = world.time + pounce_cooldown_time else if(A.density && !A.CanPass(src)) visible_message("[src] smashes into [A]!", "[src] smashes into [A]!") Weaken(2, 1, 1) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index edd10ea9e2..ee90c30cdf 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -36,9 +36,6 @@ //initialise organs create_internal_organs() - if(mind) - mind.martial_art = mind.default_martial_art - handcrafting = new() ..() diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index cacd433fec..a0aa88779b 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -420,6 +420,9 @@ message = null emote_type = EMOTE_VISIBLE +/datum/emote/living/custom/replace_pronoun(mob/user, message) + return message + /datum/emote/living/help key = "help" diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index f4cfb363fd..2655820e2f 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -53,7 +53,7 @@ var/control_disabled = 0 // Set to 1 to stop AI from interacting via Click() var/malfhacking = 0 // More or less a copy of the above var, so that malf AIs can hack and still get new cyborgs -- NeoFite - var/malf_cooldown = 0 //Cooldown var for malf modules + var/malf_cooldown = 0 //Cooldown var for malf modules, stores a worldtime + cooldown var/obj/machinery/power/apc/malfhack = null var/explosive = 0 //does the AI explode when it dies? diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index d21f0a221c..dbed880839 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -25,7 +25,7 @@ spawn(10) explosion(src.loc, 3, 6, 12, 15) - for(var/obj/machinery/ai_status_display/O in world) //change status + for(var/obj/machinery/ai_status_display/O in GLOB.ai_status_displays) //change status if(src.key) O.mode = 2 if(istype(loc, /obj/item/device/aicard)) @@ -42,4 +42,4 @@ if(doomsday_device) doomsday_device.timing = FALSE SSshuttle.clearHostileEnvironment(doomsday_device) - qdel(doomsday_device) \ No newline at end of file + qdel(doomsday_device) diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm index aa009df4ef..faac6a0b8b 100644 --- a/code/modules/mob/living/silicon/ai/login.dm +++ b/code/modules/mob/living/silicon/ai/login.dm @@ -6,7 +6,7 @@ client.images += blood if(stat != DEAD) - for(var/obj/machinery/ai_status_display/O in GLOB.machines) //change status + for(var/obj/machinery/ai_status_display/O in GLOB.ai_status_displays) //change status O.mode = 1 O.emotion = "Neutral" view_core() diff --git a/code/modules/mob/living/silicon/ai/logout.dm b/code/modules/mob/living/silicon/ai/logout.dm index 4a2f99cfbf..46343e60ab 100644 --- a/code/modules/mob/living/silicon/ai/logout.dm +++ b/code/modules/mob/living/silicon/ai/logout.dm @@ -1,5 +1,5 @@ /mob/living/silicon/ai/Logout() ..() - for(var/obj/machinery/ai_status_display/O in world) //change status + for(var/obj/machinery/ai_status_display/O in GLOB.ai_status_displays) //change status O.mode = 0 view_core() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 768ff69166..9574533884 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -195,6 +195,10 @@ if(module.type != /obj/item/weapon/robot_module) return + if(wires.is_cut(WIRE_RESET_MODULE)) + to_chat(src,"ERROR: Module installer reply timeout. Please check internal connections.") + return + var/list/modulelist = list("Standard" = /obj/item/weapon/robot_module/standard, \ "Engineering" = /obj/item/weapon/robot_module/engineering, \ "Medical" = /obj/item/weapon/robot_module/medical, \ diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index a1d13fde72..919f5883bf 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -4,6 +4,7 @@ /mob/living/proc/robot_talk(message) log_say("[key_name(src)] : [message]") + log_message(message, INDIVIDUAL_SAY_LOG) var/desig = "Default Cyborg" //ezmode for taters if(issilicon(src)) var/mob/living/silicon/S = src diff --git a/code/modules/mob/living/simple_animal/guardian/types/fire.dm b/code/modules/mob/living/simple_animal/guardian/types/fire.dm index abcc9cf6a3..523d990ad1 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/fire.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/fire.dm @@ -21,7 +21,7 @@ /mob/living/simple_animal/hostile/guardian/fire/AttackingTarget() . = ..() if(. && ishuman(target) && target != summoner) - new /obj/effect/hallucination/delusion(target.loc,target,force_kind="custom",duration=200,skip_nearby=0, custom_icon = src.icon_state, custom_icon_file = src.icon) + new /obj/effect/hallucination/delusion(target.loc,target,"custom",200,0, icon_state,icon) /mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj) ..() diff --git a/code/modules/mob/living/simple_animal/hostile/flan.dm b/code/modules/mob/living/simple_animal/hostile/flan.dm deleted file mode 100644 index cb581b6ec5..0000000000 --- a/code/modules/mob/living/simple_animal/hostile/flan.dm +++ /dev/null @@ -1,89 +0,0 @@ -//Will probably eventually be expanded to fit multiple types of Flan because I am a nerd. - -/mob/living/simple_animal/hostile/flan - name = "Flan" - desc = "Definitely not a dessert." - var/casting = 0 - icon_state = "flan" //Required for the inheritance of casting animations. - icon_living = "flan" - icon_dead = "flan_dead" - turns_per_move = 5 - environment_smash = ENVIRONMENT_SMASH_NONE - speed = -2 - maxHealth = 50 - health = 50 - harm_intent_damage = 5 - damage_coeff = list(BRUTE = 0.75, BURN = 1.5, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - melee_damage_lower = 5 - melee_damage_upper = 10 - attacktext = "headbutts" - attack_sound = 'sound/weapons/punch1.ogg' - a_intent = INTENT_HARM - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - unsuitable_atmos_damage = 0 - ranged = 1 - retreat_distance = 2 - minimum_distance = 4 - AIStatus = AI_IDLE - ranged_message = "begins to cast something" - ranged_cooldown_time = 15 - var/spellname = "a generic spell!" - var/spellsound = 'sound/effects/spray3.ogg' - var/spellanimation = ATTACK_EFFECT_SMASH //More in defines/misc.dm - var/spelldamagetype = BRUTE - var/spelldamage = 15 - var/spellcasttime = 15 //if you varedit this also varedit ranged_cooldown_time else the mob will attack again before the spell hits, looking weird but still working - -/mob/living/simple_animal/hostile/flan/Initialize() //Required for the inheritance of casting animations. - ..() - casting = 0 - icon_state = "[initial(icon_state)][casting]" - -/mob/living/simple_animal/hostile/flan/proc/spellaftereffects(mob/living/A) //Inherit and override. Allows for spells that stun and do basically anything you'd want. - return - -/mob/living/simple_animal/hostile/flan/OpenFire(mob/living/A) //Spellcasting! - if(isliving(A)) //A is originally an atom, this is here to prevent that from fucking this up. - visible_message("[src] [ranged_message] at [A]!") - casting = 1 - icon_state = "[initial(icon_state)][casting]" - if(do_after_mob(src, A, spellcasttime, uninterruptible = 1, progress = 0)) //Break LOS to dodge. - if(QDELETED(src)) - return - if((A in view(src))) - A.do_attack_animation(A, spellanimation) - playsound(A, spellsound, 20, 1) - A.apply_damage(damage = spelldamage,damagetype = spelldamagetype, def_zone = null, blocked = 0) - visible_message("[A] has been hit by [spellname]") - spellaftereffects(A,src) - ranged_cooldown = world.time + ranged_cooldown_time - casting = 0 - icon_state = "[initial(icon_state)][casting]" - -/mob/living/simple_animal/hostile/flan/fire - name = "Flame Flan" - desc = "You'd think they'd be spicy, but nobody has ever tried." - icon_state = "fireflan" - icon_living = "fireflan" - icon_dead = "fireflan_dead" - damage_coeff = list(BRUTE = 1.5, BURN = 0.75, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - spellname = "a Fire spell!" - spellsound = 'sound/effects/fuse.ogg' - spelldamagetype = BURN - spellcasttime = 20 - -/mob/living/simple_animal/hostile/flan/fire/spellaftereffects(mob/living/A) - A.adjust_fire_stacks(2) - A.IgniteMob() - -/mob/living/simple_animal/hostile/flan/water - name = "Water Flan" - desc = "Is pretty likely to dampen your spirits." - icon_state = "flan" - icon_living = "flan" - icon_dead = "flan_dead" - spellname = "a Water spell!" - spelldamage = 10 //Basic flan, learn the dance with em. - -/mob/living/simple_animal/hostile/flan/water/spellaftereffects(mob/living/A) - A.ExtinguishMob() \ No newline at end of file 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 2645ebcef7..b7de5b9440 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -44,6 +44,7 @@ Difficulty: Hard ranged = 1 pixel_x = -32 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 @@ -380,17 +381,22 @@ Difficulty: Hard break max_amount-- var/obj/effect/decal/cleanable/blood/B = H - new /mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/slaughter(B.loc) + new /mob/living/simple_animal/hostile/asteroid/hivelordbrood/slaughter(B.loc) return max_amount -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/slaughter +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/slaughter name = "slaughterling" desc = "Though not yet strong enough to create a true physical form, it's nonetheless determined to murder you." + icon_state = "bloodbrood" + icon_living = "bloodbrood" + icon_aggro = "bloodbrood" + attacktext = "pierces" + color = "#C80000" density = 0 faction = list("mining", "boss") weather_immunities = list("lava","ash") -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/slaughter/CanPass(atom/movable/mover, turf/target, height = 0) +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/slaughter/CanPass(atom/movable/mover, turf/target, height = 0) if(istype(mover, /mob/living/simple_animal/hostile/megafauna/bubblegum)) return 1 return 0 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 fd42582317..e77702ac19 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -46,7 +46,8 @@ Difficulty: Very Hard del_on_death = 1 medal_type = MEDAL_PREFIX score_type = COLOSSUS_SCORE - loot = list(/obj/effect/spawner/lootdrop/anomalous_crystal, /obj/item/organ/vocal_cords/colossus) + crusher_loot = list(/obj/structure/closet/crate/necropolis/colossus/crusher) + loot = list(/obj/structure/closet/crate/necropolis/colossus) butcher_results = list(/obj/item/weapon/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30) deathmessage = "disintegrates, leaving a glowing core in its wake." death_sound = 'sound/magic/demon_dies.ogg' @@ -444,13 +445,6 @@ Difficulty: Very Hard /obj/machinery/anomalous_crystal/ex_act() ActivationReaction(null, ACTIVATE_BOMB) -/obj/effect/spawner/lootdrop/anomalous_crystal - name = "anomalous crystal spawner" - -/obj/effect/spawner/lootdrop/anomalous_crystal/Initialize() - loot = subtypesof(/obj/machinery/anomalous_crystal) - . = ..() - /obj/machinery/anomalous_crystal/honk //Strips and equips you as a clown. I apologize for nothing observer_desc = "This crystal strips and equips its targets as clowns." possible_methods = list(ACTIVATE_MOB_BUMP, ACTIVATE_SPEECH) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 5df35b2d93..2553f3df2d 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -51,6 +51,7 @@ Difficulty: Medium move_to_delay = 10 ranged = 1 pixel_x = -16 + crusher_loot = list(/obj/structure/closet/crate/necropolis/dragon/crusher) loot = list(/obj/structure/closet/crate/necropolis/dragon) butcher_results = list(/obj/item/weapon/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30) var/swooping = NONE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index fad0ab17df..6d44df978e 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -78,6 +78,9 @@ Difficulty: Hard internal = new/obj/item/device/gps/internal/hierophant(src) spawned_beacon = new(loc) +/mob/living/simple_animal/hostile/megafauna/hierophant/spawn_crusher_loot() + new /obj/item/crusher_trophy/vortex_talisman(get_turf(spawned_beacon)) + /mob/living/simple_animal/hostile/megafauna/hierophant/Life() . = ..() if(. && spawned_beacon && !QDELETED(spawned_beacon) && !client) @@ -461,6 +464,12 @@ Difficulty: Hard return ..() /obj/effect/temp_visual/hierophant/wall/CanPass(atom/movable/mover, turf/target, height = 0) + if(mover == caster.pulledby) + return TRUE + if(istype(mover, /obj/item/projectile)) + var/obj/item/projectile/P = mover + if(P.firer == caster) + return TRUE if(mover == caster) return TRUE return FALSE @@ -589,6 +598,8 @@ Difficulty: Hard do_damage(get_turf(src)) /obj/effect/temp_visual/hierophant/blast/proc/do_damage(turf/T) + if(!damage) + return for(var/mob/living/L in T.contents - hit_things) //find and damage mobs... hit_things += L if((friendly_fire_check && caster && caster.faction_check_mob(L)) || L.stat == DEAD) 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 9b8e037d61..ec72989474 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -34,6 +34,7 @@ /obj/structure/barricade, /obj/machinery/field, /obj/machinery/power/emitter) + var/list/crusher_loot var/medal_type = MEDAL_PREFIX var/score_type = BOSS_SCORE var/elimination = 0 @@ -44,6 +45,10 @@ layer = LARGE_MOB_LAYER //Looks weird with them slipping under mineral walls and cameras and shit otherwise mouse_opacity = 2 // Easier to click on in melee, they're giant targets anyway +/mob/living/simple_animal/hostile/megafauna/Initialize(mapload) + . = ..() + apply_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) + /mob/living/simple_animal/hostile/megafauna/Destroy() QDEL_NULL(internal) . = ..() @@ -52,12 +57,19 @@ if(health > 0) return else + var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) + if(C && crusher_loot) + if(C.total_damage >= maxHealth * 0.60) //if you do at least 60% of its health with the crusher, you'll get the item + spawn_crusher_loot() if(!admin_spawned) SSblackbox.set_details("megafauna_kills","[initial(name)]") if(!elimination) //used so the achievment only occurs for the last legion to die. grant_achievement(medal_type,score_type) ..() +/mob/living/simple_animal/hostile/megafauna/proc/spawn_crusher_loot() + loot = crusher_loot + /mob/living/simple_animal/hostile/megafauna/gib() if(health > 0) return diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm deleted file mode 100644 index c2bd44d8ef..0000000000 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ /dev/null @@ -1,1143 +0,0 @@ -/mob/living/simple_animal/hostile/asteroid - vision_range = 2 - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - faction = list("mining") - weather_immunities = list("lava","ash") - obj_damage = 30 - environment_smash = ENVIRONMENT_SMASH_WALLS - minbodytemp = 0 - maxbodytemp = INFINITY - response_help = "pokes" - response_disarm = "shoves" - response_harm = "strikes" - status_flags = 0 - a_intent = INTENT_HARM - var/throw_message = "bounces off of" - var/icon_aggro = null // for swapping to when we get aggressive - see_in_dark = 8 - lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - mob_size = MOB_SIZE_LARGE - -/mob/living/simple_animal/hostile/asteroid/Aggro() - ..() - if(vision_range != aggro_vision_range) - icon_state = icon_aggro - -/mob/living/simple_animal/hostile/asteroid/LoseAggro() - ..() - if(stat == DEAD) - return - icon_state = icon_living - -/mob/living/simple_animal/hostile/asteroid/bullet_act(obj/item/projectile/P)//Reduces damage from most projectiles to curb off-screen kills - if(!stat) - Aggro() - if(P.damage < 30 && P.damage_type != BRUTE) - P.damage = (P.damage / 3) - visible_message("[P] has a reduced effect on [src]!") - ..() - -/mob/living/simple_animal/hostile/asteroid/hitby(atom/movable/AM)//No floor tiling them to death, wiseguy - if(istype(AM, /obj/item)) - var/obj/item/T = AM - if(!stat) - Aggro() - if(T.throwforce <= 20) - visible_message("The [T.name] [src.throw_message] [src.name]!") - return - ..() - -/mob/living/simple_animal/hostile/asteroid/death(gibbed) - SSblackbox.add_details("mobs_killed_mining","[src.type]") - ..(gibbed) - -/mob/living/simple_animal/hostile/asteroid/basilisk - name = "basilisk" - desc = "A territorial beast, covered in a thick shell that absorbs energy. Its stare causes victims to freeze from the inside." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "Basilisk" - icon_living = "Basilisk" - icon_aggro = "Basilisk_alert" - icon_dead = "Basilisk_dead" - icon_gib = "syndicate_gib" - move_to_delay = 20 - projectiletype = /obj/item/projectile/temp/basilisk - projectilesound = 'sound/weapons/pierce.ogg' - ranged = 1 - ranged_message = "stares" - ranged_cooldown_time = 30 - throw_message = "does nothing against the hard shell of" - vision_range = 2 - speed = 3 - maxHealth = 200 - health = 200 - harm_intent_damage = 5 - obj_damage = 60 - melee_damage_lower = 12 - melee_damage_upper = 12 - attacktext = "bites into" - a_intent = INTENT_HARM - speak_emote = list("chitters") - attack_sound = 'sound/weapons/bladeslice.ogg' - aggro_vision_range = 9 - idle_vision_range = 2 - turns_per_move = 5 - loot = list(/obj/item/weapon/ore/diamond{layer = ABOVE_MOB_LAYER}, - /obj/item/weapon/ore/diamond{layer = ABOVE_MOB_LAYER}) - -/obj/item/projectile/temp/basilisk - name = "freezing blast" - icon_state = "ice_2" - damage = 0 - damage_type = BURN - nodamage = 1 - flag = "energy" - temperature = 50 - -/mob/living/simple_animal/hostile/asteroid/basilisk/GiveTarget(new_target) - if(..()) //we have a target - if(isliving(target) && !target.Adjacent(targets_from) && ranged_cooldown <= world.time)//No more being shot at point blank or spammed with RNG beams - OpenFire(target) - -/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target) - switch(severity) - if(1) - gib() - if(2) - adjustBruteLoss(140) - if(3) - adjustBruteLoss(110) - -/mob/living/simple_animal/hostile/asteroid/goldgrub - name = "goldgrub" - desc = "A worm that grows fat from eating everything in its sight. Seems to enjoy precious metals and other shiny things, hence the name." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "Goldgrub" - icon_living = "Goldgrub" - icon_aggro = "Goldgrub_alert" - icon_dead = "Goldgrub_dead" - icon_gib = "syndicate_gib" - vision_range = 2 - aggro_vision_range = 9 - idle_vision_range = 2 - move_to_delay = 5 - friendly = "harmlessly rolls into" - maxHealth = 45 - health = 45 - harm_intent_damage = 5 - melee_damage_lower = 0 - melee_damage_upper = 0 - attacktext = "barrels into" - attack_sound = 'sound/weapons/punch1.ogg' - a_intent = INTENT_HELP - speak_emote = list("screeches") - throw_message = "sinks in slowly, before being pushed out of " - deathmessage = "spits up the contents of its stomach before dying!" - status_flags = CANPUSH - search_objects = 1 - wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver, - /obj/item/weapon/ore/uranium) - - var/chase_time = 100 - var/will_burrow = TRUE - -/mob/living/simple_animal/hostile/asteroid/goldgrub/Initialize() - ..() - var/i = rand(1,3) - while(i) - loot += pick(/obj/item/weapon/ore/silver, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/uranium, /obj/item/weapon/ore/diamond) - i-- - -/mob/living/simple_animal/hostile/asteroid/goldgrub/GiveTarget(new_target) - target = new_target - if(target != null) - if(istype(target, /obj/item/weapon/ore) && loot.len < 10) - visible_message("The [src.name] looks at [target.name] with hungry eyes.") - else if(isliving(target)) - Aggro() - visible_message("The [src.name] tries to flee from [target.name]!") - retreat_distance = 10 - minimum_distance = 10 - if(will_burrow) - addtimer(CALLBACK(src, .proc/Burrow), chase_time) - -/mob/living/simple_animal/hostile/asteroid/goldgrub/AttackingTarget() - if(istype(target, /obj/item/weapon/ore)) - EatOre(target) - return - return ..() - -/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/EatOre(atom/targeted_ore) - for(var/obj/item/weapon/ore/O in targeted_ore.loc) - if(loot.len < 10) - loot += O.type - qdel(O) - visible_message("The ore was swallowed whole!") - -/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Burrow()//Begin the chase to kill the goldgrub in time - if(!stat) - visible_message("The [src.name] buries into the ground, vanishing from sight!") - qdel(src) - -/mob/living/simple_animal/hostile/asteroid/goldgrub/bullet_act(obj/item/projectile/P) - visible_message("The [P.name] was repelled by [src.name]'s girth!") - return - -/mob/living/simple_animal/hostile/asteroid/goldgrub/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - idle_vision_range = 9 - . = ..() - -/mob/living/simple_animal/hostile/asteroid/hivelord - name = "hivelord" - desc = "A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "Hivelord" - icon_living = "Hivelord" - icon_aggro = "Hivelord_alert" - icon_dead = "Hivelord_dead" - icon_gib = "syndicate_gib" - mouse_opacity = 2 - move_to_delay = 14 - ranged = 1 - vision_range = 5 - aggro_vision_range = 9 - idle_vision_range = 5 - speed = 3 - maxHealth = 75 - health = 75 - harm_intent_damage = 5 - melee_damage_lower = 0 - melee_damage_upper = 0 - attacktext = "lashes out at" - speak_emote = list("telepathically cries") - attack_sound = 'sound/weapons/pierce.ogg' - throw_message = "falls right through the strange body of the" - ranged_cooldown = 0 - ranged_cooldown_time = 20 - obj_damage = 0 - environment_smash = ENVIRONMENT_SMASH_NONE - retreat_distance = 3 - minimum_distance = 3 - pass_flags = PASSTABLE - loot = list(/obj/item/organ/hivelord_core) - var/brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood - -/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.GiveTarget(target) - A.friends = friends - A.faction = faction.Copy() - ranged_cooldown = world.time + ranged_cooldown_time - -/mob/living/simple_animal/hostile/asteroid/hivelord/AttackingTarget() - OpenFire() - return TRUE - -/mob/living/simple_animal/hostile/asteroid/hivelord/death(gibbed) - mouse_opacity = 1 - ..(gibbed) - -/obj/item/organ/hivelord_core - name = "hivelord remains" - desc = "All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly." - icon_state = "roro core 2" - flags = NOBLUDGEON - slot = "hivecore" - force = 0 - actions_types = list(/datum/action/item_action/organ_action/use) - var/inert = 0 - var/preserved = 0 - -/obj/item/organ/hivelord_core/Initialize() - ..() - addtimer(CALLBACK(src, .proc/inert_check), 2400) - -/obj/item/organ/hivelord_core/proc/inert_check() - if(!preserved) - go_inert() - -/obj/item/organ/hivelord_core/proc/preserved(implanted = 0) - inert = FALSE - preserved = TRUE - update_icon() - - if(implanted) - SSblackbox.add_details("hivelord_core", "[type]|implanted") - else - SSblackbox.add_details("hivelord_core", "[type]|stabilizer") - - -/obj/item/organ/hivelord_core/proc/go_inert() - inert = TRUE - desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." - SSblackbox.add_details("hivelord_core", "[src.type]|inert") - update_icon() - -/obj/item/organ/hivelord_core/ui_action_click() - if(inert) - to_chat(owner, "[src] breaks down as it tries to activate.") - else - owner.revive(full_heal = 1) - qdel(src) - -/obj/item/organ/hivelord_core/on_life() - ..() - if(owner.health < HEALTH_THRESHOLD_CRIT) - ui_action_click() - -/obj/item/organ/hivelord_core/afterattack(atom/target, mob/user, proximity_flag) - if(proximity_flag && ishuman(target)) - var/mob/living/carbon/human/H = target - if(inert) - to_chat(user, "[src] has become inert, its healing properties are no more.") - return - else - if(H.stat == DEAD) - to_chat(user, "[src] are useless on the dead.") - return - if(H != user) - H.visible_message("[user] forces [H] to apply [src]... [H.p_they()] quickly regenerate all injuries!") - SSblackbox.add_details("hivelord_core","[src.type]|used|other") - else - to_chat(user, "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.") - SSblackbox.add_details("hivelord_core","[src.type]|used|self") - H.revive(full_heal = 1) - qdel(src) - ..() - -/obj/item/organ/hivelord_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) - . = ..() - if(!preserved && !inert) - preserved(TRUE) - owner.visible_message("[src] stabilizes as it's inserted.") - -/obj/item/organ/hivelord_core/Remove(mob/living/carbon/M, special = 0) - if(!inert && !special) - owner.visible_message("[src] goes inert as it's removed.") - go_inert() - return ..() - -/obj/item/organ/hivelord_core/prepare_eat() - return null - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood - name = "hivelord brood" - desc = "A fragment of the original Hivelord, rallying behind its original. One isn't much of a threat, but..." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "Hivelordbrood" - icon_living = "Hivelordbrood" - icon_aggro = "Hivelordbrood" - icon_dead = "Hivelordbrood" - icon_gib = "syndicate_gib" - mouse_opacity = 2 - move_to_delay = 1 - friendly = "buzzes near" - vision_range = 10 - speed = 3 - maxHealth = 1 - health = 1 - movement_type = FLYING - harm_intent_damage = 5 - melee_damage_lower = 2 - melee_damage_upper = 2 - attacktext = "slashes" - speak_emote = list("telepathically cries") - attack_sound = 'sound/weapons/pierce.ogg' - throw_message = "falls right through the strange body of the" - obj_damage = 0 - environment_smash = ENVIRONMENT_SMASH_NONE - pass_flags = PASSTABLE - del_on_death = 1 - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/Initialize() - ..() - addtimer(CALLBACK(src, .proc/death), 100) - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood - name = "blood brood" - desc = "A living string of blood and alien materials." - icon_state = "bloodbrood" - icon_living = "bloodbrood" - icon_aggro = "bloodbrood" - attacktext = "pierces" - color = "#C80000" - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/death() - if(loc) // Splash the turf we are on with blood - reagents.reaction(get_turf(src)) - ..() - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/Initialize() - create_reagents(30) - ..() - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/AttackingTarget() - . = ..() - if(. && iscarbon(target)) - transfer_reagents(target, 1) - - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/attack_hand(mob/living/carbon/human/M) - if("\ref[M]" in faction) - reabsorb_host(M) - else - return ..() - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/attack_paw(mob/living/carbon/monkey/M) - if("\ref[M]" in faction) - reabsorb_host(M) - else - return ..() - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/attack_alien(mob/living/carbon/alien/humanoid/M) - if("\ref[M]" in faction) - reabsorb_host(M) - else - return ..() - - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/reabsorb_host(mob/living/carbon/C) - C.visible_message("[src] is reabsorbed by [C]'s body.", \ - "[src] is reabsorbed by your body.") - transfer_reagents(C) - death() - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/transfer_reagents(mob/living/carbon/C, volume = 30) - if(!reagents.total_volume) - return - - volume = min(volume, reagents.total_volume) - - var/fraction = min(volume/reagents.total_volume, 1) - reagents.reaction(C, INJECT, fraction) - reagents.trans_to(C, volume) - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/link_host(mob/living/carbon/C) - faction = list("\ref[src]", "\ref[C]") // Hostile to everyone except the host. - C.transfer_blood_to(src, 30) - var/newcolor = mix_color_from_reagents(reagents.reagent_list) - add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY) - -/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." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "Goliath" - icon_living = "Goliath" - icon_aggro = "Goliath_alert" - icon_dead = "Goliath_dead" - icon_gib = "syndicate_gib" - mouse_opacity = 2 - move_to_delay = 40 - ranged = 1 - ranged_cooldown_time = 120 - friendly = "wails at" - speak_emote = list("bellows") - vision_range = 4 - speed = 3 - maxHealth = 300 - health = 300 - harm_intent_damage = 0 - obj_damage = 100 - melee_damage_lower = 25 - melee_damage_upper = 25 - attacktext = "pulverizes" - attack_sound = 'sound/weapons/punch1.ogg' - throw_message = "does nothing to the rocky hide of the" - aggro_vision_range = 9 - idle_vision_range = 5 - anchored = 1 //Stays anchored until death as to be unpullable - var/pre_attack = 0 - var/pre_attack_icon = "Goliath_preattack" - loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) - -/mob/living/simple_animal/hostile/asteroid/goliath/Life() - ..() - handle_preattack() - -/mob/living/simple_animal/hostile/asteroid/goliath/proc/handle_preattack() - if(ranged_cooldown <= world.time + ranged_cooldown_time*0.25 && !pre_attack) - pre_attack++ - if(!pre_attack || stat || AIStatus == AI_IDLE) - return - icon_state = pre_attack_icon - -/mob/living/simple_animal/hostile/asteroid/goliath/revive(full_heal = 0, admin_revive = 0) - if(..()) - anchored = 1 - . = 1 - -/mob/living/simple_animal/hostile/asteroid/goliath/death(gibbed) - anchored = 0 - ..(gibbed) - -/mob/living/simple_animal/hostile/asteroid/goliath/OpenFire() - var/tturf = get_turf(target) - if(!isturf(tturf)) - return - if(get_dist(src, target) <= 7)//Screen range check, so you can't get tentacle'd offscreen - visible_message("The [src.name] digs its tentacles under [target.name]!") - new /obj/effect/goliath_tentacle/original(tturf) - ranged_cooldown = world.time + ranged_cooldown_time - icon_state = icon_aggro - pre_attack = 0 - -/mob/living/simple_animal/hostile/asteroid/goliath/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - ranged_cooldown -= 10 - handle_preattack() - . = ..() - -/mob/living/simple_animal/hostile/asteroid/goliath/Aggro() - vision_range = aggro_vision_range - handle_preattack() - if(icon_state != icon_aggro) - icon_state = icon_aggro - -/obj/effect/goliath_tentacle - name = "Goliath tentacle" - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "Goliath_tentacle" - var/latched = 0 - anchored = 1 - -/obj/effect/goliath_tentacle/New() - var/turftype = get_turf(src) - if(ismineralturf(turftype)) - var/turf/closed/mineral/M = turftype - M.gets_drilled() - addtimer(CALLBACK(src, .proc/Trip), 10) - -/obj/effect/goliath_tentacle/original - -/obj/effect/goliath_tentacle/original/New() - for(var/obj/effect/goliath_tentacle/original/O in loc)//No more GG NO RE from 2+ goliaths simultaneously tentacling you - if(O != src) - qdel(src) - var/list/directions = GLOB.cardinal.Copy() - var/counter - for(counter = 1, counter <= 3, counter++) - var/spawndir = pick(directions) - directions -= spawndir - var/turf/T = get_step(src,spawndir) - new /obj/effect/goliath_tentacle(T) - ..() - -/obj/effect/goliath_tentacle/proc/Trip() - for(var/mob/living/M in src.loc) - visible_message("The [src.name] grabs hold of [M.name]!") - M.Stun(5) - M.adjustBruteLoss(rand(10,15)) - latched = 1 - if(!latched) - qdel(src) - else - QDEL_IN(src, 50) - -/obj/item/stack/sheet/animalhide/goliath_hide - name = "goliath hide plates" - desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." - icon = 'icons/obj/mining.dmi' - icon_state = "goliath_hide" - flags = NOBLUDGEON - w_class = WEIGHT_CLASS_NORMAL - layer = MOB_LAYER - -/obj/item/stack/sheet/animalhide/goliath_hide/afterattack(atom/target, mob/user, proximity_flag) - if(proximity_flag) - if(istype(target, /obj/item/clothing/suit/space/hardsuit/mining) || istype(target, /obj/item/clothing/head/helmet/space/hardsuit/mining) || istype(target, /obj/item/clothing/suit/hooded/explorer) || istype(target, /obj/item/clothing/head/hooded/explorer)) - var/obj/item/clothing/C = target - var/list/current_armor = C.armor - if(current_armor.["melee"] < 60) - current_armor.["melee"] = min(current_armor.["melee"] + 10, 60) - to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") - use(1) - else - to_chat(user, "You can't improve [C] any further!") - return - if(istype(target, /obj/mecha/working/ripley)) - var/obj/mecha/working/ripley/D = target - if(D.hides < 3) - D.hides++ - D.armor["melee"] = min(D.armor["melee"] + 10, 70) - D.armor["bullet"] = min(D.armor["bullet"] + 5, 50) - D.armor["laser"] = min(D.armor["laser"] + 5, 50) - to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") - D.update_icon() - if(D.hides == 3) - D.desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - its pilot must be an experienced monster hunter." - else - D.desc = "Autonomous Power Loader Unit. Its armour is enhanced with some goliath hide plates." - qdel(src) - else - to_chat(user, "You can't improve [D] any further!") - return - - -/mob/living/simple_animal/hostile/asteroid/handle_temperature_damage() - if(bodytemperature < minbodytemp) - adjustBruteLoss(2) - else if(bodytemperature > maxbodytemp) - adjustBruteLoss(20) - -/mob/living/simple_animal/hostile/asteroid/fugu - name = "wumborian fugu" - desc = "The wumborian fugu rapidly increases its body mass in order to ward off its prey. Great care should be taken to avoid it while it's in this state as it is nearly invincible, but it cannot maintain its form forever." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "Fugu" - icon_living = "Fugu" - icon_aggro = "Fugu" - icon_dead = "Fugu_dead" - icon_gib = "syndicate_gib" - mouse_opacity = 2 - move_to_delay = 5 - friendly = "floats near" - speak_emote = list("puffs") - vision_range = 5 - speed = 0 - maxHealth = 50 - health = 50 - harm_intent_damage = 5 - obj_damage = 0 - melee_damage_lower = 0 - melee_damage_upper = 0 - attacktext = "chomps" - attack_sound = 'sound/weapons/punch1.ogg' - throw_message = "is avoided by the" - aggro_vision_range = 9 - idle_vision_range = 5 - mob_size = MOB_SIZE_SMALL - environment_smash = ENVIRONMENT_SMASH_NONE - var/wumbo = 0 - var/inflate_cooldown = 0 - loot = list(/obj/item/asteroid/fugu_gland{layer = ABOVE_MOB_LAYER}) - -/mob/living/simple_animal/hostile/asteroid/fugu/Life() - if(!wumbo) - inflate_cooldown = max((inflate_cooldown - 1), 0) - if(target && AIStatus == AI_ON) - Inflate() - ..() - -/mob/living/simple_animal/hostile/asteroid/fugu/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - if(!forced && wumbo) - return FALSE - . = ..() - -/mob/living/simple_animal/hostile/asteroid/fugu/Aggro() - ..() - Inflate() - -/mob/living/simple_animal/hostile/asteroid/fugu/verb/Inflate() - set name = "Inflate" - set category = "Fugu" - set desc = "Temporarily increases your size, and makes you significantly more dangerous and tough." - if(wumbo) - to_chat(src, "You're already inflated.") - return - if(inflate_cooldown) - to_chat(src, "We need time to gather our strength.") - return - if(buffed) - to_chat(src, "Something is interfering with our growth.") - return - wumbo = 1 - icon_state = "Fugu_big" - obj_damage = 60 - melee_damage_lower = 15 - melee_damage_upper = 20 - harm_intent_damage = 0 - throw_message = "is absorbed by the girth of the" - retreat_distance = null - minimum_distance = 1 - move_to_delay = 6 - transform *= 2 - environment_smash = ENVIRONMENT_SMASH_WALLS - mob_size = MOB_SIZE_LARGE - speed = 1 - addtimer(CALLBACK(src, .proc/Deflate), 100) - -/mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate() - if(wumbo) - walk(src, 0) - wumbo = 0 - icon_state = "Fugu" - obj_damage = 0 - melee_damage_lower = 0 - melee_damage_upper = 0 - harm_intent_damage = 5 - throw_message = "is avoided by the" - retreat_distance = 9 - minimum_distance = 9 - move_to_delay = 2 - transform /= 2 - inflate_cooldown = 4 - environment_smash = ENVIRONMENT_SMASH_NONE - mob_size = MOB_SIZE_SMALL - speed = 0 - -/mob/living/simple_animal/hostile/asteroid/fugu/death(gibbed) - Deflate() - ..(gibbed) - -/obj/item/asteroid/fugu_gland - name = "wumborian fugu gland" - 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 = NOBLUDGEON - w_class = WEIGHT_CLASS_NORMAL - layer = MOB_LAYER - origin_tech = "biotech=6" - var/list/banned_mobs() - -/obj/item/asteroid/fugu_gland/afterattack(atom/target, mob/user, proximity_flag) - if(proximity_flag && istype(target, /mob/living/simple_animal)) - var/mob/living/simple_animal/A = target - if(A.buffed || (A.type in banned_mobs) || A.stat) - to_chat(user, "Something's interfering with the [src]'s effects. It's no use.") - return - A.buffed++ - A.maxHealth *= 1.5 - A.health = min(A.maxHealth,A.health*1.5) - A.melee_damage_lower = max((A.melee_damage_lower * 2), 10) - A.melee_damage_upper = max((A.melee_damage_upper * 2), 10) - A.transform *= 2 - A.environment_smash += 2 - to_chat(user, "You increase the size of [A], giving it a surge of strength!") - qdel(src) - -/////////////////////Lavaland - -//Watcher - -/mob/living/simple_animal/hostile/asteroid/basilisk/watcher - name = "watcher" - desc = "A levitating, eye-like creature held aloft by winglike formations of sinew. A sharp spine of crystal protrudes from its body." - icon = 'icons/mob/lavaland/watcher.dmi' - icon_state = "watcher" - icon_living = "watcher" - icon_aggro = "watcher" - icon_dead = "watcher_dead" - pixel_x = -10 - throw_message = "bounces harmlessly off of" - melee_damage_lower = 15 - melee_damage_upper = 15 - attacktext = "impales" - a_intent = INTENT_HARM - speak_emote = list("telepathically cries") - attack_sound = 'sound/weapons/bladeslice.ogg' - stat_attack = 1 - movement_type = FLYING - robust_searching = 1 - loot = list() - butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1) - -//Goliath - -/mob/living/simple_animal/hostile/asteroid/goliath/beast - name = "goliath" - desc = "A hulking, armor-plated beast with long tendrils arching from its back." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "goliath" - icon_living = "goliath" - icon_aggro = "goliath" - icon_dead = "goliath_dead" - throw_message = "does nothing to the tough hide of the" - pre_attack_icon = "goliath2" - butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/goliath = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 1, /obj/item/stack/sheet/bone = 2) - loot = list() - stat_attack = 1 - robust_searching = 1 - - - -//Legion - -/mob/living/simple_animal/hostile/asteroid/hivelord/legion - name = "legion" - desc = "You can still see what was once a human under the shifting mass of corruption." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "legion" - icon_living = "legion" - icon_aggro = "legion" - icon_dead = "legion" - icon_gib = "syndicate_gib" - obj_damage = 60 - melee_damage_lower = 15 - melee_damage_upper = 15 - attacktext = "lashes out at" - speak_emote = list("echoes") - attack_sound = 'sound/weapons/pierce.ogg' - throw_message = "bounces harmlessly off of" - loot = list(/obj/item/organ/hivelord_core/legion) - brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion - del_on_death = 1 - stat_attack = 1 - robust_searching = 1 - var/mob/living/carbon/human/stored_mob - -/mob/living/simple_animal/hostile/asteroid/hivelord/legion/death(gibbed) - visible_message("The skulls on [src] wail in anger as they flee from their dying host!") - var/turf/T = get_turf(src) - if(T) - if(stored_mob) - stored_mob.forceMove(get_turf(src)) - stored_mob = null - else - new /obj/effect/mob_spawn/human/corpse/damaged(T) - ..(gibbed) - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion - name = "legion" - desc = "One of many." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "legion_head" - icon_living = "legion_head" - icon_aggro = "legion_head" - icon_dead = "legion_head" - icon_gib = "syndicate_gib" - friendly = "buzzes near" - vision_range = 10 - maxHealth = 1 - health = 5 - harm_intent_damage = 5 - melee_damage_lower = 12 - melee_damage_upper = 12 - attacktext = "bites" - speak_emote = list("echoes") - attack_sound = 'sound/weapons/pierce.ogg' - throw_message = "is shrugged off by" - pass_flags = PASSTABLE - del_on_death = 1 - stat_attack = 1 - robust_searching = 1 - var/can_infest_dead = FALSE - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/Life() - if(isturf(loc)) - for(var/mob/living/carbon/human/H in view(src,1)) //Only for corpse right next to/on same tile - if(H.stat == UNCONSCIOUS || (can_infest_dead && H.stat == DEAD)) - infest(H) - ..() - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/proc/infest(mob/living/carbon/human/H) - visible_message("[name] burrows into the flesh of [H]!") - var/mob/living/simple_animal/hostile/asteroid/hivelord/legion/L = new(H.loc) - visible_message("[L] staggers to their feet!") - H.death() - H.adjustBruteLoss(1000) - L.stored_mob = H - H.forceMove(L) - qdel(src) - -//Advanced Legion is slightly tougher to kill and can raise corpses (revive other legions) - -/mob/living/simple_animal/hostile/asteroid/hivelord/legion/advanced - stat_attack = 2 - maxHealth = 120 - health = 120 - brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/advanced - icon_state = "dwarf_legion" - icon_living = "dwarf_legion" - icon_aggro = "dwarf_legion" - icon_dead = "dwarf_legion" - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/advanced - stat_attack = 2 - can_infest_dead = TRUE - -//Legion that spawns Legions - -/mob/living/simple_animal/hostile/spawner/legion - name = "legion" - desc = "One of many." - icon = 'icons/mob/lavaland/dragon.dmi' - icon_state = "legion" - icon_living = "legion" - icon_dead = "legion" - health = 450 - maxHealth = 450 - max_mobs = 3 - spawn_time = 200 - spawn_text = "peels itself off from" - mob_type = /mob/living/simple_animal/hostile/asteroid/hivelord/legion - melee_damage_lower = 20 - melee_damage_upper = 20 - anchored = FALSE - AIStatus = AI_ON - stop_automated_movement = FALSE - wander = TRUE - maxbodytemp = INFINITY - layer = MOB_LAYER - del_on_death = TRUE - sentience_type = SENTIENCE_BOSS - loot = list(/obj/item/organ/hivelord_core/legion = 3, /obj/effect/mob_spawn/human/corpse/damaged = 5) - move_to_delay = 14 - vision_range = 5 - aggro_vision_range = 9 - idle_vision_range = 5 - speed = 3 - faction = list("mining") - weather_immunities = list("lava","ash") - obj_damage = 30 - environment_smash = ENVIRONMENT_SMASH_STRUCTURES - see_in_dark = 8 - lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - -//Organ - -/obj/item/organ/hivelord_core/legion - name = "legion's soul" - desc = "A strange rock that still crackles with power... its \ - healing properties will soon become inert if not used quickly." - icon_state = "legion_soul" - -/obj/item/organ/hivelord_core/legion/New() - ..() - update_icon() - -/obj/item/organ/hivelord_core/update_icon() - icon_state = inert ? "legion_soul_inert" : "legion_soul" - cut_overlays() - if(!inert && !preserved) - add_overlay("legion_soul_crackle") - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() - -/obj/item/organ/hivelord_core/legion/go_inert() - . = ..() - desc = "[src] has become inert, it crackles no more and is useless for \ - healing injuries." - -/obj/item/organ/hivelord_core/legion/preserved(implanted = 0) - ..() - desc = "[src] has been stabilized. It no longer crackles with power, but it's healing properties are preserved indefinitely." - -/obj/item/weapon/legion_skull - name = "legion's head" - desc = "The once living, now empty eyes of the former human's skull cut deep into your soul." - icon = 'icons/obj/mining.dmi' - icon_state = "skull" - - -//Gutlunches - -/mob/living/simple_animal/hostile/asteroid/gutlunch - name = "gutlunch" - desc = "A scavenger that eats raw meat, often found alongside ash walkers. Produces a thick, nutritious milk." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "gutlunch" - icon_living = "gutlunch" - icon_dead = "gutlunch" - speak_emote = list("warbles", "quavers") - emote_hear = list("trills.") - emote_see = list("sniffs.", "burps.") - weather_immunities = list("lava","ash") - faction = list("mining", "ashwalker") - density = 0 - speak_chance = 1 - turns_per_move = 8 - obj_damage = 0 - environment_smash = ENVIRONMENT_SMASH_NONE - move_to_delay = 15 - response_help = "pets" - response_disarm = "gently pushes aside" - response_harm = "squishes" - friendly = "pinches" - a_intent = INTENT_HELP - ventcrawler = VENTCRAWLER_ALWAYS - gold_core_spawnable = 2 - stat_attack = 1 - gender = NEUTER - stop_automated_movement = FALSE - stop_automated_movement_when_pulled = TRUE - stat_exclusive = TRUE - robust_searching = TRUE - search_objects = TRUE - del_on_death = TRUE - loot = list(/obj/effect/decal/cleanable/blood/gibs) - deathmessage = "is pulped into bugmash." - - animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch - childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55) - - wanted_objects = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/) - var/obj/item/udder/gutlunch/udder = null - -/mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize() - udder = new() - ..() - -/mob/living/simple_animal/hostile/asteroid/gutlunch/Destroy() - qdel(udder) - udder = null - return ..() - -/mob/living/simple_animal/hostile/asteroid/gutlunch/regenerate_icons() - cut_overlays() - if(udder.reagents.total_volume == udder.reagents.maximum_volume) - add_overlay("gl_full") - ..() - -/mob/living/simple_animal/hostile/asteroid/gutlunch/attackby(obj/item/O, mob/user, params) - if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass)) - udder.milkAnimal(O, user) - regenerate_icons() - else - ..() - -/mob/living/simple_animal/hostile/asteroid/gutlunch/AttackingTarget() - if(is_type_in_typecache(target,wanted_objects)) //we eats - udder.generateMilk() - regenerate_icons() - visible_message("[src] slurps up [target].") - qdel(target) - return ..() - - -/obj/item/udder/gutlunch - name = "nutrient sac" - -/obj/item/udder/gutlunch/New() - reagents = new(50) - reagents.my_atom = src - -/obj/item/udder/gutlunch/generateMilk() - if(prob(60)) - reagents.add_reagent("cream", rand(2, 5)) - if(prob(45)) - reagents.add_reagent("salglu_solution", rand(2,5)) - - -//Male gutlunch. They're smaller and more colorful! -/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck - name = "gubbuck" - gender = MALE - -/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck/Initialize() - ..() - add_atom_colour(pick("#E39FBB", "#D97D64", "#CF8C4A"), FIXED_COLOUR_PRIORITY) - resize = 0.85 - update_transform() - - -//Lady gutlunch. They make the babby. -/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen - name = "guthen" - gender = FEMALE - -/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen/Life() - ..() - if(udder.reagents.total_volume == udder.reagents.maximum_volume) //Only breed when we're full. - make_babies() - -/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen/make_babies() - . = ..() - if(.) - udder.reagents.clear_reagents() - regenerate_icons() - -//Nests -/obj/effect/light_emitter/tendril - set_luminosity = 4 - set_cap = 2.5 - light_color = LIGHT_COLOR_LAVA - -/mob/living/simple_animal/hostile/spawner/lavaland - name = "necropolis tendril" - desc = "A vile tendril of corruption, originating deep underground. Terrible monsters are pouring out of it." - icon = 'icons/mob/nest.dmi' - icon_state = "tendril" - icon_living = "tendril" - icon_dead = "tendril" - faction = list("mining") - weather_immunities = list("lava","ash") - health = 250 - maxHealth = 250 - max_mobs = 3 - spawn_time = 300 //30 seconds default - mob_type = /mob/living/simple_animal/hostile/asteroid/basilisk/watcher - spawn_text = "emerges from" - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = INFINITY - loot = list(/obj/effect/collapse, /obj/structure/closet/crate/necropolis/tendril) - del_on_death = 1 - var/gps = null - var/obj/effect/light_emitter/tendril/emitted_light - -/mob/living/simple_animal/hostile/spawner/lavaland/goliath - mob_type = /mob/living/simple_animal/hostile/asteroid/goliath/beast - -/mob/living/simple_animal/hostile/spawner/lavaland/legion - mob_type = /mob/living/simple_animal/hostile/asteroid/hivelord/legion - -/mob/living/simple_animal/hostile/spawner/lavaland/Initialize() - . = ..() - emitted_light = new(loc) - for(var/F in RANGE_TURFS(1, src)) - if(ismineralturf(F)) - var/turf/closed/mineral/M = F - M.ChangeTurf(M.turf_type,FALSE,TRUE) - gps = new /obj/item/device/gps/internal(src) - -/mob/living/simple_animal/hostile/spawner/lavaland/Destroy() - QDEL_NULL(emitted_light) - QDEL_NULL(gps) - . = ..() - -#define MEDAL_PREFIX "Tendril" -/mob/living/simple_animal/hostile/spawner/lavaland/death() - var/last_tendril = TRUE - for(var/mob/living/simple_animal/hostile/spawner/lavaland/other in GLOB.mob_list) - if(other != src) - last_tendril = FALSE - break - if(last_tendril && !admin_spawned) - if(global.medal_hub && global.medal_pass && global.medals_enabled) - for(var/mob/living/L in view(7,src)) - if(L.stat) - continue - if(L.client) - var/client/C = L.client - var/suffixm = ALL_KILL_MEDAL - var/prefix = MEDAL_PREFIX - UnlockMedal("[prefix] [suffixm]",C) - SetScore(TENDRIL_CLEAR_SCORE,C,1) - ..() -#undef MEDAL_PREFIX - -/obj/effect/collapse - name = "collapsing necropolis tendril" - desc = "Get clear!" - layer = BELOW_OBJ_LAYER - icon = 'icons/mob/nest.dmi' - icon_state = "tendril" - anchored = TRUE - density = TRUE - var/obj/effect/light_emitter/tendril/emitted_light - -/obj/effect/collapse/Initialize() - . = ..() - emitted_light = new(loc) - visible_message("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!") - visible_message("Something falls free of the tendril!") - playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, 1, 1) - addtimer(CALLBACK(src, .proc/collapse), 50) - -/obj/effect/collapse/Destroy() - QDEL_NULL(emitted_light) - return ..() - -/obj/effect/collapse/proc/collapse() - for(var/mob/M in range(7,src)) - shake_camera(M, 15, 1) - playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, 1) - visible_message("The tendril falls inward, the ground around it widening into a yawning chasm!") - for(var/turf/T in range(2,src)) - if(!T.density) - T.TerraformTurf(/turf/open/chasm/straight_down/lava_land_surface) - qdel(src) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm new file mode 100644 index 0000000000..19b35b9866 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -0,0 +1,80 @@ +//A beast that fire freezing blasts. +/mob/living/simple_animal/hostile/asteroid/basilisk + name = "basilisk" + desc = "A territorial beast, covered in a thick shell that absorbs energy. Its stare causes victims to freeze from the inside." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "Basilisk" + icon_living = "Basilisk" + icon_aggro = "Basilisk_alert" + icon_dead = "Basilisk_dead" + icon_gib = "syndicate_gib" + move_to_delay = 20 + projectiletype = /obj/item/projectile/temp/basilisk + projectilesound = 'sound/weapons/pierce.ogg' + ranged = 1 + ranged_message = "stares" + ranged_cooldown_time = 30 + throw_message = "does nothing against the hard shell of" + vision_range = 2 + speed = 3 + maxHealth = 200 + health = 200 + harm_intent_damage = 5 + obj_damage = 60 + melee_damage_lower = 12 + melee_damage_upper = 12 + attacktext = "bites into" + a_intent = INTENT_HARM + speak_emote = list("chitters") + attack_sound = 'sound/weapons/bladeslice.ogg' + aggro_vision_range = 9 + idle_vision_range = 2 + turns_per_move = 5 + loot = list(/obj/item/weapon/ore/diamond{layer = ABOVE_MOB_LAYER}, + /obj/item/weapon/ore/diamond{layer = ABOVE_MOB_LAYER}) + +/obj/item/projectile/temp/basilisk + name = "freezing blast" + icon_state = "ice_2" + damage = 0 + damage_type = BURN + nodamage = 1 + flag = "energy" + temperature = 50 + +/mob/living/simple_animal/hostile/asteroid/basilisk/GiveTarget(new_target) + if(..()) //we have a target + if(isliving(target) && !target.Adjacent(targets_from) && ranged_cooldown <= world.time)//No more being shot at point blank or spammed with RNG beams + OpenFire(target) + +/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target) + switch(severity) + if(1) + gib() + if(2) + adjustBruteLoss(140) + if(3) + adjustBruteLoss(110) + +//Watcher +/mob/living/simple_animal/hostile/asteroid/basilisk/watcher + name = "watcher" + desc = "A levitating, eye-like creature held aloft by winglike formations of sinew. A sharp spine of crystal protrudes from its body." + icon = 'icons/mob/lavaland/watcher.dmi' + icon_state = "watcher" + icon_living = "watcher" + icon_aggro = "watcher" + icon_dead = "watcher_dead" + pixel_x = -10 + throw_message = "bounces harmlessly off of" + melee_damage_lower = 15 + melee_damage_upper = 15 + attacktext = "impales" + a_intent = INTENT_HARM + speak_emote = list("telepathically cries") + attack_sound = 'sound/weapons/bladeslice.ogg' + stat_attack = UNCONSCIOUS + movement_type = FLYING + robust_searching = 1 + loot = list() + butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm new file mode 100644 index 0000000000..54673c887e --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm @@ -0,0 +1,79 @@ +//An ore-devouring but easily scared creature +/mob/living/simple_animal/hostile/asteroid/goldgrub + name = "goldgrub" + desc = "A worm that grows fat from eating everything in its sight. Seems to enjoy precious metals and other shiny things, hence the name." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "Goldgrub" + icon_living = "Goldgrub" + icon_aggro = "Goldgrub_alert" + icon_dead = "Goldgrub_dead" + icon_gib = "syndicate_gib" + vision_range = 2 + aggro_vision_range = 9 + idle_vision_range = 2 + move_to_delay = 5 + friendly = "harmlessly rolls into" + maxHealth = 45 + health = 45 + harm_intent_damage = 5 + melee_damage_lower = 0 + melee_damage_upper = 0 + attacktext = "barrels into" + attack_sound = 'sound/weapons/punch1.ogg' + a_intent = INTENT_HELP + speak_emote = list("screeches") + throw_message = "sinks in slowly, before being pushed out of " + deathmessage = "spits up the contents of its stomach before dying!" + status_flags = CANPUSH + search_objects = 1 + wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver, + /obj/item/weapon/ore/uranium) + + var/chase_time = 100 + var/will_burrow = TRUE + +/mob/living/simple_animal/hostile/asteroid/goldgrub/Initialize() + ..() + var/i = rand(1,3) + while(i) + loot += pick(/obj/item/weapon/ore/silver, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/uranium, /obj/item/weapon/ore/diamond) + i-- + +/mob/living/simple_animal/hostile/asteroid/goldgrub/GiveTarget(new_target) + target = new_target + if(target != null) + if(istype(target, /obj/item/weapon/ore) && loot.len < 10) + visible_message("The [src.name] looks at [target.name] with hungry eyes.") + else if(isliving(target)) + Aggro() + visible_message("The [src.name] tries to flee from [target.name]!") + retreat_distance = 10 + minimum_distance = 10 + if(will_burrow) + addtimer(CALLBACK(src, .proc/Burrow), chase_time) + +/mob/living/simple_animal/hostile/asteroid/goldgrub/AttackingTarget() + if(istype(target, /obj/item/weapon/ore)) + EatOre(target) + return + return ..() + +/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/EatOre(atom/targeted_ore) + for(var/obj/item/weapon/ore/O in targeted_ore.loc) + if(loot.len < 10) + loot += O.type + qdel(O) + visible_message("The ore was swallowed whole!") + +/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Burrow()//Begin the chase to kill the goldgrub in time + if(!stat) + visible_message("The [src.name] buries into the ground, vanishing from sight!") + qdel(src) + +/mob/living/simple_animal/hostile/asteroid/goldgrub/bullet_act(obj/item/projectile/P) + visible_message("The [P.name] was repelled by [src.name]'s girth!") + return + +/mob/living/simple_animal/hostile/asteroid/goldgrub/adjustHealth(amount, updating_health = TRUE, forced = FALSE) + idle_vision_range = 9 + . = ..() 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 new file mode 100644 index 0000000000..e95012b519 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -0,0 +1,130 @@ +//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." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "Goliath" + icon_living = "Goliath" + icon_aggro = "Goliath_alert" + icon_dead = "Goliath_dead" + icon_gib = "syndicate_gib" + mouse_opacity = 2 + move_to_delay = 40 + ranged = 1 + ranged_cooldown_time = 120 + friendly = "wails at" + speak_emote = list("bellows") + vision_range = 4 + speed = 3 + maxHealth = 300 + health = 300 + harm_intent_damage = 0 + obj_damage = 100 + melee_damage_lower = 25 + melee_damage_upper = 25 + attacktext = "pulverizes" + attack_sound = 'sound/weapons/punch1.ogg' + throw_message = "does nothing to the rocky hide of the" + aggro_vision_range = 9 + idle_vision_range = 5 + anchored = TRUE //Stays anchored until death as to be unpullable + var/pre_attack = 0 + var/pre_attack_icon = "Goliath_preattack" + loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) + +/mob/living/simple_animal/hostile/asteroid/goliath/Life() + ..() + handle_preattack() + +/mob/living/simple_animal/hostile/asteroid/goliath/proc/handle_preattack() + if(ranged_cooldown <= world.time + ranged_cooldown_time*0.25 && !pre_attack) + pre_attack++ + if(!pre_attack || stat || AIStatus == AI_IDLE) + return + icon_state = pre_attack_icon + +/mob/living/simple_animal/hostile/asteroid/goliath/revive(full_heal = 0, admin_revive = 0) + if(..()) + anchored = TRUE + . = 1 + +/mob/living/simple_animal/hostile/asteroid/goliath/death(gibbed) + anchored = 0 + ..(gibbed) + +/mob/living/simple_animal/hostile/asteroid/goliath/OpenFire() + var/tturf = get_turf(target) + if(!isturf(tturf)) + return + if(get_dist(src, target) <= 7)//Screen range check, so you can't get tentacle'd offscreen + visible_message("The [src.name] digs its tentacles under [target.name]!") + new /obj/effect/goliath_tentacle/original(tturf) + ranged_cooldown = world.time + ranged_cooldown_time + icon_state = icon_aggro + pre_attack = 0 + +/mob/living/simple_animal/hostile/asteroid/goliath/adjustHealth(amount, updating_health = TRUE, forced = FALSE) + ranged_cooldown -= 10 + handle_preattack() + . = ..() + +/mob/living/simple_animal/hostile/asteroid/goliath/Aggro() + vision_range = aggro_vision_range + handle_preattack() + if(icon_state != icon_aggro) + icon_state = icon_aggro + +//Lavaland Goliath +/mob/living/simple_animal/hostile/asteroid/goliath/beast + name = "goliath" + desc = "A hulking, armor-plated beast with long tendrils arching from its back." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "goliath" + icon_living = "goliath" + icon_aggro = "goliath" + icon_dead = "goliath_dead" + throw_message = "does nothing to the tough hide of the" + pre_attack_icon = "goliath2" + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/goliath = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 1, /obj/item/stack/sheet/bone = 2) + loot = list() + stat_attack = UNCONSCIOUS + robust_searching = 1 + +//tentacles +/obj/effect/goliath_tentacle + name = "Goliath tentacle" + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "Goliath_tentacle" + var/latched = FALSE + anchored = TRUE + +/obj/effect/goliath_tentacle/Initialize() + . = ..() + if(ismineralturf(loc)) + var/turf/closed/mineral/M = loc + M.gets_drilled() + addtimer(CALLBACK(src, .proc/Trip), 10) + +/obj/effect/goliath_tentacle/original/Initialize() + . = ..() + for(var/obj/effect/goliath_tentacle/original/O in loc)//No more GG NO RE from 2+ goliaths simultaneously tentacling you + if(O != src) + qdel(src) + var/list/directions = GLOB.cardinal.Copy() + for(var/i in 1 to 3) + var/spawndir = pick(directions) + directions -= spawndir + var/turf/T = get_step(src,spawndir) + if(T) + new /obj/effect/goliath_tentacle(T) + +/obj/effect/goliath_tentacle/proc/Trip() + for(var/mob/living/M in src.loc) + visible_message("The [src.name] grabs hold of [M.name]!") + M.Stun(5) + M.adjustBruteLoss(rand(10,15)) + latched = TRUE + if(!latched) + qdel(src) + else + QDEL_IN(src, 50) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm new file mode 100644 index 0000000000..b5bea10cd3 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -0,0 +1,113 @@ +//Gutlunches, passive mods that devour blood and gibs +/mob/living/simple_animal/hostile/asteroid/gutlunch + name = "gutlunch" + desc = "A scavenger that eats raw meat, often found alongside ash walkers. Produces a thick, nutritious milk." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "gutlunch" + icon_living = "gutlunch" + icon_dead = "gutlunch" + speak_emote = list("warbles", "quavers") + emote_hear = list("trills.") + emote_see = list("sniffs.", "burps.") + weather_immunities = list("lava","ash") + faction = list("mining", "ashwalker") + density = 0 + speak_chance = 1 + turns_per_move = 8 + obj_damage = 0 + environment_smash = ENVIRONMENT_SMASH_NONE + move_to_delay = 15 + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "squishes" + friendly = "pinches" + a_intent = INTENT_HELP + ventcrawler = VENTCRAWLER_ALWAYS + gold_core_spawnable = 2 + stat_attack = UNCONSCIOUS + gender = NEUTER + stop_automated_movement = FALSE + stop_automated_movement_when_pulled = TRUE + stat_exclusive = TRUE + robust_searching = TRUE + search_objects = TRUE + del_on_death = TRUE + loot = list(/obj/effect/decal/cleanable/blood/gibs) + deathmessage = "is pulped into bugmash." + + animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch + childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55) + + wanted_objects = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/) + var/obj/item/udder/gutlunch/udder = null + +/mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize() + udder = new() + . = ..() + +/mob/living/simple_animal/hostile/asteroid/gutlunch/Destroy() + QDEL_NULL(udder) + return ..() + +/mob/living/simple_animal/hostile/asteroid/gutlunch/regenerate_icons() + cut_overlays() + if(udder.reagents.total_volume == udder.reagents.maximum_volume) + add_overlay("gl_full") + ..() + +/mob/living/simple_animal/hostile/asteroid/gutlunch/attackby(obj/item/O, mob/user, params) + if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass)) + udder.milkAnimal(O, user) + regenerate_icons() + else + ..() + +/mob/living/simple_animal/hostile/asteroid/gutlunch/AttackingTarget() + if(is_type_in_typecache(target,wanted_objects)) //we eats + udder.generateMilk() + regenerate_icons() + visible_message("[src] slurps up [target].") + qdel(target) + return ..() + +//Male gutlunch. They're smaller and more colorful! +/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck + name = "gubbuck" + gender = MALE + +/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck/Initialize() + ..() + add_atom_colour(pick("#E39FBB", "#D97D64", "#CF8C4A"), FIXED_COLOUR_PRIORITY) + resize = 0.85 + update_transform() + +//Lady gutlunch. They make the babby. +/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen + name = "guthen" + gender = FEMALE + +/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen/Life() + ..() + if(udder.reagents.total_volume == udder.reagents.maximum_volume) //Only breed when we're full. + make_babies() + +/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen/make_babies() + . = ..() + if(.) + udder.reagents.clear_reagents() + regenerate_icons() + +//Gutlunch udder +/obj/item/udder/gutlunch + name = "nutrient sac" + +/obj/item/udder/gutlunch/New() + reagents = new(50) + reagents.my_atom = src + +/obj/item/udder/gutlunch/generateMilk() + if(prob(60)) + reagents.add_reagent("cream", rand(2, 5)) + if(prob(45)) + reagents.add_reagent("salglu_solution", rand(2,5)) + 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 new file mode 100644 index 0000000000..fbea8d0f79 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -0,0 +1,216 @@ +/mob/living/simple_animal/hostile/asteroid/hivelord + name = "hivelord" + desc = "A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "Hivelord" + icon_living = "Hivelord" + icon_aggro = "Hivelord_alert" + icon_dead = "Hivelord_dead" + icon_gib = "syndicate_gib" + mouse_opacity = 2 + move_to_delay = 14 + ranged = 1 + vision_range = 5 + aggro_vision_range = 9 + idle_vision_range = 5 + speed = 3 + maxHealth = 75 + health = 75 + harm_intent_damage = 5 + melee_damage_lower = 0 + melee_damage_upper = 0 + attacktext = "lashes out at" + speak_emote = list("telepathically cries") + attack_sound = 'sound/weapons/pierce.ogg' + throw_message = "falls right through the strange body of the" + ranged_cooldown = 0 + ranged_cooldown_time = 20 + obj_damage = 0 + environment_smash = ENVIRONMENT_SMASH_NONE + retreat_distance = 3 + minimum_distance = 3 + pass_flags = PASSTABLE + loot = list(/obj/item/organ/regenerative_core) + var/brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood + +/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.GiveTarget(target) + A.friends = friends + A.faction = faction.Copy() + ranged_cooldown = world.time + ranged_cooldown_time + +/mob/living/simple_animal/hostile/asteroid/hivelord/AttackingTarget() + OpenFire() + return TRUE + +/mob/living/simple_animal/hostile/asteroid/hivelord/death(gibbed) + mouse_opacity = 1 + ..(gibbed) + +//A fragile but rapidly produced creature +/mob/living/simple_animal/hostile/asteroid/hivelordbrood + name = "hivelord brood" + desc = "A fragment of the original Hivelord, rallying behind its original. One isn't much of a threat, but..." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "Hivelordbrood" + icon_living = "Hivelordbrood" + icon_aggro = "Hivelordbrood" + icon_dead = "Hivelordbrood" + icon_gib = "syndicate_gib" + mouse_opacity = 2 + move_to_delay = 1 + friendly = "buzzes near" + vision_range = 10 + speed = 3 + maxHealth = 1 + health = 1 + movement_type = FLYING + harm_intent_damage = 5 + melee_damage_lower = 2 + melee_damage_upper = 2 + attacktext = "slashes" + speak_emote = list("telepathically cries") + attack_sound = 'sound/weapons/pierce.ogg' + throw_message = "falls right through the strange body of the" + obj_damage = 0 + environment_smash = ENVIRONMENT_SMASH_NONE + pass_flags = PASSTABLE + del_on_death = 1 + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/Initialize() + ..() + addtimer(CALLBACK(src, .proc/death), 100) + +//Legion +/mob/living/simple_animal/hostile/asteroid/hivelord/legion + name = "legion" + desc = "You can still see what was once a human under the shifting mass of corruption." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "legion" + icon_living = "legion" + icon_aggro = "legion" + icon_dead = "legion" + icon_gib = "syndicate_gib" + obj_damage = 60 + melee_damage_lower = 15 + melee_damage_upper = 15 + attacktext = "lashes out at" + speak_emote = list("echoes") + attack_sound = 'sound/weapons/pierce.ogg' + throw_message = "bounces harmlessly off of" + loot = list(/obj/item/organ/regenerative_core/legion) + brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion + del_on_death = 1 + stat_attack = UNCONSCIOUS + robust_searching = 1 + var/mob/living/carbon/human/stored_mob + +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/death(gibbed) + visible_message("The skulls on [src] wail in anger as they flee from their dying host!") + var/turf/T = get_turf(src) + if(T) + if(stored_mob) + stored_mob.forceMove(get_turf(src)) + stored_mob = null + else + new /obj/effect/mob_spawn/human/corpse/damaged(T) + ..(gibbed) + +//Legion skull +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion + name = "legion" + desc = "One of many." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "legion_head" + icon_living = "legion_head" + icon_aggro = "legion_head" + icon_dead = "legion_head" + icon_gib = "syndicate_gib" + friendly = "buzzes near" + vision_range = 10 + maxHealth = 1 + health = 5 + harm_intent_damage = 5 + melee_damage_lower = 12 + melee_damage_upper = 12 + attacktext = "bites" + speak_emote = list("echoes") + attack_sound = 'sound/weapons/pierce.ogg' + throw_message = "is shrugged off by" + pass_flags = PASSTABLE + del_on_death = TRUE + stat_attack = UNCONSCIOUS + robust_searching = 1 + var/can_infest_dead = FALSE + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/Life() + if(isturf(loc)) + for(var/mob/living/carbon/human/H in view(src,1)) //Only for corpse right next to/on same tile + if(H.stat == UNCONSCIOUS || (can_infest_dead && H.stat == DEAD)) + infest(H) + ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/proc/infest(mob/living/carbon/human/H) + visible_message("[name] burrows into the flesh of [H]!") + var/mob/living/simple_animal/hostile/asteroid/hivelord/legion/L = new(H.loc) + visible_message("[L] staggers to their feet!") + H.death() + H.adjustBruteLoss(1000) + L.stored_mob = H + H.forceMove(L) + qdel(src) + +//Advanced Legion is slightly tougher to kill and can raise corpses (revive other legions) +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/advanced + stat_attack = 2 + maxHealth = 120 + health = 120 + brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/advanced + icon_state = "dwarf_legion" + icon_living = "dwarf_legion" + icon_aggro = "dwarf_legion" + icon_dead = "dwarf_legion" + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/advanced + stat_attack = 2 + can_infest_dead = TRUE + +//Legion that spawns Legions +/mob/living/simple_animal/hostile/spawner/legion + name = "legion" + desc = "One of many." + icon = 'icons/mob/lavaland/dragon.dmi' + icon_state = "legion" + icon_living = "legion" + icon_dead = "legion" + health = 450 + maxHealth = 450 + max_mobs = 3 + spawn_time = 200 + spawn_text = "peels itself off from" + mob_type = /mob/living/simple_animal/hostile/asteroid/hivelord/legion + melee_damage_lower = 20 + melee_damage_upper = 20 + anchored = FALSE + AIStatus = AI_ON + stop_automated_movement = FALSE + wander = TRUE + maxbodytemp = INFINITY + layer = MOB_LAYER + del_on_death = TRUE + sentience_type = SENTIENCE_BOSS + loot = list(/obj/item/organ/regenerative_core/legion = 3, /obj/effect/mob_spawn/human/corpse/damaged = 5) + move_to_delay = 14 + vision_range = 5 + aggro_vision_range = 9 + idle_vision_range = 5 + speed = 3 + faction = list("mining") + weather_immunities = list("lava","ash") + obj_damage = 30 + environment_smash = ENVIRONMENT_SMASH_STRUCTURES + see_in_dark = 8 + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm new file mode 100644 index 0000000000..1e76860267 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm @@ -0,0 +1,59 @@ +//the base mining mob +/mob/living/simple_animal/hostile/asteroid + vision_range = 2 + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + faction = list("mining") + weather_immunities = list("lava","ash") + obj_damage = 30 + environment_smash = ENVIRONMENT_SMASH_WALLS + minbodytemp = 0 + maxbodytemp = INFINITY + response_help = "pokes" + response_disarm = "shoves" + response_harm = "strikes" + status_flags = 0 + a_intent = INTENT_HARM + var/throw_message = "bounces off of" + var/icon_aggro = null // for swapping to when we get aggressive + see_in_dark = 8 + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE + mob_size = MOB_SIZE_LARGE + +/mob/living/simple_animal/hostile/asteroid/Aggro() + ..() + if(vision_range != aggro_vision_range) + icon_state = icon_aggro + +/mob/living/simple_animal/hostile/asteroid/LoseAggro() + ..() + if(stat == DEAD) + return + icon_state = icon_living + +/mob/living/simple_animal/hostile/asteroid/bullet_act(obj/item/projectile/P)//Reduces damage from most projectiles to curb off-screen kills + if(!stat) + Aggro() + if(P.damage < 30 && P.damage_type != BRUTE) + P.damage = (P.damage / 3) + visible_message("[P] has a reduced effect on [src]!") + ..() + +/mob/living/simple_animal/hostile/asteroid/hitby(atom/movable/AM)//No floor tiling them to death, wiseguy + if(istype(AM, /obj/item)) + var/obj/item/T = AM + if(!stat) + Aggro() + if(T.throwforce <= 20) + visible_message("The [T.name] [src.throw_message] [src.name]!") + return + ..() + +/mob/living/simple_animal/hostile/asteroid/death(gibbed) + SSblackbox.add_details("mobs_killed_mining","[src.type]") + ..(gibbed) + +/mob/living/simple_animal/hostile/asteroid/handle_temperature_damage() + if(bodytemperature < minbodytemp) + adjustBruteLoss(2) + else if(bodytemperature > maxbodytemp) + adjustBruteLoss(20) 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 new file mode 100644 index 0000000000..1ef8dd9f13 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm @@ -0,0 +1,101 @@ +//Necropolis Tendrils, which spawn lavaland monsters and break into a chasm when killed +/obj/effect/light_emitter/tendril + set_luminosity = 4 + set_cap = 2.5 + light_color = LIGHT_COLOR_LAVA + +/mob/living/simple_animal/hostile/spawner/lavaland + name = "necropolis tendril" + desc = "A vile tendril of corruption, originating deep underground. Terrible monsters are pouring out of it." + icon = 'icons/mob/nest.dmi' + icon_state = "tendril" + icon_living = "tendril" + icon_dead = "tendril" + faction = list("mining") + weather_immunities = list("lava","ash") + health = 250 + maxHealth = 250 + max_mobs = 3 + spawn_time = 300 //30 seconds default + mob_type = /mob/living/simple_animal/hostile/asteroid/basilisk/watcher + spawn_text = "emerges from" + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + maxbodytemp = INFINITY + loot = list(/obj/effect/collapse, /obj/structure/closet/crate/necropolis/tendril) + del_on_death = 1 + var/gps = null + var/obj/effect/light_emitter/tendril/emitted_light + +/mob/living/simple_animal/hostile/spawner/lavaland/goliath + mob_type = /mob/living/simple_animal/hostile/asteroid/goliath/beast + +/mob/living/simple_animal/hostile/spawner/lavaland/legion + mob_type = /mob/living/simple_animal/hostile/asteroid/hivelord/legion + +/mob/living/simple_animal/hostile/spawner/lavaland/Initialize() + . = ..() + emitted_light = new(loc) + for(var/F in RANGE_TURFS(1, src)) + if(ismineralturf(F)) + var/turf/closed/mineral/M = F + M.ChangeTurf(M.turf_type,FALSE,TRUE) + gps = new /obj/item/device/gps/internal(src) + +/mob/living/simple_animal/hostile/spawner/lavaland/Destroy() + QDEL_NULL(emitted_light) + QDEL_NULL(gps) + . = ..() + +#define MEDAL_PREFIX "Tendril" +/mob/living/simple_animal/hostile/spawner/lavaland/death() + var/last_tendril = TRUE + for(var/mob/living/simple_animal/hostile/spawner/lavaland/other in GLOB.mob_list) + if(other != src) + last_tendril = FALSE + break + if(last_tendril && !admin_spawned) + if(global.medal_hub && global.medal_pass && global.medals_enabled) + for(var/mob/living/L in view(7,src)) + if(L.stat) + continue + if(L.client) + var/client/C = L.client + var/suffixm = ALL_KILL_MEDAL + var/prefix = MEDAL_PREFIX + UnlockMedal("[prefix] [suffixm]",C) + SetScore(TENDRIL_CLEAR_SCORE,C,1) + ..() +#undef MEDAL_PREFIX + +/obj/effect/collapse + name = "collapsing necropolis tendril" + desc = "Get clear!" + layer = BELOW_OBJ_LAYER + icon = 'icons/mob/nest.dmi' + icon_state = "tendril" + anchored = TRUE + density = TRUE + var/obj/effect/light_emitter/tendril/emitted_light + +/obj/effect/collapse/Initialize() + . = ..() + emitted_light = new(loc) + visible_message("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!") + visible_message("Something falls free of the tendril!") + playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, 1, 1) + addtimer(CALLBACK(src, .proc/collapse), 50) + +/obj/effect/collapse/Destroy() + QDEL_NULL(emitted_light) + return ..() + +/obj/effect/collapse/proc/collapse() + for(var/mob/M in range(7,src)) + shake_camera(M, 15, 1) + playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, 1) + visible_message("The tendril falls inward, the ground around it widening into a yawning chasm!") + for(var/turf/T in range(2,src)) + if(!T.density) + T.TerraformTurf(/turf/open/chasm/straight_down/lava_land_surface) + qdel(src) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm index 563c5a3d03..7dd53541dd 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm @@ -23,3 +23,51 @@ environment_smash = ENVIRONMENT_SMASH_NONE del_on_death = 0 +/mob/living/simple_animal/hostile/retaliate/nanotrasenpeace + name = "Nanotrasen Private Security Officer" + desc = "An officer part of Nanotrasen's private security force." + icon = 'icons/mob/simple_human.dmi' + icon_state = "nanotrasen" + icon_living = "nanotrasen" + icon_dead = null + icon_gib = "syndicate_gib" + turns_per_move = 5 + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" + speed = 0 + stat_attack = 1 + robust_searching = 1 + vision_range = 3 + maxHealth = 100 + health = 100 + harm_intent_damage = 5 + melee_damage_lower = 10 + melee_damage_upper = 15 + attacktext = "punches" + attack_sound = 'sound/weapons/punch1.ogg' + faction = list("nanotrasenprivate") + a_intent = INTENT_HARM + loot = list(/obj/effect/mob_spawn/human/corpse/nanotrasensoldier) + atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) + unsuitable_atmos_damage = 15 + status_flags = CANPUSH + search_objects = 1 + +/mob/living/simple_animal/hostile/retaliate/nanotrasenpeace/Aggro() + ..() + summon_backup(15) + say("411 in progress, requesting backup!") + +/mob/living/simple_animal/hostile/retaliate/nanotrasenpeace/ranged + icon_state = "nanotrasenrangedsmg" + icon_living = "nanotrasenrangedsmg" + vision_range = 9 + rapid = 1 + ranged = 1 + retreat_distance = 3 + minimum_distance = 5 + casingtype = /obj/item/ammo_casing/c46x30mm + projectilesound = 'sound/weapons/Gunshot_smg.ogg' + loot = list(/obj/item/weapon/gun/ballistic/automatic/wt550, + /obj/effect/mob_spawn/human/corpse/nanotrasensoldier) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm new file mode 100644 index 0000000000..d4aa40ed13 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm @@ -0,0 +1,127 @@ +//A fragile mob that becomes temporarily invincible and large to attack +/mob/living/simple_animal/hostile/asteroid/fugu + name = "wumborian fugu" + desc = "The wumborian fugu rapidly increases its body mass in order to ward off its prey. Great care should be taken to avoid it while it's in this state as it is nearly invincible, but it cannot maintain its form forever." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "Fugu" + icon_living = "Fugu" + icon_aggro = "Fugu" + icon_dead = "Fugu_dead" + icon_gib = "syndicate_gib" + mouse_opacity = 2 + move_to_delay = 5 + friendly = "floats near" + speak_emote = list("puffs") + vision_range = 5 + speed = 0 + maxHealth = 50 + health = 50 + harm_intent_damage = 5 + obj_damage = 0 + melee_damage_lower = 0 + melee_damage_upper = 0 + attacktext = "chomps" + attack_sound = 'sound/weapons/punch1.ogg' + throw_message = "is avoided by the" + aggro_vision_range = 9 + idle_vision_range = 5 + mob_size = MOB_SIZE_SMALL + environment_smash = ENVIRONMENT_SMASH_NONE + var/wumbo = 0 + var/inflate_cooldown = 0 + loot = list(/obj/item/asteroid/fugu_gland{layer = ABOVE_MOB_LAYER}) + +/mob/living/simple_animal/hostile/asteroid/fugu/Life() + if(!wumbo) + inflate_cooldown = max((inflate_cooldown - 1), 0) + if(target && AIStatus == AI_ON) + Inflate() + ..() + +/mob/living/simple_animal/hostile/asteroid/fugu/adjustHealth(amount, updating_health = TRUE, forced = FALSE) + if(!forced && wumbo) + return FALSE + . = ..() + +/mob/living/simple_animal/hostile/asteroid/fugu/Aggro() + ..() + Inflate() + +/mob/living/simple_animal/hostile/asteroid/fugu/verb/Inflate() + set name = "Inflate" + set category = "Fugu" + set desc = "Temporarily increases your size, and makes you significantly more dangerous and tough." + if(wumbo) + to_chat(src, "You're already inflated.") + return + if(inflate_cooldown) + to_chat(src, "We need time to gather our strength.") + return + if(buffed) + to_chat(src, "Something is interfering with our growth.") + return + wumbo = 1 + icon_state = "Fugu_big" + obj_damage = 60 + melee_damage_lower = 15 + melee_damage_upper = 20 + harm_intent_damage = 0 + throw_message = "is absorbed by the girth of the" + retreat_distance = null + minimum_distance = 1 + move_to_delay = 6 + transform *= 2 + environment_smash = ENVIRONMENT_SMASH_WALLS + mob_size = MOB_SIZE_LARGE + speed = 1 + addtimer(CALLBACK(src, .proc/Deflate), 100) + +/mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate() + if(wumbo) + walk(src, 0) + wumbo = 0 + icon_state = "Fugu" + obj_damage = 0 + melee_damage_lower = 0 + melee_damage_upper = 0 + harm_intent_damage = 5 + throw_message = "is avoided by the" + retreat_distance = 9 + minimum_distance = 9 + move_to_delay = 2 + transform /= 2 + inflate_cooldown = 4 + environment_smash = ENVIRONMENT_SMASH_NONE + mob_size = MOB_SIZE_SMALL + speed = 0 + +/mob/living/simple_animal/hostile/asteroid/fugu/death(gibbed) + Deflate() + ..(gibbed) + +/obj/item/asteroid/fugu_gland + name = "wumborian fugu gland" + 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 = NOBLUDGEON + w_class = WEIGHT_CLASS_NORMAL + layer = MOB_LAYER + origin_tech = "biotech=6" + var/list/banned_mobs() + +/obj/item/asteroid/fugu_gland/afterattack(atom/target, mob/user, proximity_flag) + if(proximity_flag && istype(target, /mob/living/simple_animal)) + var/mob/living/simple_animal/A = target + if(A.buffed || (A.type in banned_mobs) || A.stat) + to_chat(user, "Something's interfering with the [src]'s effects. It's no use.") + return + A.buffed++ + A.maxHealth *= 1.5 + A.health = min(A.maxHealth,A.health*1.5) + A.melee_damage_lower = max((A.melee_damage_lower * 2), 10) + A.melee_damage_upper = max((A.melee_damage_upper * 2), 10) + A.transform *= 2 + A.environment_smash += 2 + to_chat(user, "You increase the size of [A], giving it a surge of strength!") + qdel(src) diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index eaee4a6b62..e60f4f1b79 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -309,11 +309,11 @@ if(Target) --target_patience - if (target_patience <= 0 || SStun || Discipline || attacked || docile) // Tired of chasing or something draws out attention + if (target_patience <= 0 || SStun > world.time || Discipline || attacked || docile) // Tired of chasing or something draws out attention target_patience = 0 Target = null - if(AIproc && SStun) + if(AIproc && SStun > world.time) return var/hungry = 0 // determines if the slime is hungry diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 6eb688d38f..6c12b6d984 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -394,11 +394,7 @@ if(buckled) Feedstop(silent=1) //we unbuckle the slime from the mob it latched onto. - spawn(0) - SStun = 1 - sleep(rand(20,60)) - SStun = 0 - + SStun = world.time + rand(20,60) spawn(0) canmove = 0 if(user) diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 90a331f03c..e35b79de44 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -39,4 +39,9 @@ if(client) client.click_intercept = null - client.view = world.view // Resets the client.view in case it was changed. \ No newline at end of file + client.view = world.view // Resets the client.view in case it was changed. + + if(!GLOB.individual_log_list[ckey]) + GLOB.individual_log_list[ckey] = logging + else + logging = GLOB.individual_log_list[ckey] diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 65e83d3c5d..5c73fc3e9b 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -473,7 +473,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp ClickOn(T) /mob/proc/log_message(message, message_type) - if(!LAZYLEN(message) || !message_type) + if(!LAZYLEN(message) || !message_type) return if(!islist(logging[message_type])) diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index a0879f13ce..fb77197c62 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -19,7 +19,7 @@ var/list/region_access = null var/list/head_subordinates = null var/target_dept = 0 //Which department this computer has access to. 0=all departments - var/change_position_cooldown = 60 + var/change_position_cooldown = 30 //Jobs you cannot open new positions for var/list/blacklisted = list( "AI", @@ -39,6 +39,10 @@ //Assoc array: "JobName" = (int) var/list/opened_positions = list(); +/datum/computer_file/program/card_mod/New() + ..() + change_position_cooldown = config.id_console_jobslot_delay + /datum/computer_file/program/card_mod/event_idremoved(background, slot) if(!slot || slot == 2)// slot being false means both are removed diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index c084befd92..7eaa0a7e26 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -276,7 +276,7 @@ if(!user.dna) return -1 user.dna.add_mutation(HULK) - var/obj/item/organ/hivelord_core/organ = new /obj/item/organ/hivelord_core + var/obj/item/organ/regenerative_core/organ = new /obj/item/organ/regenerative_core organ.Insert(user) return ..() diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 976e48707b..f985099219 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -304,7 +304,6 @@ else info += t // Oh, he wants to edit to the end of the file, let him. updateinfolinks() - i.on_write(src,usr) usr << browse("[name][info_links]
[stamps]", "window=[name]") // Update the window update_icon() diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index b6f8ee8f74..276b4d8109 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -197,12 +197,3 @@ else icon_state = initial(icon_state) //looks like a normal pen when off. item_state = initial(item_state) - -//Crayons path disambiguity sigh. -/obj/item/proc/on_write(obj/item/weapon/paper/P, mob/user) - return - -/obj/item/weapon/pen/poison/on_write(obj/item/weapon/paper/P, mob/user) - P.contact_poison = "delayed_toxin" - P.contact_poison_volume = 10 - add_logs(user,P,"used poison pen on") diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index e526d6ba6d..d980591ceb 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -96,8 +96,6 @@ /obj/machinery/power/apc/connect_to_network() //Override because the APC does not directly connect to the network; it goes through a terminal. //The terminal is what the power computer looks for anyway. - if(!terminal) - make_terminal() if(terminal) terminal.connect_to_network() @@ -238,6 +236,8 @@ icon_state = "apcemag" else if(update_state & UPSTATE_WIREEXP) icon_state = "apcewires" + else if(update_state & UPSTATE_MAINT) + icon_state = "apc0" if(!(update_state & UPSTATE_ALLGOOD)) cut_overlays() @@ -445,6 +445,8 @@ update_icon() else if(emagged) to_chat(user, "The interface is broken!") + else if((stat & MAINT) && !opened) + ..() //its an empty closed frame... theres no wires to expose! else panel_open = !panel_open to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"]") @@ -631,6 +633,8 @@ charging = 0 src.update_icon() return + if((stat & MAINT) && !opened) //no board; no interface + return ..() /obj/machinery/power/apc/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 408529e297..34bf7b7f2f 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -509,6 +509,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined", "flogged") singular_name = "cable piece" + full_w_class = WEIGHT_CLASS_SMALL /obj/item/stack/cable_coil/cyborg is_cyborg = 1 diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index dea263231a..3e35e3a42d 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -23,7 +23,8 @@ #define SEVERE_POWER_PENALTY_THRESHOLD 7000 //Same as above, but causes more dangerous effects #define CRITICAL_POWER_PENALTY_THRESHOLD 9000 //Even more dangerous effects, threshold for tesla delamination #define HEAT_PENALTY_THRESHOLD 40 //Higher == Crystal safe operational temperature is higher. -#define DAMAGE_HARDCAP 0.01 +#define DAMAGE_HARDCAP 0.0025 +#define DAMAGE_INCREASE_MULTIPLIER 0.25 #define THERMAL_RELEASE_MODIFIER 5 //Higher == less heat released during reaction, not to be confused with the above values @@ -214,9 +215,9 @@ damage_archived = damage if(takes_damage) //causing damage - damage = max(damage + (max(removed.temperature - ((T0C + HEAT_PENALTY_THRESHOLD)*dynamic_heat_resistance), 0) * mole_heat_penalty / 150 ), 0) - damage = max(damage + (max(power - POWER_PENALTY_THRESHOLD, 0)/500), 0) - damage = max(damage + (max(combined_gas - MOLE_PENALTY_THRESHOLD, 0)/80), 0) + damage = max(damage + (max(removed.temperature - ((T0C + HEAT_PENALTY_THRESHOLD)*dynamic_heat_resistance), 0) * mole_heat_penalty / 150 ) * DAMAGE_INCREASE_MULTIPLIER, 0) + damage = max(damage + (max(power - POWER_PENALTY_THRESHOLD, 0)/500) * DAMAGE_INCREASE_MULTIPLIER, 0) + damage = max(damage + (max(combined_gas - MOLE_PENALTY_THRESHOLD, 0)/80) * DAMAGE_INCREASE_MULTIPLIER, 0) //healing damage if(combined_gas < MOLE_PENALTY_THRESHOLD) diff --git a/code/modules/procedural_mapping/mapGenerators/lavaland.dm b/code/modules/procedural_mapping/mapGenerators/lavaland.dm new file mode 100644 index 0000000000..9c160ee848 --- /dev/null +++ b/code/modules/procedural_mapping/mapGenerators/lavaland.dm @@ -0,0 +1,30 @@ + +/datum/mapGeneratorModule/bottomLayer/lavaland_default + spawnableTurfs = list(/turf/open/floor/plating/asteroid/basalt/lava_land_surface = 100) + +/datum/mapGeneratorModule/bottomLayer/lavaland_mineral + spawnableTurfs = list(/turf/closed/mineral/random/volcanic = 100) + +/datum/mapGeneratorModule/bottomLayer/lavaland_mineral/dense + spawnableTurfs = list(/turf/closed/mineral/random/high_chance/volcanic = 100) + +/datum/mapGeneratorModule/splatterLayer/lavalandMonsters + spawnableTurfs = list() + spawnableAtoms = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast = 10, + /mob/living/simple_animal/hostile/asteroid/hivelord/legion = 10, + /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 10) + +/datum/mapGeneratorModule/splatterLayer/lavalandTendrils + spawnableTurfs = list() + spawnableAtoms = list(/mob/living/simple_animal/hostile/spawner/lavaland = 5, + /mob/living/simple_animal/hostile/spawner/lavaland/legion = 5, + /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 5) + +/datum/mapGenerator/lavaland/ground_only + modules = list(/datum/mapGeneratorModule/bottomLayer/lavaland_default) + +/datum/mapGenerator/lavaland/dense_ores + modules = list(/datum/mapGeneratorModule/bottomLayer/lavaland_mineral/dense) + +/datum/mapGenerator/lavaland/normal_ores + modules = list(/datum/mapGeneratorModule/bottomLayer/lavaland_mineral) diff --git a/code/modules/procedural_mapping/mapGenerators/repair.dm b/code/modules/procedural_mapping/mapGenerators/repair.dm new file mode 100644 index 0000000000..e2f658648c --- /dev/null +++ b/code/modules/procedural_mapping/mapGenerators/repair.dm @@ -0,0 +1,29 @@ +/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel + spawnableTurfs = list(/turf/open/floor/plasteel = 100) + var/ignore_wall = FALSE + +/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/place(turf/T) + if(isclosedturf(T)) + return FALSE + return TRUE + +/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/flatten + ignore_wall = TRUE + +/datum/mapGeneratorModule/border/normalWalls + spawnableAtoms = list() + spawnableTurfs = list(/turf/closed/wall = 100) + +/datum/mapGenerator/repair + modules = list(/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel, + /datum/mapGeneratorModule/bottomLayer/repressurize) + +/datum/mapGenerator/repair/delete_walls + modules = list(/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/flatten, + /datum/mapGeneratorModule/bottomLayer/repressurize) + +/datum/mapGenerator/repair/enclose_room + modules = list(/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/flatten, + /datum/mapGeneratorModule/border/normalWalls, + /datum/mapGeneratorModule/bottomLayer/repressurize) + diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 65b9ef926f..d91859f198 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -117,7 +117,7 @@ desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell." caliber = ".50" projectile_type = /obj/item/projectile/bullet/sniper/soporific - icon_state = ".50" + icon_state = "sleeper" /obj/item/ammo_casing/haemorrhage desc = "A .50 bullet casing, specialised in causing massive bloodloss" @@ -131,7 +131,14 @@ projectile_type = /obj/item/projectile/bullet/sniper/penetrator icon_state = ".50" +/obj/item/ammo_casing/point50/gang + desc = "A black market .50 bullet casing." + projectile_type = /obj/item/projectile/bullet/sniper/gang +/obj/item/ammo_casing/point50/gang/sleeper + desc = "Am illegally modified tranquilizer round." + projectile_type = /obj/item/projectile/bullet/sniper/gang/sleeper + icon_state = "sleeper" /// SAW ROUNDS diff --git a/code/modules/projectiles/boxes_magazines/external_mag.dm b/code/modules/projectiles/boxes_magazines/external_mag.dm index c2a7129b4e..6c798efe3e 100644 --- a/code/modules/projectiles/boxes_magazines/external_mag.dm +++ b/code/modules/projectiles/boxes_magazines/external_mag.dm @@ -264,6 +264,17 @@ origin_tech = "combat=6;syndicate=3" max_ammo = 5 +/obj/item/ammo_box/magazine/sniper_rounds/gang + name = "black market sniper rounds (.50)" + icon_state = ".50mag" + origin_tech = "combat=6" + ammo_type = /obj/item/ammo_casing/point50/gang + +/obj/item/ammo_box/magazine/sniper_rounds/gang/sleeper + name = "illegally modified tranquilizer round" + icon_state = "soporific" + origin_tech = "combat=6" + ammo_type = /obj/item/ammo_casing/point50/gang/sleeper //// SAW MAGAZINES @@ -371,4 +382,4 @@ icon_state = "oldrifle-[round(ammo_count(),4)]" /obj/item/ammo_box/magazine/recharge/attack_self() //No popping out the "bullets" - return \ No newline at end of file + return diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 70d399b107..90d30e6b88 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -244,6 +244,7 @@ icon_state = "bulldog" item_state = "bulldog" w_class = WEIGHT_CLASS_NORMAL + weapon_weight = WEAPON_MEDIUM origin_tech = "combat=6;materials=4;syndicate=6" mag_type = /obj/item/ammo_box/magazine/m12g fire_sound = 'sound/weapons/Gunshot.ogg' @@ -261,8 +262,8 @@ update_icon() /obj/item/weapon/gun/ballistic/automatic/shotgun/bulldog/update_icon() + cut_overlays() if(magazine) - cut_overlays() add_overlay("[magazine.icon_state]") icon_state = "bulldog[chambered ? "" : "-e"]" @@ -379,6 +380,11 @@ pin = /obj/item/device/firing_pin/implant/pindicate origin_tech = "combat=7;syndicate=6" +/obj/item/weapon/gun/ballistic/automatic/sniper_rifle/gang + name = "black market sniper rifle" + desc = "A long ranged weapon that does significant damage. It is well worn from years of service." + mag_type = /obj/item/ammo_box/magazine/sniper_rounds/gang + // Old Semi-Auto Rifle // /obj/item/weapon/gun/ballistic/automatic/surplus diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 2ce432bf31..d24e28b9e8 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -263,6 +263,7 @@ icon_state = "dshotgun" item_state = "shotgun" w_class = WEIGHT_CLASS_BULKY + weapon_weight = WEAPON_MEDIUM force = 10 flags = CONDUCT slot_flags = SLOT_BACK diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 1799a33cbb..77328bb422 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -24,6 +24,7 @@ var/list/modkits = list() var/empty_state = "kineticgun_empty" + var/recharge_timerid /obj/item/weapon/gun/energy/kinetic_accelerator/examine(mob/user) ..() @@ -61,10 +62,10 @@ . += A /obj/item/weapon/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/item/projectile/kinetic/K) + K.kinetic_gun = src //do something special on-hit, easy! for(var/A in get_modkits()) var/obj/item/borg/upgrade/modkit/M = A M.modify_projectile(K) - K.kinetic_modules += M //do something special on-hit, easy! /obj/item/weapon/gun/energy/kinetic_accelerator/cyborg holds_charge = TRUE @@ -100,15 +101,16 @@ power_supply.use(500) update_icon() -/obj/item/weapon/gun/energy/kinetic_accelerator/proc/attempt_reload() +/obj/item/weapon/gun/energy/kinetic_accelerator/proc/attempt_reload(recharge_time) if(overheat) return + if(!recharge_time) + recharge_time = overheat_time overheat = TRUE var/carried = 0 if(!unique_frequency) - for(var/obj/item/weapon/gun/energy/kinetic_accelerator/K in \ - loc.GetAllContents()) + for(var/obj/item/weapon/gun/energy/kinetic_accelerator/K in loc.GetAllContents()) carried++ @@ -116,7 +118,8 @@ else carried = 1 - addtimer(CALLBACK(src, .proc/reload), overheat_time * carried) + deltimer(recharge_timerid) + recharge_timerid = addtimer(CALLBACK(src, .proc/reload), recharge_time * carried, TIMER_STOPPABLE) /obj/item/weapon/gun/energy/kinetic_accelerator/emp_act(severity) return @@ -161,10 +164,10 @@ log_override = TRUE var/pressure_decrease = 0.25 - var/list/kinetic_modules = list() + var/obj/item/weapon/gun/energy/kinetic_accelerator/kinetic_gun /obj/item/projectile/kinetic/Destroy() - QDEL_NULL(kinetic_modules) + kinetic_gun = null return ..() /obj/item/projectile/kinetic/prehit(atom/target) @@ -190,15 +193,14 @@ var/turf/target_turf = get_turf(target) if(!target_turf) target_turf = get_turf(src) + if(kinetic_gun) //hopefully whoever shot this was not very, very unfortunate. + for(var/obj/item/borg/upgrade/modkit/M in kinetic_gun.get_modkits()) + M.projectile_strike(src, target_turf, target, kinetic_gun) if(ismineralturf(target_turf)) var/turf/closed/mineral/M = target_turf M.gets_drilled(firer) var/obj/effect/temp_visual/kinetic_blast/K = new /obj/effect/temp_visual/kinetic_blast(target_turf) K.color = color - for(var/obj/item/borg/upgrade/modkit/M in kinetic_modules) - if(QDELETED(M)) //whoever shot this was very, very unfortunate. - continue - M.projectile_strike(src, target_turf, target) //Modkits @@ -262,7 +264,7 @@ /obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K) -/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target) +/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA) //Range /obj/item/borg/upgrade/modkit/range @@ -311,7 +313,7 @@ . = ..() if(.) for(var/obj/item/borg/upgrade/modkit/aoe/AOE in KA.modkits) //make sure only one of the aoe modules has values if somebody has multiple - if(AOE.stats_stolen) + if(AOE.stats_stolen || AOE == src) continue modifier += AOE.modifier //take its modifiers AOE.modifier = 0 @@ -350,7 +352,7 @@ /obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/item/projectile/kinetic/K) K.name = "kinetic explosion" -/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target) +/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA) if(stats_stolen) return new /obj/effect/temp_visual/explosion/fast(target_turf) @@ -382,6 +384,58 @@ desc = "Causes the kinetic accelerator to damage mobs in an AoE." modifier = 0.2 +//Tendril-unique modules +/obj/item/borg/upgrade/modkit/cooldown/repeater + name = "rapid repeater" + desc = "Quarters the kinetic accelerator's cooldown on striking a living target, but greatly increases the base cooldown." + denied_type = /obj/item/borg/upgrade/modkit/cooldown/repeater + modifier = -14 //Makes the cooldown 3 seconds(with no cooldown mods) if you miss. Don't miss. + cost = 50 + +/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA) + var/valid_repeat = FALSE + if(isliving(target)) + var/mob/living/L = target + if(L.stat != DEAD) + valid_repeat = TRUE + if(ismineralturf(target_turf)) + valid_repeat = TRUE + if(valid_repeat) + KA.overheat = FALSE + KA.attempt_reload(KA.overheat_time * 0.25) //If you hit, the cooldown drops to 0.75 seconds. + +/obj/item/borg/upgrade/modkit/lifesteal + name = "lifesteal crystal" + desc = "Causes kinetic accelerator shots to slightly heal the firer on striking a living target." + icon_state = "modkit_crystal" + denied_type = /obj/item/borg/upgrade/modkit/lifesteal + modifier = 2.5 //Not a very effective method of healing. + cost = 20 + var/static/list/damage_heal_order = list(BRUTE, BURN, OXY) + +/obj/item/borg/upgrade/modkit/lifesteal/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA) + if(isliving(target) && isliving(K.firer)) + var/mob/living/L = target + if(L.stat == DEAD) + return + L = K.firer + L.heal_ordered_damage(modifier, damage_heal_order) + +/obj/item/borg/upgrade/modkit/resonator_blasts + name = "resonator blast" + desc = "Causes kinetic accelerator shots to leave and detonate resonator blasts." + denied_type = /obj/item/borg/upgrade/modkit/resonator_blasts + cost = 30 + modifier = 0.25 //A bonus 15 damage if you burst the field on a target, 60 if you lure them into it. + +/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA) + if(target_turf && !ismineralturf(target_turf)) //Don't make fields on mineral turfs. + var/obj/effect/temp_visual/resonance/R = locate(/obj/effect/temp_visual/resonance) in target_turf + if(R) + R.damage_multiplier = modifier + R.burst() + return + new /obj/effect/temp_visual/resonance(target_turf, K.firer, null, 30) //Indoors /obj/item/borg/upgrade/modkit/indoors diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 5ffebf33b3..ae2377b8e3 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -279,7 +279,30 @@ target.ex_act(rand(1,2)) return ..() +/obj/item/projectile/bullet/sniper/gang + damage = 55 + stun = 1 + weaken = 1 + dismemberment = 15 + armour_penetration = 25 +/obj/item/projectile/bullet/sniper/gang/sleeper + nodamage = 1 + stun = 0 + weaken = 0 + dismemberment = 0 + breakthings = FALSE + +/obj/item/projectile/bullet/sniper/gang/sleeper/on_hit(atom/target, blocked = 0) + if((blocked != 100) && isliving(target)) + var/mob/living/L = target + L.blur_eyes(8) + if(L.staminaloss >= 40) + L.Sleeping(20) + else + L.adjustStaminaLoss(55) + return 1 + /obj/item/projectile/bullet/sniper/soporific armour_penetration = 0 nodamage = 1 diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 99056eb1dc..428d1fc114 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -184,7 +184,7 @@ beaker.loc = src to_chat(user, "You add \the [B] to the machine.") - beaker_overlay = beaker_overlay || mutable_appearance(icon, "disp_beaker") + beaker_overlay = beaker_overlay || mutable_appearance(icon, "disp_beaker") beaker_overlay.pixel_x = rand(-10, 5)//randomize beaker overlay position. add_overlay(beaker_overlay) else if(user.a_intent != INTENT_HARM && !istype(I, /obj/item/weapon/card/emag)) @@ -370,6 +370,19 @@ /obj/machinery/chem_dispenser/mutagensaltpeter - name = "mutagen and saltpeter dispenser" - desc = "Creates and dispenses mutagen and even saltpeter." - dispensable_reagents = list("mutagen", "saltpetre") + name = "botanical chemical dispenser" + desc = "Creates and dispenses chemicals useful for botany." + dispensable_reagents = list( + "mutagen", + "saltpetre", + "eznutriment", + "left4zednutriment", + "robustharvestnutriment", + "water", + "plantbgone", + "weedkiller", + "pestkiller", + "cryoxadone", + "ammonia", + "ash", + "diethylamine") diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 0bc843a605..3ba5519a9c 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -121,8 +121,8 @@ /datum/chemical_reaction/nitrous_oxide name = "Nitrous Oxide" id = "nitrous_oxide" - results = list("nitrous_oxide" = 2, "water" = 4) - required_reagents = list("ammonia" = 3, "nitrogen" = 1, "oxygen" = 2) + results = list("nitrous_oxide" = 5) + required_reagents = list("ammonia" = 2, "nitrogen" = 1, "oxygen" = 2) required_temp = 525 ////////////////////////////////// Mutation Toxins /////////////////////////////////// diff --git a/code/modules/server_tools/nudge.py b/code/modules/server_tools/nudge.py new file mode 100644 index 0000000000..3d94ccdad7 --- /dev/null +++ b/code/modules/server_tools/nudge.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +import sys +import pickle +import socket + + +def pack(): + data = sys.argv[1] + + nudge(str.encode(data)) + + +def nudge(data): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + with open('config/server_to_tool_bridge_port.txt', 'r') as myfile: + portstr=myfile.read().replace('\n', '').strip() + s.connect(("localhost", int(portstr))) + s.send(data) + s.close() + +if __name__ == "__main__" and len(sys.argv) > 1: + pack() diff --git a/code/modules/server_tools/server_tools.dm b/code/modules/server_tools/server_tools.dm new file mode 100644 index 0000000000..0594ee810f --- /dev/null +++ b/code/modules/server_tools/server_tools.dm @@ -0,0 +1,79 @@ +GLOBAL_VAR_INIT(reboot_mode, REBOOT_MODE_NORMAL) //if the world should request the service to kill it at reboot +GLOBAL_PROTECT(reboot_mode) + +/world/proc/RunningService() + return params[SERVICE_WORLD_PARAM] + +/world/proc/ExportService(command) + return shell("python code/modules/server_tools/nudge.py \"[command]\"") == 0 + +/world/proc/IRCBroadcast(msg) + ExportService("[SERVICE_REQUEST_IRC_BROADCAST] [msg]") + +//called at the exact moment the world is supposed to reboot +/world/proc/ServiceReboot() + switch(GLOB.reboot_mode) + if(REBOOT_MODE_HARD) + to_chat(src, "Hard reboot triggered, you will automatically reconnect...") + log_world("Sending shutdown request!"); + sleep(1) //flush the buffers + ExportService(SERVICE_REQUEST_KILL_PROCESS) + if(REBOOT_MODE_SHUTDOWN) + to_chat(src, "The server is shutting down...") + log_world("Deleting world") + qdel(src) + +/world/proc/ServiceCommand(list/params) + var/sCK = RunningService() + var/their_sCK = params[SERVICE_CMD_PARAM_KEY] + + if(!their_sCK || their_sCK != sCK) + return "Invalid comms key!"; + + var/command = params[SERVICE_CMD_PARAM_COMMAND] + if(!command) + return "No command!" + + var/static/last_irc_status = 0 + switch(command) + if(SERVICE_CMD_HARD_REBOOT) + if(GLOB.reboot_mode != REBOOT_MODE_HARD) + GLOB.reboot_mode = REBOOT_MODE_HARD + log_world("Hard reboot requested by service") + message_admins("The world will hard reboot at the end of the game. Requested by service.") + SSblackbox.set_val("service_hard_restart", TRUE) + if(SERVICE_CMD_GRACEFUL_SHUTDOWN) + if(GLOB.reboot_mode != REBOOT_MODE_SHUTDOWN) + GLOB.reboot_mode = REBOOT_MODE_SHUTDOWN + log_world("Shutdown requested by service") + message_admins("The world will shutdown at the end of the game. Requested by service.") + SSblackbox.set_val("service_shutdown", TRUE) + if(SERVICE_CMD_WORLD_ANNOUNCE) + var/msg = params["message"] + if(!istext(msg) || !msg) + return "No message set!" + to_chat(src, "[html_encode(msg)]") + return "SUCCESS" + if(SERVICE_CMD_IRC_STATUS) + var/rtod = REALTIMEOFDAY + if(rtod - last_irc_status < IRC_STATUS_THROTTLE) + return + last_irc_status = rtod + var/list/adm = get_admin_counts() + var/list/allmins = adm["total"] + var/status = "Admins: [allmins.len] (Active: [english_list(adm["present"])] AFK: [english_list(adm["afk"])] Stealth: [english_list(adm["stealth"])] Skipped: [english_list(adm["noflags"])]). " + status += "Players: [GLOB.clients.len] (Active: [get_active_player_count(0,1,0)]). Mode: [SSticker.mode ? SSticker.mode.name : "Not started"]." + return status + + if(SERVICE_CMD_ADMIN_MSG) + return IrcPm(params[SERVICE_CMD_PARAM_TARGET], params[SERVICE_CMD_PARAM_MESSAGE], params[SERVICE_CMD_PARAM_SENDER]) + + if(SERVICE_CMD_NAME_CHECK) + log_admin("IRC Name Check: [params[SERVICE_CMD_PARAM_SENDER]] on [params[SERVICE_CMD_PARAM_TARGET]]") + message_admins("IRC name checking on [params[SERVICE_CMD_PARAM_TARGET]] from [params[SERVICE_CMD_PARAM_SENDER]]") + return keywords_lookup(params[SERVICE_CMD_PARAM_TARGET], 1) + if(SERVICE_CMD_ADMIN_WHO) + return ircadminwho() + else + return "Unknown command: [command]" + diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index 7cb347d429..d6aed6d5b0 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -48,16 +48,16 @@ console = locate(/obj/machinery/requests_console) in A areas += A - if(GLOB.latejoin.len) + if(SSjob.latejoin_trackers.len) WARNING("Map contains predefined latejoin spawn points and an arrivals shuttle. Using the arrivals shuttle.") if(!new_latejoin.len) WARNING("Arrivals shuttle contains no chairs for spawn points. Reverting to latejoin landmarks.") - if(!GLOB.latejoin.len) + if(!SSjob.latejoin_trackers.len) WARNING("No latejoin landmarks exist. Players will spawn unbuckled on the shuttle.") return - GLOB.latejoin = new_latejoin + SSjob.latejoin_trackers = new_latejoin /obj/docking_port/mobile/arrivals/dockRoundstart() SSshuttle.generate_transit_dock(src) @@ -114,7 +114,7 @@ Launch(FALSE) /obj/docking_port/mobile/arrivals/proc/CheckTurfsPressure() - for(var/I in GLOB.latejoin) + for(var/I in SSjob.latejoin_trackers) var/turf/open/T = get_turf(I) var/pressure = T.air.return_pressure() if(pressure < HAZARD_LOW_PRESSURE || pressure > HAZARD_HIGH_PRESSURE) //simple safety check diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 5f808035fd..52919c996d 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -326,7 +326,7 @@ var/datum/effect_system/smoke_spread/s = new s.set_up(4,get_turf(centerpiece)) s.start() - var/obj/machinery/bsa/full/cannon = new(get_turf(centerpiece),cannon_direction=centerpiece.get_cannon_direction()) + var/obj/machinery/bsa/full/cannon = new(get_turf(centerpiece),centerpiece.get_cannon_direction()) qdel(centerpiece.front) qdel(centerpiece.back) qdel(centerpiece) diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index b4154c8e9c..a166be04a4 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -292,7 +292,7 @@ cooldown = COOLDOWN_MEME for(var/V in listeners) var/mob/living/L = V - new /obj/effect/hallucination/delusion(get_turf(L),L,duration=150 * power_multiplier,skip_nearby=0) + new /obj/effect/hallucination/delusion(get_turf(L),L,null,150 * power_multiplier,0) //WAKE UP else if((findtext(message, wakeup_words))) diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm index 4be7b84a6c..af1d6e4743 100644 --- a/code/modules/surgery/prosthetic_replacement.dm +++ b/code/modules/surgery/prosthetic_replacement.dm @@ -82,7 +82,7 @@ target_zone == "r_arm" ? target.put_in_r_hand(new_arm) : target.put_in_l_hand(new_arm) return 1 else if(istype(tool, /obj/item/weapon/melee/synthetic_arm_blade)) - var/obj/item/weapon/melee/arm_blade/new_arm = new(target, silent = TRUE, synthetic = TRUE) + var/obj/item/weapon/melee/arm_blade/new_arm = new(target,TRUE,TRUE) target_zone == "r_arm" ? target.put_in_r_hand(new_arm) : target.put_in_l_hand(new_arm) return 1 diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index f603612bbf..21c07750de 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -203,7 +203,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/dangerous/shotgun name = "Bulldog Shotgun" desc = "A fully-loaded semi-automatic drum-fed shotgun. Compatiable with all 12g rounds. Designed for close \ - quarter anti-personel engagements." + quarter anti-personnel engagements." item = /obj/item/weapon/gun/ballistic/automatic/shotgun/bulldog cost = 8 surplus = 40 @@ -297,7 +297,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/dangerous/powerfist name = "Power Fist" desc = "The power-fist is a metal gauntlet with a built-in piston-ram powered by an external gas supply.\ - Upon hitting a target, the piston-ram will extend foward to make contact for some serious damage. \ + Upon hitting a target, the piston-ram will extend forward to make contact for some serious damage. \ Using a wrench on the piston valve will allow you to tweak the amount of gas used per punch to \ deal extra damage and hit targets further. Use a screwdriver to take out any attached tanks." item = /obj/item/weapon/melee/powerfist @@ -649,13 +649,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. cost = 4 exclude_modes = list(/datum/game_mode/nuclear,/datum/game_mode/gang) -/datum/uplink_item/stealthy_weapons/poison_pen - name = "Poison Pen" - desc = "Cutting edge of deadly writing implements technology, this gadget will infuse any piece of paper with delayed contact poison." - item = /obj/item/weapon/pen/poison - cost = 2 - exclude_modes = list(/datum/game_mode/nuclear) - /datum/uplink_item/stealthy_weapons/soap name = "Syndicate Soap" desc = "A sinister-looking surfactant used to clean blood stains to hide murders and prevent DNA analysis. \ @@ -905,7 +898,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/device_tools/military_belt name = "Chest Rig" - desc = "A robust seven-slot set of webbing that is capable of holding all manner of tatical equipment." + desc = "A robust seven-slot set of webbing that is capable of holding all manner of tactical equipment." item = /obj/item/weapon/storage/belt/military cost = 1 exclude_modes = list(/datum/game_mode/nuclear) @@ -1021,7 +1014,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/device_tools/powersink name = "Power Sink" desc = "When screwed to wiring attached to a power grid and activated, this large device places excessive \ - load on the grid, causing a stationwide blackout. The sink is large and cannot be stored in most \ + load on the grid, causing a station-wide blackout. The sink is large and cannot be stored in most \ traditional bags and boxes." item = /obj/item/device/powersink cost = 6 @@ -1059,7 +1052,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/device_tools/rad_laser name = "Radioactive Microlaser" desc = "A radioactive microlaser disguised as a standard Nanotrasen health analyzer. When used, it emits a \ - powerful burst of radiation, which, after a short delay, can incapitate all but the most protected \ + powerful burst of radiation, which, after a short delay, can incapacitate all but the most protected \ of humanoids. It has two settings: intensity, which controls the power of the radiation, \ and wavelength, which controls how long the radiation delay is." item = /obj/item/device/healthanalyzer/rad_laser @@ -1241,7 +1234,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/role_restricted/mimery name = "Guide to Advanced Mimery Series" - desc = "The classical two part series on how to further hone your mime skills. Upon studying the series, the user should be able to make 3x1 invisble walls, and shoot bullets out of their fingers. Obviously only works for Mimes." + desc = "The classical two part series on how to further hone your mime skills. Upon studying the series, the user should be able to make 3x1 invisible walls, and shoot bullets out of their fingers. Obviously only works for Mimes." cost = 12 item = /obj/item/weapon/storage/box/syndie_kit/mimery restricted_roles = list("Mime") @@ -1353,7 +1346,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/badass/surplus name = "Syndicate Surplus Crate" - desc = "A dusty crate from the back of the Syndicate warehouse. Rumored to contain a valuable assortion of items, \ + desc = "A dusty crate from the back of the Syndicate warehouse. Rumored to contain a valuable assortment of items, \ but you never know. Contents are sorted to always be worth 50 TC." item = /obj/structure/closet/crate cost = 20 diff --git a/code/world.dm b/code/world.dm index 43401b0c42..b7beb52d4d 100644 --- a/code/world.dm +++ b/code/world.dm @@ -28,7 +28,8 @@ SetupLogs() - GLOB.revdata.DownloadPRDetails() + if(!RunningService()) //tgs2 support + GLOB.revdata.DownloadPRDetails() load_motd() load_admins() @@ -42,6 +43,9 @@ Master.Initialize(10, FALSE) + if(config.irc_announce_new_game) + IRCBroadcast("New round starting on [SSmapping.config.map_name]!") + /world/proc/SetupExternalRSC() #if (PRELOAD_RSC == 0) external_rsc_urls = world.file2list("config/external_rsc_urls.txt","\n") @@ -56,9 +60,8 @@ /world/proc/SetRoundID() if(config.sql_enabled) if(SSdbcore.Connect()) - log_world("Database connection established.") - var/datum/DBQuery/query_round_start = SSdbcore.NewQuery("INSERT INTO [format_table_name("round")] (start_datetime, server_ip, server_port) VALUES (Now(), COALESCE(INET_ATON('[world.internet_address]'), 0), '[world.port]')") + var/datum/DBQuery/query_round_start = SSdbcore.NewQuery("INSERT INTO [format_table_name("round")] (start_datetime, server_ip, server_port) VALUES (Now(), INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]')") query_round_start.Execute() var/datum/DBQuery/query_round_last_id = SSdbcore.NewQuery("SELECT LAST_INSERT_ID()") query_round_last_id.Execute() @@ -88,14 +91,15 @@ if(GLOB.round_id) log_game("Round ID: [GLOB.round_id]") -#define IRC_STATUS_THROTTLE 50 + /world/Topic(T, addr, master, key) if(config && config.log_world_topic) GLOB.world_game_log << "TOPIC: \"[T]\", from:[addr], master:[master], key:[key]" var/list/input = params2list(T) + if(input[SERVICE_CMD_PARAM_KEY]) + return ServiceCommand(input) var/key_valid = (global.comms_allowed && input["key"] == global.comms_key) - var/static/last_irc_status = 0 if("ping" in input) var/x = 1 @@ -110,8 +114,9 @@ n++ return n - else if("ircstatus" in input) - if(world.time - last_irc_status < IRC_STATUS_THROTTLE) + else if("ircstatus" in input) //tgs2 support + var/static/last_irc_status = 0 + if(world.time - last_irc_status < 50) return var/list/adm = get_admin_counts() var/list/allmins = adm["total"] @@ -179,20 +184,20 @@ if(input["crossmessage"] == "News_Report") minor_announce(input["message"], "Breaking Update From [input["message_sender"]]") - else if("adminmsg" in input) + else if("adminmsg" in input) //tgs2 support if(!key_valid) return "Bad Key" else return IrcPm(input["adminmsg"],input["msg"],input["sender"]) - else if("namecheck" in input) + else if("namecheck" in input) //tgs2 support if(!key_valid) return "Bad Key" else log_admin("IRC Name Check: [input["sender"]] on [input["namecheck"]]") message_admins("IRC name checking on [input["namecheck"]] from [input["sender"]]") return keywords_lookup(input["namecheck"],1) - else if("adminwho" in input) + else if("adminwho" in input) //tgs2 support if(!key_valid) return "Bad Key" else @@ -218,6 +223,7 @@ C.AnnouncePR(final_composed) /world/Reboot(reason = 0, fast_track = FALSE) + ServiceReboot() //handles alternative actions if necessary if (reason || fast_track) //special reboot, do none of the normal stuff if (usr) log_admin("[key_name(usr)] Has requested an immediate world restart via client side debugging tools") diff --git a/config/admin_ranks.txt b/config/admin_ranks.txt index 7bcb2df999..96737c5484 100644 --- a/config/admin_ranks.txt +++ b/config/admin_ranks.txt @@ -11,7 +11,9 @@ ############################################################################################################## # PLEASE NOTE: depending on config options, some abilities will be unavailable regardless if you have permission to use them! -# KEYWORDS: +# Follow the format below when documenting new keywords so the server tools may parse it + +# BEGIN_KEYWORDS # +ADMIN = general admin tools, verbs etc # +FUN = events, other event-orientated actions. Access to the fun secrets in the secrets panel. # +BAN = the ability to ban, jobban and fullban @@ -26,6 +28,7 @@ # +SOUND (or +SOUNDS) = allows you to upload and play sounds # +SPAWN (or +CREATE) = mob transformations, spawning of most atoms including mobs (high-risk atoms, e.g. blackholes, will require the +FUN flag too) # +EVERYTHING (or +HOST or +ALL) = Simply gives you everything without having to type every flag +# END_KEYWORDS Admin Observer Moderator = +ADMIN diff --git a/config/config.txt b/config/config.txt index 68df4c81cf..f37be01b10 100644 --- a/config/config.txt +++ b/config/config.txt @@ -1,4 +1,4 @@ -## Server name: This appears at the top of the screen in-game and in the BYOND hub. Remove the # infront of SERVERNAME and replace 'tgstation' with the name of your choice. +## Server name: This appears at the top of the screen in-game and in the BYOND hub. Uncomment and replace 'tgstation' with the name of your choice. # SERVERNAME tgstation ## Server SQL name: This is the name used to identify the server to the SQL DB, distinct from SERVERNAME as it must be at most 32 characters. @@ -7,35 +7,29 @@ ## Station name: The name of the station as it is referred to in-game. If commented out, the game will generate a random name instead. STATIONNAME Space Station 13 -## Put on byond hub: uncomment this to put your server on the byond hub. +## Put on byond hub: Uncomment this to put your server on the byond hub. #HUB -# Lobby time: This is the amount of time between rounds that players have to setup their characters and be ready. +## Lobby time: This is the amount of time between rounds that players have to setup their characters and be ready. LOBBY_COUNTDOWN 120 -# Round End Time: This is the amount of time after the round ends that players have to murder death kill each other. +## Round End Time: This is the amount of time after the round ends that players have to murder death kill each other. ROUND_END_COUNTDOWN 90 -## Add a # infront of this if you want to use the SQL based admin system, the legacy system uses admins.txt. You need to set up your database to use the SQL based system. +## Comment this out if you want to use the SQL based admin system, the legacy system uses admins.txt. You need to set up your database to use the SQL based system. ADMIN_LEGACY_SYSTEM -## Add a # infront of this if you want to use the SQL based banning system. The legacy systems use the files in the data folder. You need to set up your database to use the SQL based system. +## Comment this out if you want to use the SQL based banning system. The legacy systems use the files in the data folder. You need to set up your database to use the SQL based system. BAN_LEGACY_SYSTEM -## Add a # infront of this if you want to use the SQL based mentor system, the legacy system uses mentors.txt You need to set up your database to use the SQL based system. -MENTOR_LEGACY_SYSTEM - -#Mentors only see ckeys by default. Uncomment to have them only see mob name -#MENTORS_MOBNAME_ONLY - -## Unhash this entry to have certain jobs require your account to be at least a certain number of days old to select. You can configure the exact age requirement for different jobs by editing +## Uncomment this entry to have certain jobs require your account to be at least a certain number of days old to select. You can configure the exact age requirement for different jobs by editing ## the minimal_player_age variable in the files in folder /code/game/jobs/job/.. for the job you want to edit. Set minimal_player_age to 0 to disable age requirement for that job. ## REQUIRES the database set up to work. Keep it hashed if you don't have a database set up. ## NOTE: If you have just set-up the database keep this DISABLED, as player age is determined from the first time they connect to the server with the database up. If you just set it up, it means ## you have noone older than 0 days, since noone has been logged yet. Only turn this on once you have had the database up for 30 days. #USE_AGE_RESTRICTION_FOR_JOBS -# Uncomment this to have the job system use the player's account creation date, rather than the when they first joined the server for job timers. +## Uncomment this to have the job system use the player's account creation date, rather than the when they first joined the server for job timers. #USE_ACCOUNT_AGE_FOR_JOBS ## log OOC channel @@ -47,9 +41,6 @@ LOG_SAY ## log admin actions LOG_ADMIN -## log mentor actions -LOG_MENTOR - ## log admin chat LOG_ADMINCHAT @@ -136,11 +127,11 @@ HOSTEDBY Yournamehere ## Uncomment this to stop people connecting to your server without a registered ckey. (i.e. guest-* are all blocked from connecting) GUEST_BAN -## Comment to disable checking for the cid randomizer dll. (disabled if database isn't enabled or connected) +## Comment this out to disable checking for the cid randomizer dll. (disabled if database isn't enabled or connected) CHECK_RANDOMIZER -### IPINTEL: -### This allows you to detect likely proxies by checking ips against getipintel.net +## IPINTEL: +## This allows you to detect likely proxies by checking ips against getipintel.net ## Rating to warn at: (0.90 is good, 1 is 100% likely to be a spammer/proxy, 0.8 is 80%, etc) anything equal to or higher then this number triggers an admin warning #IPINTEL_RATING_BAD 0.90 ## Contact email, (required to use the service, leaving blank or default disables IPINTEL) @@ -164,7 +155,7 @@ CHECK_RANDOMIZER #USEWHITELIST ## set a server location for world reboot. Don't include the byond://, just give the address and port. -# Don't set this to the same server, BYOND will automatically restart players to the server when it has restarted. +## Don't set this to the same server, BYOND will automatically restart players to the server when it has restarted. # SERVER ss13.example.com:2506 ## forum address @@ -173,13 +164,13 @@ CHECK_RANDOMIZER ## Wiki address # WIKIURL http://www.tgstation13.org/wiki -##Rules address +## Rules address # RULESURL http://www.tgstation13.org/wiki/Rules -##Github address +## Github address # GITHUBURL https://www.github.com/tgstation/-tg-station -##Github repo id +## Github repo id ##This can be found by going to https://api.github.com/users//repos ##Or https://api.github.com/orgs//repos if the repo owner is an organization # GITHUBREPOID 3234987 @@ -191,23 +182,20 @@ CHECK_RANDOMIZER ##Toggle for having jobs load up from the .txt # LOAD_JOBS_FROM_TXT -##Remove the # mark infront of this to forbid admins from possessing the singularity. +## Uncomment this to forbid admins from possessing the singularity. #FORBID_SINGULO_POSSESSION -## Remove the # to show a popup 'reply to' window to every non-admin that recieves an adminPM. +## Uncomment to show a popup 'reply to' window to every non-admin that recieves an adminPM. ## The intention is to make adminPMs more visible. (although I fnd popups annoying so this defaults to off) #POPUP_ADMIN_PM -## Remove the # to allow special 'Easter-egg' events on special holidays such as seasonal holidays and stuff like 'Talk Like a Pirate Day' :3 YAARRR +## Uncomment to allow special 'Easter-egg' events on special holidays such as seasonal holidays and stuff like 'Talk Like a Pirate Day' :3 YAARRR ALLOW_HOLIDAYS -##Remove the # mark if you are going to use the SVN irc bot to relay adminhelps -#USEIRCBOT - -##Uncomment to show the names of the admin sending a pm from IRC instead of showing as a stealthmin. +## Uncomment to show the names of the admin sending a pm from IRC instead of showing as a stealthmin. #SHOW_IRC_NAME -##Defines the ticklimit for subsystem initialization (In percents of a byond tick). Lower makes world start smoother. Higher makes it faster. +## Defines the ticklimit for subsystem initialization (In percents of a byond tick). Lower makes world start smoother. Higher makes it faster. ##This is currently a testing optimized setting. A good value for production would be 98. TICK_LIMIT_MC_INIT 500 @@ -340,4 +328,7 @@ MINUTE_TOPIC_LIMIT 100 ## How long an unique error will be silenced for #ERROR_SILENCE_TIME 6000 ##How long to wait between messaging admins about occurences of an unique error -#ERROR_MSG_DELAY 50 \ No newline at end of file +#ERROR_MSG_DELAY 50 + +## Send a message to IRC when starting a new game +#IRC_ANNOUNCE_NEW_GAME \ No newline at end of file diff --git a/config/dbconfig.txt b/config/dbconfig.txt index cc28dc483d..1a7981c8c8 100644 --- a/config/dbconfig.txt +++ b/config/dbconfig.txt @@ -2,11 +2,11 @@ ## This is used for stats, feedback gathering, ## administration, and the in game library. -## Should SQL be enabled? Uncomment to enable. +## Should SQL be enabled? Uncomment to enable #SQL_ENABLED ## Server the MySQL database can be found at. -# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. +## Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. ADDRESS localhost ## MySQL server port (default is 3306). @@ -22,9 +22,8 @@ FEEDBACK_DATABASE feedback ## FEEDBACK_TABLEPREFIX erro_ ## FEEDBACK_TABLEPREFIX ## FEEDBACK_TABLEPREFIX SS13_ -## -## Leave as is if you are using the standard schema file. -FEEDBACK_TABLEPREFIX +## Remove "SS13_" if you are using the standard schema file. +FEEDBACK_TABLEPREFIX SS13_ ## Username/Login used to access the database. FEEDBACK_LOGIN username diff --git a/config/game_options.txt b/config/game_options.txt index a534dc633e..fca46c529d 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -1,33 +1,33 @@ -### HEALTH ### +## HEALTH ### -#Damage multiplier, effects both weapons and healing on all mobs. For example, 1.25 would result in 25% higher damage. +##Damage multiplier, effects both weapons and healing on all mobs. For example, 1.25 would result in 25% higher damage. DAMAGE_MULTIPLIER 1 -### REVIVAL ### +## REVIVAL ### -# whether pod plants work or not +## whether pod plants work or not REVIVAL_POD_PLANTS -# whether cloning tubes work or not +## whether cloning tubes work or not REVIVAL_CLONING -# amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) +## amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) REVIVAL_BRAIN_LIFE -1 -### RENAMING ### +## RENAMING ### -#Uncomment to allow cyborgs to rename themselves at roundstart. Has no effect on roboticists renaming cyborgs the normal way. +## 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 ### +## 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 -### EMOJI ### -#Comment this out if you want to disable emojis +## EMOJI ### +## Comment this out if you want to disable emojis EMOJIS -### MOB MOVEMENT ### +## MOB MOVEMENT ### ## We suggest editing these variables ingame to find a good speed for your server. ## To do this you must be a high level admin. Open the 'debug' tab ingame. @@ -49,7 +49,7 @@ SLIME_DELAY 0 ANIMAL_DELAY 0 -### NAMES ### +## NAMES ### ## If uncommented this adds a random surname to a player's name if they only specify one name. #HUMANS_NEED_SURNAMES @@ -57,7 +57,7 @@ ANIMAL_DELAY 0 #FORCE_RANDOM_NAMES -### ALERT LEVELS ### +## ALERT LEVELS ### ALERT_GREEN All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced. ALERT_BLUE_UPTO The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted. ALERT_BLUE_DOWNTO The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed. @@ -67,7 +67,7 @@ ALERT_DELTA Destruction of the station is imminent. All crew are instructed to o -### GAME MODES ### +## GAME MODES ### ## Uncomment to not send a roundstart intercept report. Gamemodes may override this. #NO_INTERCEPT_REPORT @@ -142,7 +142,7 @@ MIDROUND_ANTAG ABDUCTION #MIDROUND_ANTAG RAGINMAGES #MIDROUND_ANTAG MONKEY -## Uncomment for overrides of the minimum / maximum number of players in a round type. +## Uncomment these for overrides of the minimum / maximum number of players in a round type. ## If you set any of these occasionally check to see if you still need them as the modes ## will still be actively rebalanced around the SUGGESTED populations, not your overrides. ## Notes: For maximum number of players a value of -1 means no maximum. Setting minimums to @@ -166,7 +166,7 @@ MIDROUND_ANTAG ABDUCTION #MIN_POP GANG 20 #MAX_POP GANG -1 -#MIN_POP CULT 0 +#MIN_POP CULT 24 #MAX_POP CULT -1 #MIN_POP CLOCKWORK_CULT 24 @@ -213,8 +213,8 @@ CHANGELING_SCALING_COEFF 6 ## Set to 0 to disable scaling and use default numbers instead. SECURITY_SCALING_COEFF 8 -# The number of objectives traitors get. -# Not including escaping/hijacking. +## The number of objectives traitors get. +## Not including escaping/hijacking. TRAITOR_OBJECTIVES_AMOUNT 2 ## Uncomment to prohibit jobs that start with loyalty @@ -233,8 +233,8 @@ ALLOW_LATEJOIN_ANTAGONISTS ## Uncomment to allow players to see the set odds of different rounds in secret/random in the get server revision screen. This will NOT tell the current roundtype. #SHOW_GAME_TYPE_ODDS -### RANDOM EVENTS ### -## Comment this to disable random events during the round. +## RANDOM EVENTS ### +## Comment this out to disable random events during the round. ALLOW_RANDOM_EVENTS ## Multiplier for earliest start time of dangerous events. @@ -246,34 +246,34 @@ EVENTS_MIN_TIME_MUL 1 EVENTS_MIN_PLAYERS_MUL 1 -### AI ### +## AI ### ## Allow the AI job to be picked. ALLOW_AI -### Secborg ### +## Secborg ### ## Uncomment to prevent the security cyborg module from being chosen #DISABLE_SECBORG -### Peacekeeper Borg ### +## Peacekeeper Borg ### ## Uncomment to prevent the peacekeeper cyborg module from being chosen #DISABLE_PEACEBORG -### AWAY MISSIONS ### +## AWAY MISSIONS ### ## How long the delay is before the Away Mission gate opens. Default is half an hour. ## 600 is one minute. GATEWAY_DELAY 18000 -### ACCESS ### +## ACCESS ### ## If the number of players ready at round starts exceeds this threshold, JOBS_HAVE_MINIMAL_ACCESS will automatically be enabled. Otherwise, it will be disabled. ## This is useful for accomodating both low and high population rounds on the same server. -## Comment out or set to 0 to disable this automatic toggle. +## Comment this out or set to 0 to disable this automatic toggle. MINIMAL_ACCESS_THRESHOLD 20 -## Comment this out if you wish to use the setup where jobs have more access. +## Comment this out this if you wish to use the setup where jobs have more access. ## This is intended for servers with low populations - where there are not enough ## players to fill all roles, so players need to do more than just one job. ## This option is ignored if MINIMAL_ACCESS_THRESHOLD is used. @@ -282,35 +282,35 @@ MINIMAL_ACCESS_THRESHOLD 20 ## Uncomment to give assistants maint access. #ASSISTANTS_HAVE_MAINT_ACCESS -## Uncoment to give security maint access. Note that if you comment JOBS_HAVE_MINIMAL_ACCESS security already gets maint from that. +## Uncoment to give security maint access. Note that if you dectivate JOBS_HAVE_MINIMAL_ACCESS security already gets maint from that. #SECURITY_HAS_MAINT_ACCESS ## Uncomment to give everyone maint access. #EVERYONE_HAS_MAINT_ACCESS -## Comment this to make security officers spawn in departmental security posts +## Comment this out this to make security officers spawn in departmental security posts SEC_START_BRIG -### GHOST INTERACTION ### +## GHOST INTERACTION ### ## Uncomment to let ghosts spin chairs. You may be wondering why this is a config option. Don't ask. #GHOST_INTERACTION -### NON-VOCAL SILICONS ### -## Uncomment to stop the AI, or cyborgs, from having vocal communication. +## NON-VOCAL SILICONS ### +## Uncomment these to stop the AI, or cyborgs, from having vocal communication. #SILENT_AI #SILENT_BORG -### SANDBOX PANEL AUTOCLOSE ### +## SANDBOX PANEL AUTOCLOSE ### ## The sandbox panel's item spawning dialog now stays open even after you click an option. ## If you find that your players are abusing the sandbox panel, this option may slow them down ## without preventing people from using it properly. ## Only functions in sandbox game mode. #SANDBOX_AUTOCLOSE -### ROUNDSTART SILICON LAWS ### +## ROUNDSTART SILICON LAWS ### ## This controls what the AI's laws are at the start of the round. -## Set to 0/commented for "off", silicons will just start with Asimov. +## Set to 0/commented out for "off", silicons will just start with Asimov. ## Set to 1 for "custom", silicons will start with the custom laws defined in silicon_laws.txt. (If silicon_laws.txt is empty, the AI will spawn with asimov and Custom boards will auto-delete.) ## Set to 2 for "random", silicons will start with a random lawset picked from random laws specified below. ## Set to 3 for "weighted random", using values in "silicon_weights.txt", a law will be selected, with weights specifed in that file. @@ -378,7 +378,7 @@ LAW_WEIGHT buildawall,0 ##------------------------------------------------ -### SILICON LAW MAX AMOUNT ### +## SILICON LAW MAX AMOUNT ### ## The maximum number of laws a silicon can have ## Attempting to upload laws past this point will fail unless the AI is reset SILICON_MAX_LAW_AMOUNT 12 @@ -401,7 +401,7 @@ ROUNDSTART_RACES plasmaman #ROUNDSTART_RACES shadow ## Races that are better than humans in some ways, but worse in others -ROUNDSTART_RACES jelly +#ROUNDSTART_RACES jelly #ROUNDSTART_RACES golem #ROUNDSTART_RACES adamantine #ROUNDSTART_RACES plasma @@ -415,7 +415,7 @@ ROUNDSTART_RACES jelly ## Races that are straight upgrades. If these are on expect powergamers to always pick them #ROUNDSTART_RACES skeleton #ROUNDSTART_RACES zombie -ROUNDSTART_RACES slime +#ROUNDSTART_RACES slime #ROUNDSTART_RACES pod #ROUNDSTART_RACES military_synth #ROUNDSTART_RACES agent @@ -430,12 +430,12 @@ ASSISTANT_CAP -1 ## Starlight for exterior walls and breaches. Uncomment for starlight! ## This is disabled by default to make testing quicker, should be enabled on production servers or testing servers messing with lighting -STARLIGHT +#STARLIGHT ## Uncomment to bring back old grey suit assistants instead of the now default rainbow colored assistants. #GREY_ASSISTANTS -### Midround Antag (aka Mulligan antag) config options ### +## Midround Antag (aka Mulligan antag) config options ### ## A time, in minutes, after which the midround antag system stops attempting to run and continuous rounds end immediately upon completion. MIDROUND_ANTAG_TIME_CHECK 60 @@ -443,18 +443,18 @@ MIDROUND_ANTAG_TIME_CHECK 60 ## A ratio of living to total crew members, the lower this is, the more people will have to die in order for midround antag to be skipped MIDROUND_ANTAG_LIFE_CHECK 0.7 -###Limit Spell Choices## +##Limit Spell Choices## ## Uncomment to disallow wizards from using certain spells that may be too chaotic/fun for your playerbase #NO_SUMMON_GUNS #NO_SUMMON_MAGIC #NO_SUMMON_EVENTS -##Comment for "normal" explosions, which ignore obstacles -##Uncomment for explosions that react to doors and walls +## Comment this out for "normal" explosions, which ignore obstacles +## Uncomment for explosions that react to doors and walls REACTIONARY_EXPLOSIONS -### Configure the bomb cap +## Configure the bomb cap ## This caps all explosions to the specified range. Used for both balance reasons and to prevent overloading the server and lagging the game out. ## This is given as the 3rd number(light damage) in the standard (1,2,3) explosion notation. The other numbers are derived by dividing by 2 and 4. ## eg: If you give the number 20. The bomb cap will be 5,10,20. @@ -469,18 +469,23 @@ BOMBCAP 20 ## Lavaland "Budget" -# Lavaland ruin spawning has an imaginary budget to spend on ruins, where -# a less lootfilled or smaller or less round effecting ruin costs less to -# spawn, while the converse is true. Alter this number to affect the amount -# of ruins. -LAVALAND_BUDGET 16 +## Lavaland ruin spawning has an imaginary budget to spend on ruins, where +## a less lootfilled or smaller or less round effecting ruin costs less to +## spawn, while the converse is true. Alter this number to affect the amount +## of ruins. +LAVALAND_BUDGET 60 ## Space Ruin Budged -Space_Budget 8 +Space_Budget 16 -#Time in ds from when a player latejoins till the arrival shuttle docks at the station -#Must be at least 30 to not break parallax I recommended at least 55 to be visually/aurally appropriate +## Time in ds from when a player latejoins till the arrival shuttle docks at the station +## Must be at least 30 to not break parallax I recommended at least 55 to be visually/aurally appropriate ARRIVALS_SHUTTLE_DOCK_WINDOW 55 -#Set this to 1 to prevent late join players from spawning if the arrivals shuttle is depressurized -ARRIVALS_SHUTTLE_REQUIRE_SAFE_LATEJOIN 0 \ No newline at end of file +## Uncomment to prevent late join players from spawning if the arrivals shuttle is depressurized +#ARRIVALS_SHUTTLE_REQUIRE_SAFE_LATEJOIN + +## How many wirechewing rodents you want to spawn on exposed maintenane wires at the start of the round. You may wish to set this to 0 if you're testing powernets. + +MICE_ROUNDSTART 10 + diff --git a/config/server_to_tool_bridge_port.txt b/config/server_to_tool_bridge_port.txt new file mode 100644 index 0000000000..402253760b --- /dev/null +++ b/config/server_to_tool_bridge_port.txt @@ -0,0 +1 @@ +45678 diff --git a/html/changelogs/AutoChangeLog-pr-1219.yml b/html/changelogs/AutoChangeLog-pr-1219.yml new file mode 100644 index 0000000000..928478889c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1219.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "Allows explorer webbings to hold marker beacons." diff --git a/html/changelogs/AutoChangeLog-pr-1244.yml b/html/changelogs/AutoChangeLog-pr-1244.yml new file mode 100644 index 0000000000..cb3ce07ed9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1244.yml @@ -0,0 +1,5 @@ +author: "Joan" +delete-after: True +changes: + - rscadd: "The kinetic crusher can now gain bonus effects via trophy items gained by killing bosses with it." + - rscadd: "Yes, you do have to kill the boss primarily doing damage via the kinetic crusher, or you won't get the trophy item and the bonus effect it grants." diff --git a/html/changelogs/AutoChangeLog-pr-1274.yml b/html/changelogs/AutoChangeLog-pr-1274.yml new file mode 100644 index 0000000000..498a1c03ea --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1274.yml @@ -0,0 +1,5 @@ +author: "Steelpoint" +delete-after: True +changes: + - rscadd: "Central Command has listened to complaints and, as such, has now stationed \"real\" Private Security Officers at centcom docks." + - rscadd: "A new Nanotrasen Security Officer NPC variant is available to admins, this 'peaceful' version will only attack people who attack it first. Great for keeping order." diff --git a/html/changelogs/AutoChangeLog-pr-1277.yml b/html/changelogs/AutoChangeLog-pr-1277.yml new file mode 100644 index 0000000000..b20bcf2f45 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1277.yml @@ -0,0 +1,4 @@ +author: "Joan" +delete-after: True +changes: + - spellcheck: "Renames hivelord and legion cores to 'regenerative core'. Their descs have also been updated to be more clear." diff --git a/html/changelogs/AutoChangeLog-pr-1326.yml b/html/changelogs/AutoChangeLog-pr-1326.yml new file mode 100644 index 0000000000..bd9b271593 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1326.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "Portable pump max pressure has been lowered." diff --git a/html/changelogs/AutoChangeLog-pr-1332.yml b/html/changelogs/AutoChangeLog-pr-1332.yml new file mode 100644 index 0000000000..5971468fd2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1332.yml @@ -0,0 +1,4 @@ +author: "Joan" +delete-after: True +changes: + - rscadd: "Three unique Kinetic Accelerator modules will now appear in necropolis chests." diff --git a/html/changelogs/AutoChangeLog-pr-1336.yml b/html/changelogs/AutoChangeLog-pr-1336.yml new file mode 100644 index 0000000000..01fb143eb9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1336.yml @@ -0,0 +1,4 @@ +author: "QualityVan" +delete-after: True +changes: + - tweak: "The tactical rigging in op closets is more tacticool" diff --git a/html/changelogs/AutoChangeLog-pr-1342.yml b/html/changelogs/AutoChangeLog-pr-1342.yml new file mode 100644 index 0000000000..2dd36c983f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1342.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Attempts to add items to a storage container beyond its slots limit will now obtain a failure message again." diff --git a/html/changelogs/AutoChangeLog-pr-1345.yml b/html/changelogs/AutoChangeLog-pr-1345.yml new file mode 100644 index 0000000000..64afe8dd66 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1345.yml @@ -0,0 +1,5 @@ +author: "p440" +delete-after: True +changes: + - bugfix: "Fixed duping cable coils with magic APC terminals" + - bugfix: "Fixed invalid icon state for empty APCs" diff --git a/html/changelogs/AutoChangeLog-pr-1354.yml b/html/changelogs/AutoChangeLog-pr-1354.yml new file mode 100644 index 0000000000..ce5a9bc89d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1354.yml @@ -0,0 +1,4 @@ +author: "Improvedname" +delete-after: True +changes: + - rscadd: "Janitors now start with a flyswatter" diff --git a/html/changelogs/AutoChangeLog-pr-1357.yml b/html/changelogs/AutoChangeLog-pr-1357.yml new file mode 100644 index 0000000000..3714e15677 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1357.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "The Seed Vault's chemical dispenser now has all the chemicals a pod person could want." diff --git a/html/changelogs/AutoChangeLog-pr-1364.yml b/html/changelogs/AutoChangeLog-pr-1364.yml new file mode 100644 index 0000000000..42b08fd338 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1364.yml @@ -0,0 +1,6 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "The crafting menu now has subcategories!" + - rscadd: "Food recipe categories have been combined as subcategories of the Foods category." + - rscadd: "Weaponry and Ammunition have been combined as subcategories of the Weaponry category." diff --git a/html/changelogs/AutoChangeLog-pr-1366.yml b/html/changelogs/AutoChangeLog-pr-1366.yml new file mode 100644 index 0000000000..23f1e1c9ac --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1366.yml @@ -0,0 +1,4 @@ +author: "Planned Spaceparenthood" +delete-after: True +changes: + - bugfix: "We would like to apologize for mislabeled cloning pod buttons." diff --git a/html/changelogs/AutoChangeLog-pr-1370.yml b/html/changelogs/AutoChangeLog-pr-1370.yml new file mode 100644 index 0000000000..3b3468b7a3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1370.yml @@ -0,0 +1,7 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "Many stacks now update their sprite based on their amount." + - rscadd: "Stacks will now weigh less if they're less than full." + - imageadd: "Added new icon states for glass, reinforced glass, metal, plasteel, plastic, plasma, plastitanium, titanium, gold, silver, adamantine, brass, bruise packs, ointment, gauze, cloth, leather, wet leather, hairless hide, human hide, ash drake hide, goliath hide, bones, sandstone blocks, and snow blocks." + - tweak: "Some lavaland stacks' max amounts have been reduced." diff --git a/html/changelogs/AutoChangeLog-pr-1377.yml b/html/changelogs/AutoChangeLog-pr-1377.yml new file mode 100644 index 0000000000..ad71916544 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1377.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Bulldog Shotguns should update their sprite properly when you remove the magazine." diff --git a/html/changelogs/AutoChangeLog-pr-1379.yml b/html/changelogs/AutoChangeLog-pr-1379.yml new file mode 100644 index 0000000000..e912f355ee --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1379.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Riot suits no longer hide jumpsuits." diff --git a/html/changelogs/AutoChangeLog-pr-1412.yml b/html/changelogs/AutoChangeLog-pr-1412.yml new file mode 100644 index 0000000000..5b3f54782c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1412.yml @@ -0,0 +1,5 @@ +author: "LetterJay" +delete-after: True +changes: + - experiment: "New server backend!" + - tweak: "Test merged PRs now show the commit of the PR at which they were merged" diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index 8fbd06a23b..f73a54ab1d 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/obj/cardboard_cutout.dmi b/icons/obj/cardboard_cutout.dmi index a329c00555..fb41575a8d 100644 Binary files a/icons/obj/cardboard_cutout.dmi and b/icons/obj/cardboard_cutout.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 441f334ca7..2043111e60 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index a02dcae2f3..254ac3a777 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/lavaland/artefacts.dmi b/icons/obj/lavaland/artefacts.dmi index d19bc53856..41c1ba56cd 100644 Binary files a/icons/obj/lavaland/artefacts.dmi and b/icons/obj/lavaland/artefacts.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index f039038dfa..471e9bfa30 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/machines/dominator.dmi b/icons/obj/machines/dominator.dmi index 9f743174e7..42337dc1c8 100644 Binary files a/icons/obj/machines/dominator.dmi and b/icons/obj/machines/dominator.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index a5fe40431e..3de64f610a 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 2bbe115510..ca0e225d7e 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/tgstation.dme b/tgstation.dme index cfc637f503..0d035a36f3 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -60,6 +60,7 @@ #include "code\__DEFINES\robots.dm" #include "code\__DEFINES\role_preferences.dm" #include "code\__DEFINES\say.dm" +#include "code\__DEFINES\server_tools.dm" #include "code\__DEFINES\shuttles.dm" #include "code\__DEFINES\sight.dm" #include "code\__DEFINES\sound.dm" @@ -335,6 +336,7 @@ #include "code\datums\status_effects\buffs.dm" #include "code\datums\status_effects\debuffs.dm" #include "code\datums\status_effects\gas.dm" +#include "code\datums\status_effects\neutral.dm" #include "code\datums\status_effects\status_effect.dm" #include "code\datums\weather\weather.dm" #include "code\datums\weather\weather_types.dm" @@ -1487,10 +1489,12 @@ #include "code\modules\mining\satchel_ore_boxdm.dm" #include "code\modules\mining\shelters.dm" #include "code\modules\mining\equipment\explorer_gear.dm" +#include "code\modules\mining\equipment\goliath_hide.dm" #include "code\modules\mining\equipment\kinetic_crusher.dm" #include "code\modules\mining\equipment\lazarus_injector.dm" #include "code\modules\mining\equipment\marker_beacons.dm" #include "code\modules\mining\equipment\mineral_scanner.dm" +#include "code\modules\mining\equipment\regenerative_core.dm" #include "code\modules\mining\equipment\mining_tools.dm" #include "code\modules\mining\equipment\resonator.dm" #include "code\modules\mining\equipment\survival_pod.dm" @@ -1741,7 +1745,6 @@ #include "code\modules\mob\living\simple_animal\hostile\creature.dm" #include "code\modules\mob\living\simple_animal\hostile\eyeballs.dm" #include "code\modules\mob\living\simple_animal\hostile\faithless.dm" -#include "code\modules\mob\living\simple_animal\hostile\flan.dm" #include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" #include "code\modules\mob\living\simple_animal\hostile\headcrab.dm" #include "code\modules\mob\living\simple_animal\hostile\hivebot.dm" @@ -1751,7 +1754,6 @@ #include "code\modules\mob\living\simple_animal\hostile\killertomato.dm" #include "code\modules\mob\living\simple_animal\hostile\mecha_pilot.dm" #include "code\modules\mob\living\simple_animal\hostile\mimic.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs.dm" #include "code\modules\mob\living\simple_animal\hostile\mushroom.dm" #include "code\modules\mob\living\simple_animal\hostile\nanotrasen.dm" #include "code\modules\mob\living\simple_animal\hostile\pirate.dm" @@ -1763,6 +1765,7 @@ #include "code\modules\mob\living\simple_animal\hostile\tree.dm" #include "code\modules\mob\living\simple_animal\hostile\venus_human_trap.dm" #include "code\modules\mob\living\simple_animal\hostile\wizard.dm" +#include "code\modules\mob\living\simple_animal\hostile\wumborian_fugu.dm" #include "code\modules\mob\living\simple_animal\hostile\bosses\boss.dm" #include "code\modules\mob\living\simple_animal\hostile\bosses\paperwizard.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\bubblegum.dm" @@ -1772,6 +1775,13 @@ #include "code\modules\mob\living\simple_animal\hostile\megafauna\legion.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\megafauna.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\swarmer.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\basilisk.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goldgrub.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goliath.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\gutlunch.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\mining_mobs.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\necropolis_tendril.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\bat.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\frog.dm" @@ -1913,7 +1923,9 @@ #include "code\modules\procedural_mapping\mapGenerators\cellular.dm" #include "code\modules\procedural_mapping\mapGenerators\cult.dm" #include "code\modules\procedural_mapping\mapGenerators\lava_river.dm" +#include "code\modules\procedural_mapping\mapGenerators\lavaland.dm" #include "code\modules\procedural_mapping\mapGenerators\nature.dm" +#include "code\modules\procedural_mapping\mapGenerators\repair.dm" #include "code\modules\procedural_mapping\mapGenerators\shuttle.dm" #include "code\modules\procedural_mapping\mapGenerators\syndicate.dm" #include "code\modules\projectiles\ammunition.dm" @@ -2042,6 +2054,7 @@ #include "code\modules\ruins\objects_and_mobs\sin_ruins.dm" #include "code\modules\security_levels\keycard_authentication.dm" #include "code\modules\security_levels\security_levels.dm" +#include "code\modules\server_tools\server_tools.dm" #include "code\modules\shuttle\arrivals.dm" #include "code\modules\shuttle\assault_pod.dm" #include "code\modules\shuttle\computer.dm" diff --git a/tgui/src/interfaces/personal_crafting.ract b/tgui/src/interfaces/personal_crafting.ract index f02b3b681c..962d320c08 100644 --- a/tgui/src/interfaces/personal_crafting.ract +++ b/tgui/src/interfaces/personal_crafting.ract @@ -45,31 +45,57 @@ - + {{#if data.busy}} Crafting... {{else}} - - {{data.prev_cat}} - - - {{data.next_cat}} - - {{#if data.display_craftable_only}} - - Showing Craftable Recipes - - {{else}} - - Showing All Recipes - - {{/if}} - - Compact - + + + + + + + + + {{#if data.subcategory}} + + + {{/if}} + +
+ + {{data.prev_cat}} + + + + {{data.next_cat}} + + + {{#if data.display_craftable_only}} + + Showing Craftable Recipes + + {{else}} + + Showing All Recipes + + {{/if}} + + + Compact + +
+ + {{data.prev_subcat}} + + + + {{data.next_subcat}} + +
{{#if config.fancy}} {{^data.display_compact}} {{! This doesn't work in compact mode, so let's hide it}} diff --git a/tools/dmm2tgm/Source/dmm2tgm.py b/tools/dmm2tgm/Source/dmm2tgm.py deleted file mode 100644 index 637986f9a6..0000000000 --- a/tools/dmm2tgm/Source/dmm2tgm.py +++ /dev/null @@ -1,77 +0,0 @@ - -import sys - -# .dmm format converter, by RemieRichards -# Version 2.0 -# Converts the internal structure of a .dmm file to a syntax -# that git can better handle conflicts-wise, it's also fairly human readable! -# Processes Boxstation (tgstation.2.1.3) almost instantly - - -def convert_map(map_file): - #CHECK FOR PREVIOUS CONVERSION - with open(map_file, "r") as conversion_candidate: - header = conversion_candidate.readline() - if header.find("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE") != -1: - sys.exit() - return - - - #ACTUAL CONVERSION - with open(map_file, "r+") as unconverted_map: - characters = unconverted_map.read() - converted_map = "" - in_object_block = False #() - in_variable_block = False #{} - in_quote_block = False #'' - in_double_quote_block = False #"" - for char in characters: - if not in_quote_block: #Checking for things like "Flashbangs (Warning!)" Because we only care about ({'";, that are used as byond syntax, not strings - if not in_double_quote_block: - if not in_variable_block: - if char == "(": - in_object_block = True - char = char + "\n" - if char == ")": - in_object_block = False - if char == ",": - char = char + "\n" - - if char == "{": - in_variable_block = True - if in_object_block: - char = char + "\n\t" - if char == "}": - in_variable_block = False - if in_object_block: - char = "\n\t" + char - - if char == ";": - char = char + "\n\t" - - if char == "\"": - if in_double_quote_block: - in_double_quote_block = False - else: - in_double_quote_block = True - - if char == "'": - if not in_double_quote_block: - if in_quote_block: - in_quote_block = False - else: - in_quote_block = True - - converted_map = converted_map + char - - #OVERWRITE MAP FILE WITH CONVERTED MAP STRING - with open(map_file, "r+") as final_converted_map: - final_converted_map.write("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE \n") - final_converted_map.write(converted_map) - - sys.exit() - - -if sys.argv[1]: #Run like dmm2tgm.py "folder/folder/a_map.dmm" - convert_map(sys.argv[1]) - diff --git a/tools/dmm2tgm/dmm2tgm.exe b/tools/dmm2tgm/dmm2tgm.exe deleted file mode 100644 index fba25d71d0..0000000000 Binary files a/tools/dmm2tgm/dmm2tgm.exe and /dev/null differ diff --git a/tools/dmm2tgm/library.zip b/tools/dmm2tgm/library.zip deleted file mode 100644 index 068102032b..0000000000 Binary files a/tools/dmm2tgm/library.zip and /dev/null differ diff --git a/tools/dmm2tgm/python27.dll b/tools/dmm2tgm/python27.dll deleted file mode 100644 index e45374fb33..0000000000 Binary files a/tools/dmm2tgm/python27.dll and /dev/null differ diff --git a/tools/dmm2tgm/w9xpopen.exe b/tools/dmm2tgm/w9xpopen.exe deleted file mode 100644 index 9303628363..0000000000 Binary files a/tools/dmm2tgm/w9xpopen.exe and /dev/null differ diff --git a/tools/mapmerge/Convert Maps to TGM.bat b/tools/mapmerge/Convert Maps to TGM.bat new file mode 100644 index 0000000000..0b88dfaf1d --- /dev/null +++ b/tools/mapmerge/Convert Maps to TGM.bat @@ -0,0 +1,3 @@ +@echo off +set MAPROOT="../../_maps/" +python dmm2tgm.py %1 %MAPROOT% \ No newline at end of file diff --git a/tools/mapmerge/dmm2tgm.py b/tools/mapmerge/dmm2tgm.py new file mode 100644 index 0000000000..4ed4d8ffe6 --- /dev/null +++ b/tools/mapmerge/dmm2tgm.py @@ -0,0 +1,39 @@ +import map_helpers +import sys +import shutil + +#main("../../_maps/") +def main(map_folder): + tgm = "1" + maps = map_helpers.prompt_maps(map_folder, "convert", tgm) + + print("\nConverting these maps:") + for i in maps.indices: + print(str(maps.files[i])[len(map_folder):]) + + convert = input("\nPress Enter to convert...\n") + if convert == "abort": + print("\nAborted map convert.") + sys.exit() + else: + for i in maps.indices: + path_str = str(maps.files[i]) + path_str_pretty = path_str[len(map_folder):] + error = map_helpers.merge_map(path_str, path_str, tgm) + if error > 1: + print(map_helpers.error[error]) + continue + if error == 1: + print(map_helpers.error[1]) + print("CONVERTED: {}".format(path_str_pretty)) + print(" - ") + + print("\nFinished converting.") + +def string_to_num(s): + try: + return int(s) + except ValueError: + return -1 + +main(sys.argv[1]) diff --git a/tools/mapmerge/map_helpers.py b/tools/mapmerge/map_helpers.py index ea06641f50..e1eb7e875c 100644 --- a/tools/mapmerge/map_helpers.py +++ b/tools/mapmerge/map_helpers.py @@ -1,5 +1,8 @@ import sys import subprocess +import os +import pathlib +import collections from datetime import datetime tgm_header = "//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE" @@ -727,3 +730,45 @@ def combine_tiles(tile_A, tile_B, priority, marker): def run_shell_command(command): return subprocess.run(command, shell=True, stdout=subprocess.PIPE, universal_newlines=True).stdout + +def prompt_maps(map_folder, verb, tgm): + list_of_files = list() + for root, directories, filenames in os.walk(map_folder): + for filename in [f for f in filenames if f.endswith(".dmm")]: + list_of_files.append(pathlib.Path(root, filename)) + + last_dir = "" + for i in range(0, len(list_of_files)): + this_dir = list_of_files[i].parent + if last_dir != this_dir: + print("--------------------------------") + last_dir = this_dir + print("[{}]: {}".format(i, str(list_of_files[i])[len(map_folder):])) + + print("--------------------------------") + in_list = input("List the maps you want to " + verb + " (example: 1,3-5,12):\n") + in_list = in_list.replace(" ", "") + in_list = in_list.split(",") + + valid_indices = list() + for m in in_list: + index_range = m.split("-") + if len(index_range) == 1: + index = string_to_num(index_range[0]) + if index >= 0 and index < len(list_of_files): + valid_indices.append(index) + elif len(index_range) == 2: + index0 = string_to_num(index_range[0]) + index1 = string_to_num(index_range[1]) + if index0 >= 0 and index0 <= index1 and index1 < len(list_of_files): + valid_indices.extend(range(index0, index1 + 1)) + + if tgm == "1": + print("\nMaps will be converted to tgm.") + tgm = True + else: + print("\nMaps will not be converted to tgm.") + tgm = False + + maps_to_run = collections.namedtuple('maps_to_run', ['files', 'indices']) + return maps_to_run(list_of_files, valid_indices) \ No newline at end of file diff --git a/tools/mapmerge/mapmerger.py b/tools/mapmerge/mapmerger.py index b93684bbc9..2b679cb131 100644 --- a/tools/mapmerge/mapmerger.py +++ b/tools/mapmerge/mapmerger.py @@ -1,52 +1,15 @@ import map_helpers import sys -import os -import pathlib import shutil #main("../../_maps/") def main(map_folder, tgm=0): - list_of_files = list() - for root, directories, filenames in os.walk(map_folder): - for filename in [f for f in filenames if f.endswith(".dmm")]: - list_of_files.append(pathlib.Path(root, filename)) - - last_dir = "" - for i in range(0, len(list_of_files)): - this_dir = list_of_files[i].parent - if last_dir != this_dir: - print("--------------------------------") - last_dir = this_dir - print("[{}]: {}".format(i, str(list_of_files[i])[len(map_folder):])) - - print("--------------------------------") - in_list = input("List the maps you want to merge (example: 1,3-5,12):\n") - in_list = in_list.replace(" ", "") - in_list = in_list.split(",") - - valid_indices = list() - for m in in_list: - index_range = m.split("-") - if len(index_range) == 1: - index = string_to_num(index_range[0]) - if index >= 0 and index < len(list_of_files): - valid_indices.append(index) - elif len(index_range) == 2: - index0 = string_to_num(index_range[0]) - index1 = string_to_num(index_range[1]) - if index0 >= 0 and index0 <= index1 and index1 < len(list_of_files): - valid_indices.extend(range(index0, index1 + 1)) - - if tgm == "1": - print("\nMaps will be converted to tgm.") - tgm = True - else: - print("\nMaps will not be converted to tgm.") - tgm = False + valid_indices = map_helpers.prompt_maps(map_folder, "merge", tgm) print("\nMerging these maps:") - for i in valid_indices: - print(str(list_of_files[i])[len(map_folder):]) + for i in maps.indices: + print(str(maps.files[i])[len(map_folder):]) + merge = input("\nPress Enter to merge...\n") if merge == "abort": print("\nAborted map merge.") diff --git a/tools/tgstation-server/Fix Errors.bat b/tools/tgstation-server/Fix Errors.bat deleted file mode 100644 index bbe540c82c..0000000000 --- a/tools/tgstation-server/Fix Errors.bat +++ /dev/null @@ -1,24 +0,0 @@ -@echo off -title Automated Error Fixer. -echo This will reset some things, the byond server (DreamDaemon) and the start server script must not be running. Some error messages are normal. -echo You will be prompted to press any key 3 times -pause -pause -pause -cls -echo Resetting folders -mkdir gamecode\a -mkdir gamecode\b -del /S /F /Q gamefolder >nul 2>nul -rmdir /S /q gamefolder -mklink /d gamefolder gamecode\a -call bin\findab.bat -cls -echo Re-Initializing code -call bin\copyfromgit.bat -cls -echo Recompiling the game. If you plan to update or testmerge you can just close this program now and continue. -call bin\build.bat -cls -echo Done! (hopefully) -pause \ No newline at end of file diff --git a/tools/tgstation-server/OnServerBoot.bat b/tools/tgstation-server/OnServerBoot.bat deleted file mode 100644 index db1f5cc230..0000000000 --- a/tools/tgstation-server/OnServerBoot.bat +++ /dev/null @@ -1,47 +0,0 @@ -@echo off -title Server Boot Detected. -echo This script is only meant to start byond when the server first boots, do not manually run this. -echo If you manually ran this, close this window NOW. -timeout 15 -start cmd /c "Start Bot.bat" -cls -echo Server boot detected. Starting byond and Space Station 13. -echo Prepping code -mkdir gamecode\a -cls -echo Server boot detected. Starting byond and Space Station 13. -echo Prepping code -mkdir gamecode\b -cls -echo Server boot detected. Starting byond and Space Station 13. -echo Prepping code -del /S /F /Q gamefolder >nul 2>nul -cls -echo Server boot detected. Starting byond and Space Station 13. -echo Prepping code -rmdir /S /q gamefolder -cls -echo Server boot detected. Starting byond and Space Station 13. -echo Prepping code -mklink /d gamefolder gamecode\a -cls -echo Server boot detected. Starting byond and Space Station 13. -echo Prepping code -call bin\findab.bat -cls -echo Server boot detected. Starting byond and Space Station 13. -echo Re-Initializing code -call bin\copyfromgit.bat -cls -echo Server boot detected. Starting byond and Space Station 13. -echo Re-Initializing code -cls -cls -echo Server boot detected. Starting byond and Space Station 13. -echo Compiling the game. If you plan to update or testmerge you can just close this program now and continue. -call bin\build.bat -cls -echo Server boot detected. Starting byond and Space Station 13. -echo Starting server and bot. -start cmd /c "Start Server.bat" -timeout 10 \ No newline at end of file diff --git a/tools/tgstation-server/README.md b/tools/tgstation-server/README.md deleted file mode 100644 index 10831fd461..0000000000 --- a/tools/tgstation-server/README.md +++ /dev/null @@ -1,111 +0,0 @@ -# Tgstation Toolkit: -This is a toolset to manage a production server of /tg/Station13 (and its forks). It includes an update script that is able to update the server without having to stop or shutdown the server (the update will take effect next round) and a script to start the server and restart it if it crashes (optional, requires registry tweaks to disable the Windows crash dialog system wide) as well as systems for fixing errors and merging GitHub Pull Requests locally. - -Generally, updates force a live tracking of the configured git repo, resetting local modifications. If you plan to make modifications, set up a new git repo to store your version of the code in, and point this script to that in the config (explained below). This can be on github or a local repo using file:/// urls. - -These tools require UAC to be disabled. (There has been limited luck getting it to work under UAC on windows 10 using run as admin, but in other versions of windows, running as admin resets the current directory and this breaks things) -(Note: There is no security risk to disabling UAC because UAC is not a security boundary, there exists active unpatched exploits against it that have been around since vista and work up to windows 10) - -## Install: -1. Move this folder to where you want your server to run from (you may also rename this folder if you wish) -1. Right click on `config.bat` and select `Edit`. -1. Configure the port, git repo, and other setting, You may configure the location of git, but if you installed using git for windows, we will auto detect it if its not in path. -1. You may also need to change the location of the git repo url, and if you renamed your `dme`/"dream maker environment" file, you will need to change the project name configuration setting to be the name of your dme minus the extension (eg: if you renamed `tgstation.dme` to `ntstation.dme`, project name should be set to `ntstation` -1. Finally, run install.bat and hope for no error. - * It will clone the git repo, setup some folders, and add cross reference links everywhere. - -### Optional: -If you plan to use the `Start Server.bat` script to start the server and restart it if it crashes, you need to run the `disable crash dialog.reg` registry script to disable the "program.exe has stopped working" dialog. This will get disabled system wide so if you rely on this dialog, you should skip this step. - -## Usage: -### Folders: -* `gamecode/` - * This will house two copies of the game code, one for updating and one for live. When updating, it will automatically swap them. - -* `gamedata/` - * This contains the `data/` and `config/` folders from the code. They are stored here and a symbolic link is created in the `gamecode/` folders pointing to here. - * This also makes backing them up easy. -(you may copy and paste your existing `data/` and `config/` folders here after the install script has ran.) - -* `bot/` - * This is a copy of the bot folder. you should run the bot from here.a link to nudge.py is created in the code folders so that the game can use the announcement feature. - * The start server script and update script will send messages out thru the bot, but if its not running or python is not installed, they will gracefully continue what they are doing. - -* `gamefolder/` - * This is a symbolic link pointing to current "live" folder. - * When the server is updated, we just point this to the updating folder so that the update takes place next round. - -* `gitrepo/` - * This contains the actual git repository, all changes in here will be overwritten during update operations, the configured branch will always be forced to track from live. - * On the first update of the day, the current code state is saved to a branch called `backup-YYYY-MM-DD` before updating, to make local reverts easy. - * Following update operations on the same day do not make branches because I was too lazy to detect such edge cases. - -* `bin/` - * This contains random helper batch files. - * Running these on their own is a bad idea. - -### Starting the game server: -To run the game server, Run `Start Server.bat` - -It will restart the game server if it shutdowns for any reason, with delays if the game server had recently been (re)started. - - -### Updating the server: -To update the server, just run `Update Server.bat`. (it will git pull, compile, all that jazz) - -(Note: Updating automatically does a code reset, clearing ALL changes to the local git repo, including test merges (explained below) and manual changes (This will not change any configs/settings or clear any data in the `gamedata/` folder)) - -Updates do not require the server to be shutdown, changes will apply next round if the server is currently running. - -Updates create a branch with the current state of the repo called `backup-YYYY-MM-DD` (only one is created in any given day) - -There is also a `Update without resetting.bat` file that does the same without resetting the code, used to update without clearing test merges or local changes. Prone to merge conflicts. - - -### Locally merge GitHub Pull Requests (PR test merge): -This feature currently only works if github is the remote(git server), it could be adapted for gitlab as well. - -Running these will merge the pull request then recompile the server, changes take effect the next round if the server is currently running. - -There are multiple flavors: -* `Update To PR.bat` - * Updates the server, resetting state, and merges a PR(Pull Request) by number. -* `Merge PR Without Updating.bat` - * Merges a PR without updating the server before hand or resetting the state (can be used to test merge multiple PRs). - -You can clear all active test merges using `Reset and Recompile.bat` (explained below) - -### Resetting, Recompiling, and troubleshooting. -* `Recompile.bat` - * Just recompiles the game code and stages it to apply next round -* `Reset and Recompile.bat` - * Like the above but resets the git repo to the state of the last update operation (clearing any changes or test merges) (Does not reset `gamedata/` data/settings) - * Generally used to clear out test merges -* `Fix Errors.bat` - * Requires the server not be running, rebuilds the staging A/B folders and then does all of the above. (Used to fix errors that can prevent the server from starting or cause it to crash on reboot) - -### Using the bot -1. Install python 3 -1. Edit the config in `bot/` as needed -1. Start the bot using the `Start Bot.bat` file - - -### Starting everything when the computer/server boots -1. Use autologin to set it up so the user account logs in at boot - * (There are some security implications with doing this, this is only a tiny bit more secure then putting a file on the hard drive with the server's remote login password titled `totally not a password.txt`) - * https://technet.microsoft.com/en-us/sysinternals/bb963905 -1. Setup something to run OnServerBoot.bat on login (setting up a link/shortcut to this file in the startup folder of the start menu works, creating a scheduled task in windows administrative tools also works) -1. OnServerBoot.bat does not update, but it does re-compile and reinitialize the A/B folders. - -### Updating byond after this is all setup -1. Download installer from byond website -1. Close watch dog/start server script -1. Wait for current round to end -1. Exit DreamDeamon -1. Run installer -1. After installing, run recompile.bat (or update if you want) -1. Run start server.bat - - - - diff --git a/tools/tgstation-server/Recompile.bat b/tools/tgstation-server/Recompile.bat deleted file mode 100644 index 40b746365e..0000000000 --- a/tools/tgstation-server/Recompile.bat +++ /dev/null @@ -1,51 +0,0 @@ -@echo off -@title Server Updater -set HOME = %USERPROFILE% - -call config.bat -call bin\getcurdate.bat - -echo This will handle recompiling the server, and applying the new version. -echo ready? - -timeout 120 - -if exist updating.lk ( - echo ERROR: A current update script has been detected running. if you know this is a mistake: - pause - echo Please be double sure that an update script is not currently running, if you think one might be, close this window. otherwise: - pause -) - -echo lock>updating.lk - -rem if the first arg to nudge.py is not a channel, it is treated as the "source" -if not defined UPDATE_LOG_CHANNEL set UPDATE_LOG_CHANNEL="UPDATER" - -call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Recompile job started" >nul 2>nul - -call bin\findab.bat - -call bin\copyfromgit.bat - -echo compiling change log -cd gamecode\%AB% -call python tools\ss13_genchangelog.py html/changelog.html html/changelogs -cd ..\.. - -echo Compiling game. -call bin\build.bat -if %DM_EXIT% neq 0 ( - echo DM compile failed. Aborting. - call python bot\nudge.py %UPDATE_LOG_CHANNEL% "DM compile failed Aborting recompile." >nul 2>nul - del /F /Q updating.lk >nul 2>nul - pause - exit /b 1 -) - -del updating.lk >nul 2>nul -rmdir /q gamefolder -mklink /d gamefolder gamecode\%AB% >nul -call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Recompile finished. Recompiled code will take place next round." >nul 2>nul -echo Done. The recompile will automatically take place at round restart. -timeout 300 \ No newline at end of file diff --git a/tools/tgstation-server/Reset and Recompile.bat b/tools/tgstation-server/Reset and Recompile.bat deleted file mode 100644 index f0127fd3ac..0000000000 --- a/tools/tgstation-server/Reset and Recompile.bat +++ /dev/null @@ -1,66 +0,0 @@ -@echo off -@title Server Updater -set HOME = %USERPROFILE% - -call config.bat -call bin\getcurdate.bat -call bin\findgit.bat - -echo This will handle resetting the git repo, recompiling the server, and applying the new version. -echo Ready? - -timeout 120 - -if exist updating.lk ( - echo ERROR: A current update script has been detected running. if you know this is a mistake: - pause - echo Please be double sure that an update script is not currently running, if you think one might be, close this window. otherwise: - pause -) - -echo lock>updating.lk - -rem if the first arg to nudge.py is not a channel, it is treated as the "source" -if not defined UPDATE_LOG_CHANNEL set UPDATE_LOG_CHANNEL="UPDATER" - -call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Reset local changes job started" >nul 2>nul - -cd gitrepo -git reset --hard -git clean -df -cd .. -echo ################################## -echo ################################## -echo: -echo Resetting done, compiling in 10 seconds. If you want to preform other actions (like test merges) You can close this now and do them. -echo: -del updating.lk >nul 2>nul - -timeout 10 - -echo lock>updating.lk -call bin\findab.bat - -call bin\copyfromgit.bat - -echo compiling change log -cd gamecode\%AB% -call python tools\ss13_genchangelog.py html/changelog.html html/changelogs -cd ..\.. - -echo Compiling game. -call bin\build.bat -if %DM_EXIT% neq 0 ( - echo DM compile failed. Aborting. - call python bot\nudge.py %UPDATE_LOG_CHANNEL% "DM compile failed Aborting Reset." >nul 2>nul - del /F /Q updating.lk >nul 2>nul - pause - exit /b 1 -) - -del updating.lk >nul 2>nul -rmdir /q gamefolder -mklink /d gamefolder gamecode\%AB% >nul -call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Reset finished. Reset will take place next round." >nul 2>nul -echo Done. The Reset will automatically take place at round restart. -timeout 300 diff --git a/tools/tgstation-server/Start Bot.bat b/tools/tgstation-server/Start Bot.bat deleted file mode 100644 index a3b1cba0d8..0000000000 --- a/tools/tgstation-server/Start Bot.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -@title NT IRC BOT -echo Welcome to the start bot script, This will start the bot and make sure it stays running. This assumes python in the path. To continue, press any key or wait 15 seconds. -timeout 15 -cd bot -:START -call ..\bin\getcurdate.bat -if not exist ..\gamedata\data\logs\bot mkdir ..\gamedata\data\logs\bot\ -cls -echo NT IRC Bot -echo Bot Running. Watching for Bot exits. -start /WAIT python minibot.py ^>^>..\gamedata\data\logs\bot\bot-%CUR_DATE%.txt -cls -echo NT IRC Bot -echo Bot exit detected. Restarting in 15 minutes. -REM this is so long because we want to avoid the bot spamming the server and getting klined/glined/or akilled -timeout 900 - -goto :START diff --git a/tools/tgstation-server/Start Server.bat b/tools/tgstation-server/Start Server.bat deleted file mode 100644 index 0312a22a5c..0000000000 --- a/tools/tgstation-server/Start Server.bat +++ /dev/null @@ -1,39 +0,0 @@ -@echo off -@title SERVER WATCHDOG -call config.bat -call bin\findbyond.bat - -echo Welcome to the start server watch dog script, This will start the server and make sure it stays running. To continue, press any key or wait 30 seconds. -timeout 30 - -if not exist gamedata\data\logs\runtimes mkdir gamedata\data\logs\runtimes\ - -@call python bot\nudge.py "WATCHDOG" "Watch Dog online. Starting server" >nul 2>nul -:START - -call bin\getcurdate.bat - -call bin\getunixtime.bat UNIXTIME - -echo %UNIXTIME% - -set STARTTIME=%UNIXTIME% - -cls -echo Watch Dog. -echo Server Running. Watching for server exits. -start /WAIT /ABOVENORMAL "" dreamdaemon.exe gamefolder\%PROJECTNAME%.dmb -port %PORT% -trusted -close -public -verbose -cls - -call bin\getunixtime.bat UNIXTIME - -SET /A Result=%UNIXTIME% - %STARTTIME% -SET /A Result=180 - (%Result%/3) -if %Result% LSS 0 set /A Result=0 - -echo Watch Dog. -echo Server exit detected. Restarting in %Result% seconds. -@python bot\nudge.py "WATCHDOG" "Server exit detected. Restarting server in %Result% seconds." >nul 2>nul -timeout %Result% - -goto :START diff --git a/tools/tgstation-server/Update Server.bat b/tools/tgstation-server/Update Server.bat deleted file mode 100644 index 1d7d8644af..0000000000 --- a/tools/tgstation-server/Update Server.bat +++ /dev/null @@ -1,99 +0,0 @@ -@echo off -title Server Updater -SETLOCAL ENABLEDELAYEDEXPANSION -set HOME = %USERPROFILE% - -call config.bat -call bin\getcurdate.bat - -echo This will handle downloading git, compiling the server, and applying the update. -echo Ready? - -timeout 120 - -if exist updating.lk ( - echo ERROR: A current update script has been detected running. if you know this is a mistake: - pause - echo Please be double sure that an update script is not currently running, if you think one might be, close this window. otherwise: - pause -) - -if exist prtestjob.lk ( - call bin/activepr.bat - echo WARNING: The server is currently testing the following PRs !PR!. This update would override that. Do you still want to update? Close this window if not, otherwise: - pause -) - -del /F /Q prtestjob.lk >nul 2>nul - -echo lock>updating.lk - bin/activepr.bat - -rem if the first arg to nudge.py is not a channel, it is treated as the "source" -if not defined UPDATE_LOG_CHANNEL set UPDATE_LOG_CHANNEL="UPDATER" - -call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Update job started" >nul 2>nul - -call bin\updategit.bat -if %GIT_EXIT% neq 0 ( - echo git pull failed. Aborting update - call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Git fetch failed. Aborting update" - del updating.lk >nul 2>nul - pause - exit /b 1 -) - -if defined PUSHCHANGELOGTOGIT ( - cd gitrepo - echo compiling change log - python tools\ss13_genchangelog.py html/changelog.html html/changelogs - if !ERRORLEVEL! == 0 ( - echo pushing compiled changelog to server - git add -u html/changelog.html - git add -u html/changelogs - git commit -m "Automatic changelog compile, [ci skip]" - if !ERRORLEVEL! == 0 ( - git push - ) - REM an error here generally means there was nothing to commit. - ) - cd .. -) - -echo ################################## -echo ################################## -echo: -echo Updating done, compiling in 10 seconds. If you want to preform other actions (like test merge) You can close this now and do them. -echo: -del updating.lk >nul 2>nul - -timeout 10 - -echo lock>updating.lk -call bin\findab.bat - -call bin\copyfromgit.bat - -if not defined PUSHCHANGELOGTOGIT ( - echo compiling change log - cd gamecode\%AB% - call python tools\ss13_genchangelog.py html/changelog.html html/changelogs - cd ..\.. -) - -echo Compiling game. -call bin\build.bat -if %DM_EXIT% neq 0 ( - echo DM compile failed. Aborting. - call python bot\nudge.py %UPDATE_LOG_CHANNEL% "DM compile failed Aborting update." >nul 2>nul - del /F /Q updating.lk >nul 2>nul - pause - exit /b 1 -) - -del updating.lk >nul 2>nul -rmdir /q gamefolder -mklink /d gamefolder gamecode\%AB% >nul -call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Update job finished. Update will take place next round." >nul 2>nul -echo Done. The update will automatically take place at round restart. -timeout 300 \ No newline at end of file diff --git a/tools/tgstation-server/Update without resetting.bat b/tools/tgstation-server/Update without resetting.bat deleted file mode 100644 index 9a08573fb1..0000000000 --- a/tools/tgstation-server/Update without resetting.bat +++ /dev/null @@ -1,100 +0,0 @@ -@echo off -@title Server Updater -SETLOCAL ENABLEDELAYEDEXPANSION -set HOME = %USERPROFILE% - -call config.bat -call bin\getcurdate.bat -call bin\findgit.bat - -echo This will update the server without resetting local changes like test merges. -echo Note: This doesn't update the changelog like a normal update does. -echo Ready? - -timeout 120 - -if exist updating.lk ( - echo ERROR: A current update script has been detected running. if you know this is a mistake: - pause - echo Please be double sure that an update script is not currently running, if you think one might be, close this window. otherwise: - pause -) - -echo lock>updating.lk - -rem if the first arg to nudge.py is not a channel, it is treated as the "source" -if not defined UPDATE_LOG_CHANNEL set UPDATE_LOG_CHANNEL="UPDATER" - -call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Update job started (No reset mode)" >nul 2>nul - -cd gitrepo -git fetch origin -if %ERRORLEVEL% neq 0 ( - cd .. - echo git fetch failed. Aborting update. - call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Git fetch failed. Aborting update" - del updating.lk >nul 2>nul - pause - exit /b 1 -) -git merge origin/%REPO_BRANCH% -if %ERRORLEVEL% neq 0 ( - cd .. - echo git merge of upstream master failed, aborting update. - call python bot\nudge.py %UPDATE_LOG_CHANNEL% "git merge of upstream master failed, aborting update." >nul 2>nul - cd gitrepo - git merge --abort - if %ERRORLEVEL% neq 0 ( - echo ERROR: Error aborting update, resetting repo. - cd .. - call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Error aborting merge, Resetting git repo" >nul 2>nul - cd gitrepo - git reset --hard - git clean -fd - bin/activepr.bat - del /F /Q prtestjob.lk >nul 2>nul - echo NOTICE: We had to reset the repo's state, all active test merges were undone. - ) - cd .. - del updating.lk >nul 2>nul - pause - exit /b 1 -) -cd .. - - -echo ################################## -echo ################################## -echo: -echo In place update done, compiling in 10 seconds. If you want to preform other actions (like more test merges) You can close this now and do them. -echo: -del updating.lk >nul 2>nul - -timeout 10 - -echo lock>updating.lk -call bin\findab.bat - -call bin\copyfromgit.bat - -echo compiling change log -cd gamecode\%AB% -call python tools\ss13_genchangelog.py html/changelog.html html/changelogs -cd ..\.. - -echo Compiling game. -call bin\build.bat -if %DM_EXIT% neq 0 ( - echo DM compile failed. Aborting. - call python bot\nudge.py %UPDATE_LOG_CHANNEL% "DM compile failed Aborting update." >nul 2>nul - del /F /Q updating.lk >nul 2>nul - pause - exit /b 1 -) - -del updating.lk >nul 2>nul -rmdir /q gamefolder -mklink /d gamefolder gamecode\%AB% >nul -call python bot\nudge.py %UPDATE_LOG_CHANNEL% "Update job finished. Update will take place next round." >nul 2>nul -echo Done. The update will automatically take place at round restart. -timeout 300 diff --git a/tools/tgstation-server/bin/activepr.bat b/tools/tgstation-server/bin/activepr.bat deleted file mode 100644 index 554142925d..0000000000 --- a/tools/tgstation-server/bin/activepr.bat +++ /dev/null @@ -1 +0,0 @@ -set PR= \ No newline at end of file diff --git a/tools/tgstation-server/bin/build.bat b/tools/tgstation-server/bin/build.bat deleted file mode 100644 index 049154ce92..0000000000 --- a/tools/tgstation-server/bin/build.bat +++ /dev/null @@ -1,26 +0,0 @@ -call config.bat -call bin/findbyond.bat -set DME_FOLDER=gamefolder\ -if defined AB set DME_FOLDER=gamecode\%AB%\ - -set DME_LOCATION=%DME_FOLDER%%PROJECTNAME%.dme -set MDME_LOCATION=%DME_FOLDER%%PROJECTNAME%.mdme - -@del %MDME_LOCATION% >nul 2>nul -if defined MAPROTATE set MAPFILE=%MAPROTATE% -if not defined MAPFILE goto BUILD - -echo #define MAP_OVERRIDE >>%MDME_LOCATION% -echo #include "_maps\%MAPFILE%.dm" >>%MDME_LOCATION% - -:BUILD -echo #define SERVERTOOLS 1 >>%MDME_LOCATION% -echo #define PUTONHUB 1 >>%MDME_LOCATION% -type %DME_LOCATION% >>%MDME_LOCATION% - -dm -clean %MDME_LOCATION% -set DM_EXIT=%ERRORLEVEL% -@del %DME_FOLDER%%PROJECTNAME%.dmb >nul 2>nul -@del %DME_FOLDER%%PROJECTNAME%.rsc >nul 2>nul -@move %DME_FOLDER%%PROJECTNAME%.mdme.dmb %DME_FOLDER%%PROJECTNAME%.dmb >nul 2>nul -@move %DME_FOLDER%%PROJECTNAME%.mdme.rsc %DME_FOLDER%%PROJECTNAME%.rsc >nul 2>nul diff --git a/tools/tgstation-server/bin/copyfromgit.bat b/tools/tgstation-server/bin/copyfromgit.bat deleted file mode 100644 index 4de01db772..0000000000 --- a/tools/tgstation-server/bin/copyfromgit.bat +++ /dev/null @@ -1,20 +0,0 @@ -echo Removing old files -rem delete the symlinks manually to ensure their targets don't get recursively deleted -rmdir /q gamecode\%AB%\data >nul 2>nul -rmdir /q gamecode\%AB%\config >nul 2>nul -del /q gamecode\%AB%\nudge.py >nul 2>nul -del /q gamecode\%AB%\libmysql.dll >nul 2>nul - -del /S /F /Q gamecode\%AB%\ >nul 2>nul - -echo Copying files -xcopy gitrepo gamecode\%AB% /Y /X /K /R /H /I /C /V /E /Q /EXCLUDE:copyexclude.txt >nul -mkdir gamecode\%AB%\.git\logs -copy gitrepo\.git\logs\HEAD gamecode\%AB%\.git\logs\HEAD /D /V /Y >nul - -mklink gamecode\%AB%\nudge.py ..\..\bot\nudge.py >nul -rmdir /q gamecode\%AB%\data >nul 2>nul -rmdir /s /q gamecode\%AB%\data >nul 2>nul -mklink /d gamecode\%AB%\data ..\..\gamedata\data >nul -mklink /d gamecode\%AB%\config ..\..\gamedata\config >nul -mklink gamecode\%AB%\libmysql.dll ..\..\gamedata\libmysql.dll >nul diff --git a/tools/tgstation-server/bin/findab.bat b/tools/tgstation-server/bin/findab.bat deleted file mode 100644 index 0c24a7571b..0000000000 --- a/tools/tgstation-server/bin/findab.bat +++ /dev/null @@ -1,45 +0,0 @@ -del gamecode\a\updater.temp >nul 2>nul -del gamecode\b\updater.temp >nul 2>nul - -echo test >gamefolder\updater.temp - -if exist gamefolder\%PROJECTNAME%.rsc.lk ( - rem we attempt to delete the lock file to see if the server is currently running. - del /q gamefolder\%PROJECTNAME%.rsc.lk >nul 2>nul - if exist gamefolder\%PROJECTNAME%.rsc.lk set RUNNING=1 -) - -if exist gamecode\a\updater.temp ( - if defined RUNNING ( - echo Current folder detected to be the "A" folder. Game is currently running. Updating to the "B" folder. - set AB=b - ) else ( - echo Current folder detected to be the "A" folder. Game is not currently running, Updating to the "A" folder. - if exist gamecode\b\%PROJECTNAME%.rsc.lk ( - rem we attempt to delete the lock file to see if the server is currently running. - del /q gamecode\b\%PROJECTNAME%.rsc.lk >nul 2>nul - if exist gamecode\b\%PROJECTNAME%.rsc.lk set RUNNING=1 - rmdir /q gamefolder - mklink /d gamefolder gamecode\b >nul - echo Game is in actually currently running on the "B" folder, Resetting current folder to the "B" folder first - ) - set AB=a - ) -) else if exist gamecode\b\updater.temp ( - if defined RUNNING ( - echo Current folder detected to be the "B" folder. Game is currently running, Updating to the "A" folder. - set AB=a - ) else ( - echo Current folder detected to be the "B" folder. Game is not currently running, Updating to the "B" folder. - if exist gamecode\a\%PROJECTNAME%.rsc.lk ( - rem we attempt to delete the lock file to see if the server is currently running. - del /q gamecode\a\%PROJECTNAME%.rsc.lk >nul 2>nul - if exist gamecode\a\%PROJECTNAME%.rsc.lk set RUNNING=1 - rmdir /q gamefolder - mklink /d gamefolder gamecode\a >nul - echo Game is in actually currently running on the "A" folder, Resetting current folder to the "A" folder first - ) - set AB=b - ) -) -del gamefolder\updater.temp >nul 2>nul \ No newline at end of file diff --git a/tools/tgstation-server/bin/findbyond.bat b/tools/tgstation-server/bin/findbyond.bat deleted file mode 100644 index ff07af2dd6..0000000000 --- a/tools/tgstation-server/bin/findbyond.bat +++ /dev/null @@ -1,26 +0,0 @@ - -@dm.exe -h >nul 2>nul -IF %ERRORLEVEL% NEQ 9009 ( - goto :eof -) - -set PATH=%PATH%;%BYOND_LOCATION_PATH% -@dm.exe -h >nul 2>nul -IF %ERRORLEVEL% NEQ 9009 ( - goto :eof -) - -@"c:\Program Files (x86)\BYOND\bin\dm.exe" -h >nul 2>nul -IF %ERRORLEVEL% NEQ 9009 ( - set "PATH=%PATH%;c:\Program Files (x86)\BYOND\bin\" - goto :eof -) -@"c:\Program Files\BYOND\bin\dm.exe" -h >nul 2>nul -IF %ERRORLEVEL% NEQ 9009 ( - set "PATH=%PATH%;c:\Program Files\BYOND\bin\" - goto :eof -) - -echo byond not found. Aborting. If byond is installed, set the GIT_LOCATION variable inside config.bat -timeout 60 -exit 11 \ No newline at end of file diff --git a/tools/tgstation-server/bin/findgit.bat b/tools/tgstation-server/bin/findgit.bat deleted file mode 100644 index 9c802b54c6..0000000000 --- a/tools/tgstation-server/bin/findgit.bat +++ /dev/null @@ -1,31 +0,0 @@ -REM check if git is already in path -git --version >nul 2>nul && goto :eof - -REM now lets try our override. -set PATH=%PATH%;%GIT_LOCATION_PATH% -@git --version >nul 2>nul && goto :eof - -REM credit to sschuberth@http://stackoverflow.com/questions/8507368/finding-the-path-where-git-is-installed-on-a-windows-system -REM Read the Git for Windows installation path from the Registry. - -:REG_QUERY -for /f "skip=2 delims=: tokens=1*" %%a in ('reg query "HKLM\SOFTWARE%WOW%\Microsoft\Windows\CurrentVersion\Uninstall\Git_is1" /v InstallLocation 2^> nul') do ( - for /f "tokens=3" %%z in ("%%a") do ( - set GIT=%%z:%%b - ) -) -if "%GIT%"=="" ( - if "%WOW%"=="" ( - rem Attempt to find it on the 32bit register section - set WOW=\Wow6432Node - goto REG_QUERY - ) -) - -set PATH=%GIT%bin;%PATH% - -@git --version >nul 2>nul && goto :eof - -echo Git not found. Aborting. If git is installed, set the GIT_LOCATION variable inside config.bat -timeout 60 -exit 10 \ No newline at end of file diff --git a/tools/tgstation-server/bin/getcurdate.bat b/tools/tgstation-server/bin/getcurdate.bat deleted file mode 100644 index f5360756ce..0000000000 --- a/tools/tgstation-server/bin/getcurdate.bat +++ /dev/null @@ -1,2 +0,0 @@ -FOR /f %%a in ('WMIC OS GET LocalDateTime ^| find "."') DO set DTS=%%a -set CUR_DATE=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% \ No newline at end of file diff --git a/tools/tgstation-server/bin/getunixtime.bat b/tools/tgstation-server/bin/getunixtime.bat deleted file mode 100644 index 2b4115faab..0000000000 --- a/tools/tgstation-server/bin/getunixtime.bat +++ /dev/null @@ -1,12 +0,0 @@ -REM setlocal -call :GetUnixTime UNIXTIME -goto :EOF - -:GetUnixTime -REM setlocal enableextensions -for /f %%x in ('wmic path win32_utctime get /format:list ^| findstr "="') do ( - set %%x) -set /a z=(14-100%Month%%%100)/12, y=10000%Year%%%10000-z -set /a ut=y*365+y/4-y/100+y/400+(153*(100%Month%%%100+12*z-3)+2)/5+Day-719469 -set /a ut=ut*86400+100%Hour%%%100*3600+100%Minute%%%100*60+100%Second%%%100 -endlocal & set "%1=%ut%" & goto :EOF \ No newline at end of file diff --git a/tools/tgstation-server/bin/unixtime.vbs b/tools/tgstation-server/bin/unixtime.vbs deleted file mode 100644 index f5e1ae78f0..0000000000 --- a/tools/tgstation-server/bin/unixtime.vbs +++ /dev/null @@ -1 +0,0 @@ -WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now()) \ No newline at end of file diff --git a/tools/tgstation-server/bin/updategit.bat b/tools/tgstation-server/bin/updategit.bat deleted file mode 100644 index e16cfc3922..0000000000 --- a/tools/tgstation-server/bin/updategit.bat +++ /dev/null @@ -1,12 +0,0 @@ -call bin\findgit.bat -echo Updating repo - -cd gitrepo - -git branch backup-%CUR_DATE% >nul 2>nul -git fetch -set GIT_EXIT=%ERRORLEVEL% - -git reset origin/%REPO_BRANCH% --hard - -cd .. \ No newline at end of file diff --git a/tools/tgstation-server/config.bat b/tools/tgstation-server/config.bat deleted file mode 100644 index eb3ecd13e7..0000000000 --- a/tools/tgstation-server/config.bat +++ /dev/null @@ -1,42 +0,0 @@ -@echo off -REM Server Tools configuration file. Lines starting with rem are comments and ignored. - -REM This must be set to the name of your dme without the .dme part. (should be fine leaving this alone unless you renamed the code) -set PROJECTNAME=tgstation - - -REM location of the repo. (use an ssh url if you plan to push compiled changlogs) -REM Only set during install, do not re-run install.bat if you change this, instead manually change the remote of the gitrepo folder using git tools -set REPO_URL=https://github.com/tgstation/-tg-station.git - - -REM What branch of the repo to use. -set REPO_BRANCH=master - - -REM Override Map (This disables map roation and forces the selected map to always be loaded) -REM set MAPFILE=tgstation2 -REM set MAPFILE=metastation - - -REM port to use when starting the server -set PORT=2337 - - -REM This is the channel to log updates to. Leave blank to log to the bot's default logging channel (this is done via the tgstation minibot bot, optional) -set UPDATE_LOG_CHANNEL=#devbus,#coderbus,#tgstation13 - - -REM Attempt to push the compiled changelog to the configured git server? (set to anything) -REM This requires you configure git with authentication for the upstream server. (git for windows users should just put an ssh key in c:\users\USERNAME_HERE\.ssh\ as the filename id_rsa) And you should have installed this with a git, ssh, or file url) -set PUSHCHANGELOGTOGIT= - - -REM location of git. The script will attempt to auto detect this, but if it fails, you can set it manually. -REM github for windows users see http://www.chambaud.com/2013/07/08/adding-git-to-path-when-using-github-for-windows/ (an example is provided below) - -set GIT_LOCATION_PATH= -REM set GIT_LOCATION_PATH=C:\Users\Administrator\AppData\Local\GitHub\PortableGit_c2ba306e536fdf878271f7fe636a147ff37326ad\bin;C:\Users\Administrator\AppData\Local\GitHub\PortableGit_c2ba306e536fdf878271f7fe636a147ff37326ad\cmd - -REM path to the byond bin folder. (same rules as git path above, almost always auto detected, but you could point this to the output of the zip version for install-less setups, and even abuse that to make updating byond versions less of a pain by just changing this config and then crashing the server.) -set BYOND_LOCATION_PATH= diff --git a/tools/tgstation-server/copyexclude.txt b/tools/tgstation-server/copyexclude.txt deleted file mode 100644 index 3cf4643303..0000000000 --- a/tools/tgstation-server/copyexclude.txt +++ /dev/null @@ -1,9 +0,0 @@ -//This is a list of files to exclude from copying. See xcopy's documentation for /exclude for more info. -// - -gitrepo\config\ -gitrepo\data\ -gitrepo\bot\ -gitrepo\.git\ -gitrepo\libmysql.dll - diff --git a/tools/tgstation-server/disable crash dialog.reg b/tools/tgstation-server/disable crash dialog.reg deleted file mode 100644 index d1c477a445..0000000000 --- a/tools/tgstation-server/disable crash dialog.reg +++ /dev/null @@ -1,4 +0,0 @@ -Windows Registry Editor Version 5.00 - -[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting] -"DontShowUI"=dword:00000001 diff --git a/tools/tgstation-server/install.bat b/tools/tgstation-server/install.bat deleted file mode 100644 index f37908966a..0000000000 --- a/tools/tgstation-server/install.bat +++ /dev/null @@ -1,81 +0,0 @@ -@echo off -@title Server Tools Installer. -set HOME = %USERPROFILE% -call config.bat - -echo This will download the game code from git and install the all the files and folders and symbolic links needed to use the server tools in to the current directory. - -echo This requires git be installed. - -echo Once this is done, you can safely delete this file if you wish. - -echo Ready? -pause - -call bin/findgit.bat - -echo Downloading repo.... -git clone %REPO_URL% gitrepo -IF %ERRORLEVEL% NEQ 0 ( - echo git clone failed. aborting. - pause - goto ABORT -) -cd gitrepo -git checkout %REPO_BRANCH% -cd .. - -echo Repo downloaded. -echo Setting up folders... -mkdir gamecode\a -mkdir gamecode\b -mkdir gamedata -mkdir bot - -echo Copying things around.... -echo (1/3) -xcopy gitrepo\data gamedata\data /Y /X /K /R /H /I /C /V /E /Q >nul -xcopy gitrepo\config gamedata\config /Y /X /K /R /H /I /C /V /E /Q >nul -xcopy gitrepo\bot bot /Y /X /K /R /H /I /C /V /E /Q >nul -copy gitrepo\libmysql.dll gamedata\libmysql.dll /D /V /Y >nul -echo (2/3) -xcopy gitrepo gamecode\a /Y /X /K /R /H /I /C /V /E /Q /EXCLUDE:copyexclude.txt >nul -mkdir gamecode\a\.git\logs\ -copy gitrepo\.git\logs\HEAD gamecode\a\.git\logs\HEAD /D /V /Y >nul -echo (3/3) -xcopy gitrepo gamecode\b /Y /X /K /R /H /I /C /V /E /Q /EXCLUDE:copyexclude.txt >nul -mkdir gamecode\b\.git\logs >nul -copy gitrepo\.git\logs\HEAD gamecode\b\.git\logs\HEAD /D /V /Y >nul -echo done. - -echo Setting up symbolic links. -mklink gamecode\a\nudge.py ..\..\bot\nudge.py -mklink gamecode\a\libmysql.dll ..\..\gamedata\libmysql.dll -mklink /d gamecode\a\data ..\..\gamedata\data -mklink /d gamecode\a\config ..\..\gamedata\config - -mklink gamecode\b\nudge.py ..\..\bot\nudge.py -mklink gamecode\b\libmysql.dll ..\..\gamedata\libmysql.dll -mklink /d gamecode\b\data ..\..\gamedata\data -mklink /d gamecode\b\config ..\..\gamedata\config - -mklink /d gamefolder gamecode\a - -echo prepping python (if installed) -pip install PyYaml -pip install beautifulsoup4 - -echo Compiling for the first time. - -echo Compiling change log. -cd gamefolder -call python tools\ss13_genchangelog.py html/changelog.html html/changelogs -cd .. -echo Compiling game. -call bin\build.bat -if %DM_EXIT% neq 0 echo DM compile failed. - -echo Done. You may start the server using the start server program or change the game config in gamedata\config -pause - -:ABORT