diff --git a/_maps/RandomZLevels/away_mission/TheBeach.dmm b/_maps/RandomZLevels/away_mission/TheBeach.dmm index 6877eb4b35..80a649bcc8 100644 --- a/_maps/RandomZLevels/away_mission/TheBeach.dmm +++ b/_maps/RandomZLevels/away_mission/TheBeach.dmm @@ -1001,6 +1001,20 @@ /obj/item/clothing/glasses/heat, /turf/open/floor/plating/beach/sand, /area/awaymission/beach) +"np" = ( +/obj/machinery/shower{ + dir = 8 + }, +/obj/effect/turf_decal/sand, +/turf/open/floor/plasteel/white, +/area/awaymission/beach) +"Vi" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/effect/turf_decal/sand, +/turf/open/floor/plasteel/white, +/area/awaymission/beach) (1,1,1) = {" aa @@ -7892,10 +7906,10 @@ ak ak ak ak -ak -ak -ak -ak +Vi +Vi +Vi +Vi ak ba ba @@ -8213,10 +8227,10 @@ ak ak ak ak -ak -ak -ak -ak +np +np +np +np ak ba ba diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index b2478c540c..92f9ff0c53 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -1648,19 +1648,12 @@ /turf/open/floor/plating, /area/maintenance/starboard) "acx" = ( -/obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/obj/effect/landmark/xeno_spawn, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/freezer, +/area/commons/toilet/restrooms) "acy" = ( /obj/machinery/door/airlock/external{ name = "External Airlock"; @@ -5799,9 +5792,6 @@ /turf/open/floor/plating, /area/security/brig) "ajd" = ( -/obj/item/kirbyplants{ - icon_state = "plant-22" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, @@ -5812,6 +5802,7 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, +/obj/structure/closet/crate/bin, /turf/open/floor/plasteel, /area/hallway/primary/port/fore) "aje" = ( @@ -6470,12 +6461,10 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/structure/cable/white{ - icon_state = "2-8" - }, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/chair, /turf/open/floor/plasteel{ heat_capacity = 1e+006 }, @@ -6491,6 +6480,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/chair, /turf/open/floor/plasteel{ heat_capacity = 1e+006 }, @@ -6506,6 +6496,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/cable/white{ + icon_state = "2-8" + }, /turf/open/floor/plasteel{ heat_capacity = 1e+006 }, @@ -7140,26 +7133,17 @@ "ald" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, -/area/commons/toilet/restrooms) +/area/service/lawoffice) "ale" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - name = "Primary Restroom" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/service/lawoffice) "alf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/commons/toilet/restrooms) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/service/lawoffice) "alg" = ( /turf/closed/wall/r_wall, /area/command/teleporter) @@ -7616,35 +7600,29 @@ /turf/open/floor/plasteel, /area/hallway/primary/port/fore) "alT" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, +/obj/item/kirbyplants{ + icon_state = "plant-22" + }, /obj/machinery/newscaster{ pixel_y = 32 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/turf/open/floor/wood, +/area/service/lawoffice) "alU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/turf/open/floor/wood, +/area/service/lawoffice) "alV" = ( -/obj/structure/urinal{ - pixel_y = 28 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/obj/structure/window/reinforced/spawner/east, +/obj/structure/chair, +/turf/open/floor/wood, +/area/service/lawoffice) "alW" = ( /obj/structure/urinal{ pixel_y = 28 @@ -7652,12 +7630,9 @@ /turf/open/floor/plasteel/freezer, /area/commons/toilet/restrooms) "alX" = ( -/obj/structure/closet/crate/bin, -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/obj/machinery/vending/wardrobe/law_wardrobe, +/turf/open/floor/wood, +/area/service/lawoffice) "alY" = ( /obj/machinery/shieldwallgen, /obj/machinery/button/door{ @@ -8145,50 +8120,31 @@ /turf/open/floor/plasteel, /area/security/brig) "amO" = ( -/obj/structure/mirror{ - pixel_x = -26 - }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/turf/open/floor/wood, +/area/service/lawoffice) "amP" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -26 - }, -/obj/machinery/light/small, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, +/turf/open/floor/wood, +/area/service/lawoffice) +"amQ" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced/spawner/east, +/obj/structure/window/reinforced/spawner, +/obj/item/clipboard, +/obj/item/folder/red, +/turf/open/floor/wood, +/area/service/lawoffice) +"amR" = ( /obj/structure/cable/white{ icon_state = "1-4" }, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) -"amQ" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) -"amR" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/obj/machinery/light/small, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/turf/open/floor/wood, +/area/service/lawoffice) "amS" = ( /obj/machinery/camera{ - c_tag = "Locker Room Toilets"; + c_tag = "Law Office"; dir = 8 }, /obj/machinery/power/apc{ @@ -8200,8 +8156,11 @@ /obj/structure/cable/white{ icon_state = "0-8" }, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/obj/structure/rack, +/obj/item/storage/briefcase, +/obj/item/storage/briefcase, +/turf/open/floor/wood, +/area/service/lawoffice) "amT" = ( /obj/structure/table/reinforced, /obj/item/stack/cable_coil/white, @@ -8667,15 +8626,15 @@ /turf/open/floor/plasteel, /area/hallway/primary/port/fore) "anJ" = ( -/obj/machinery/door/airlock{ - name = "Toilet Unit" +/obj/structure/chair{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 }, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/turf/open/floor/wood, +/area/service/lawoffice) "anK" = ( /obj/structure/closet/secure_closet/engineering_chief, /obj/effect/turf_decal/tile/neutral{ @@ -9244,40 +9203,30 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "aoC" = ( -/obj/effect/decal/cleanable/vomit/old, -/obj/structure/toilet{ - dir = 8 +/obj/structure/chair{ + dir = 4 }, -/obj/machinery/newscaster{ - pixel_x = -32 - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/turf/open/floor/wood, +/area/service/lawoffice) "aoD" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/newscaster{ - pixel_x = -32 - }, /obj/machinery/light/small, -/obj/effect/landmark/blobstart, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/obj/structure/table/wood, +/obj/structure/window/reinforced/spawner/west, +/obj/item/folder/blue, +/turf/open/floor/carpet/green/airless, +/area/service/lawoffice) "aoE" = ( -/obj/structure/toilet{ - dir = 8 +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 }, -/obj/machinery/newscaster{ - pixel_x = -32 +/obj/structure/filingcabinet/employment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 }, -/obj/machinery/light/small, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/freezer, -/area/commons/toilet/restrooms) +/turf/open/floor/wood, +/area/service/lawoffice) "aoF" = ( /obj/structure/table/reinforced, /obj/item/stock_parts/cell/high, @@ -12446,8 +12395,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/white/corner, /area/hallway/primary/starboard/fore) "atq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -13151,8 +13099,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/white/corner, /area/hallway/primary/starboard/fore) "auq" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible, @@ -13814,23 +13761,23 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/white/corner, /area/hallway/primary/starboard/fore) "avv" = ( -/obj/machinery/shieldgen, -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) -"avw" = ( -/obj/machinery/shieldgen, -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/structure/mirror{ + pixel_x = -26 }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/freezer, +/area/commons/toilet/restrooms) "avx" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible, /obj/machinery/computer/atmos_control/tank/oxygen_tank{ @@ -14542,11 +14489,9 @@ }, /area/hallway/primary/starboard/fore) "awz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel/freezer, +/area/commons/toilet/restrooms) "awA" = ( /turf/open/floor/engine/o2, /area/engineering/atmos) @@ -14918,21 +14863,37 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "axf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/obj/structure/table, +/obj/effect/turf_decal/bot, +/obj/structure/bedsheetbin/towel, +/obj/structure/sign/poster/official/cleanliness{ + pixel_y = -32 }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = -26; + pixel_y = -26 + }, +/turf/open/floor/plasteel/freezer, +/area/commons/toilet/restrooms) "axg" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 }, -/obj/item/wrench, -/obj/item/wirecutters, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/obj/effect/turf_decal/bot, +/obj/machinery/light_switch{ + pixel_x = 8; + pixel_y = -24 + }, +/turf/open/floor/plasteel/freezer, +/area/commons/toilet/restrooms) "axh" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance{ @@ -25739,7 +25700,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/rack, +/obj/machinery/shieldgen, /turf/open/floor/plasteel, /area/maintenance/port/aft) "aOu" = ( @@ -25925,6 +25886,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, +/obj/structure/cable/white{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/maintenance/port/aft) "aOJ" = ( @@ -27992,6 +27956,7 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/machinery/shieldgen, /turf/open/floor/plasteel, /area/maintenance/port/aft) "aSg" = ( @@ -30048,7 +30013,6 @@ /turf/open/floor/plasteel, /area/maintenance/port/aft) "aVS" = ( -/obj/structure/bookcase/random/fiction, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -30059,6 +30023,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/bookcase/random/nonfiction, /turf/open/floor/plasteel/dark, /area/service/library) "aVT" = ( @@ -30068,7 +30033,6 @@ /turf/open/floor/plasteel/dark, /area/service/library) "aVU" = ( -/obj/structure/bookcase/random/adult, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -30079,10 +30043,11 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/bookcase/random/reference, /turf/open/floor/plasteel/dark, /area/service/library) "aVV" = ( -/obj/structure/bookcase/random/adult, +/obj/structure/bookcase/random/religion, /turf/open/floor/plasteel/dark, /area/service/library) "aVW" = ( @@ -30814,11 +30779,12 @@ /turf/closed/wall, /area/service/library) "aXg" = ( -/obj/structure/bookcase/random/nonfiction, +/obj/structure/sign/painting{ + pixel_y = -32 + }, /turf/open/floor/plasteel/dark, /area/service/library) "aXh" = ( -/obj/structure/bookcase/random/nonfiction, /obj/machinery/light, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -30847,7 +30813,6 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "aXj" = ( -/obj/structure/bookcase/random/reference, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -30858,10 +30823,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/service/library) -"aXk" = ( -/obj/structure/bookcase/random/reference, +/obj/structure/sign/painting{ + pixel_y = -32 + }, /turf/open/floor/plasteel/dark, /area/service/library) "aXl" = ( @@ -32195,7 +32159,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/structure/bookcase{ +/obj/structure/bookcase/random/adult{ + desc = "Oh whoa, what's this?"; name = "Forbidden Knowledge" }, /turf/open/floor/wood, @@ -36129,6 +36094,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/maintenance/starboard/aft) "bfs" = ( @@ -36910,74 +36876,24 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/sand, +/obj/structure/cable/white{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/dark, /area/maintenance/starboard/aft) "bgv" = ( -/obj/machinery/biogenerator, -/obj/item/wrench, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/weather, +/obj/effect/turf_decal/weather, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/aft) -"bgw" = ( -/obj/item/kirbyplants{ - icon_state = "plant-22" - }, -/obj/machinery/airalarm{ - pixel_y = 24 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/aft) -"bgx" = ( -/obj/machinery/hydroponics/soil, -/obj/item/reagent_containers/food/snacks/grown/tomato, -/obj/item/seeds/tea, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/aft) -"bgy" = ( -/obj/item/kirbyplants{ - icon_state = "plant-21"; - pixel_x = -3; - pixel_y = 3 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/aft) -"bgz" = ( -/obj/machinery/seed_extractor, -/obj/item/reagent_containers/glass/bucket, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/aft) -"bgA" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/poppy, -/obj/item/reagent_containers/food/snacks/grown/cherries, -/obj/item/shovel/spade, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +/obj/structure/bedsheetbin/towel, +/obj/structure/table/wood/poker, /turf/open/floor/plasteel/dark, /area/maintenance/starboard/aft) "bgB" = ( @@ -37329,32 +37245,26 @@ /turf/open/floor/plasteel/dark, /area/science/xenobiology) "bhj" = ( +/obj/effect/turf_decal/sand/plating, /obj/structure/sink{ dir = 8; pixel_x = -12; pixel_y = 2 }, -/obj/structure/sign/warning/nosmoking{ +/obj/structure/sign/poster/ripped{ pixel_x = -32 }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"bhk" = ( -/turf/open/floor/plating, -/area/maintenance/starboard) "bhm" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/plating, +/turf/open/floor/plasteel/yellowsiding, /area/maintenance/starboard/aft) "bhn" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +/obj/machinery/light/floor, +/turf/open/floor/plasteel/yellowsiding/corner{ + dir = 8; + icon_state = "yellowcornersiding" }, -/obj/structure/sign/departments/botany{ - pixel_x = 32 - }, -/turf/open/floor/plating, /area/maintenance/starboard/aft) "bho" = ( /obj/machinery/door/airlock/silver{ @@ -37724,77 +37634,11 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"bhT" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/harebell, -/obj/item/reagent_containers/food/snacks/grown/watermelon, -/obj/item/cultivator, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/aft) -"bhU" = ( -/obj/item/kirbyplants{ - icon_state = "plant-21"; - pixel_x = -3; - pixel_y = 3 - }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/aft) -"bhV" = ( -/obj/machinery/hydroponics/soil, -/obj/item/reagent_containers/food/snacks/grown/wheat, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/aft) -"bhW" = ( -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "bhX" = ( -/obj/machinery/hydroponics/soil, -/obj/item/reagent_containers/food/snacks/grown/tea, -/obj/item/hatchet, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/machinery/pool/filter{ + pixel_y = 16 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/aft) -"bhY" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/tower, -/obj/item/reagent_containers/glass/bottle/nutrient/rh, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, +/turf/open/pool, /area/maintenance/starboard/aft) "bhZ" = ( /obj/machinery/light_switch{ @@ -39501,6 +39345,12 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit) +"boD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/commons/toilet/restrooms) "boE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/dark/visible{ @@ -39537,6 +39387,9 @@ /obj/machinery/meter/atmos, /turf/open/floor/plasteel, /area/engineering/atmos) +"bsq" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/starboard/aft) "bsv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ @@ -40477,6 +40330,7 @@ /obj/structure/cable/white{ icon_state = "0-8" }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating{ icon_state = "panelscorched" }, @@ -40557,6 +40411,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/mixing) +"bRf" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall, +/area/command/gateway) +"bVs" = ( +/obj/structure/girder, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bYE" = ( /obj/structure/sign/warning/fire, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -40576,6 +40439,13 @@ dir = 1 }, /area/engineering/atmos) +"caJ" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) "ccy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -40695,6 +40565,10 @@ }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) +"cGA" = ( +/obj/machinery/pool/controller, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "cRz" = ( /obj/machinery/button/door{ id = "supplybridge"; @@ -40719,6 +40593,18 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"cUd" = ( +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/machinery/power/apc/highcap/ten_k{ + areastring = "/area/command/gateway"; + dir = 1; + name = "Gateway APC"; + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/command/gateway) "cWv" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/closed/wall/r_wall, @@ -40824,6 +40710,10 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"dvB" = ( +/obj/structure/sink/puddle, +/turf/open/floor/plating/asteroid, +/area/maintenance/port/aft) "dFV" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -40852,6 +40742,20 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"dMx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/command/gateway) +"dQg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) "dQC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -40869,6 +40773,12 @@ }, /turf/open/floor/plasteel, /area/service/bar/atrium) +"dSq" = ( +/turf/open/floor/plasteel/yellowsiding{ + dir = 4; + icon_state = "yellowsiding" + }, +/area/maintenance/starboard/aft) "dXv" = ( /obj/item/transfer_valve{ pixel_x = -5 @@ -40910,6 +40820,11 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) +"ekG" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/starboard/aft) "emA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -40918,6 +40833,11 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/white{ + icon_state = "2-8" + }, /turf/open/floor/plating, /area/maintenance/starboard/aft) "eva" = ( @@ -41034,6 +40954,20 @@ }, /turf/open/floor/plasteel/dark, /area/engineering/atmos) +"eOg" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/item/storage/box, +/turf/open/floor/plasteel, +/area/maintenance/starboard) "eOs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 @@ -41135,6 +41069,11 @@ /obj/machinery/status_display/ai, /turf/closed/wall, /area/commons/lounge) +"fgZ" = ( +/obj/structure/girder/reinforced, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/asteroid/nearstation) "fjs" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -41168,6 +41107,12 @@ }, /turf/open/floor/plasteel, /area/science/mixing) +"fmq" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced/spawner/west, +/obj/item/flashlight/lamp/green, +/turf/open/floor/carpet/green/airless, +/area/service/lawoffice) "fnp" = ( /obj/machinery/air_sensor/atmos/nitrous_tank, /turf/open/floor/engine/n2o, @@ -41177,6 +41122,19 @@ /obj/item/wrench, /turf/open/space, /area/space/nearstation) +"foP" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/starboard/aft) +"fpH" = ( +/obj/item/seeds/harebell, +/turf/open/space/basic, +/area/space) "fsl" = ( /obj/docking_port/stationary{ dir = 2; @@ -41279,6 +41237,22 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"fNN" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/tea, +/obj/machinery/light/small, +/turf/open/floor/plating/asteroid, +/area/maintenance/port/aft) +"fRe" = ( +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/asteroid/nearstation) +"fWh" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/starboard/aft) "fWz" = ( /obj/machinery/door/airlock/external{ name = "External Docking Port"; @@ -41404,6 +41378,22 @@ }, /turf/open/floor/plating, /area/science/mixing) +"gIT" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/maintenance/port/aft) "gLD" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -41424,8 +41414,13 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, +/obj/structure/sign/departments/restroom{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner, /area/hallway/primary/starboard/fore) "gNH" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -41447,6 +41442,18 @@ }, /turf/open/floor/plasteel, /area/service/bar/atrium) +"gRe" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/command/gateway) +"gSu" = ( +/turf/open/floor/plasteel/yellowsiding{ + dir = 8; + icon_state = "yellowsiding" + }, +/area/maintenance/starboard/aft) "gSv" = ( /obj/structure/cable{ icon_state = "4-8" @@ -41484,6 +41491,15 @@ }, /turf/open/floor/plasteel/dark, /area/engineering/atmos) +"gWt" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/broken{ + dir = 1; + icon_state = "tube-broken" + }, +/turf/open/floor/carpet/green/airless, +/area/maintenance/starboard/aft) "gZk" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 10 @@ -41503,11 +41519,13 @@ /turf/closed/mineral/random/labormineral, /area/science/test_area) "hiR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plating, +/obj/machinery/light/floor, +/turf/open/floor/plasteel/yellowsiding/corner, /area/maintenance/starboard/aft) +"hkI" = ( +/obj/machinery/gateway/centerstation, +/turf/open/floor/plasteel/dark, +/area/command/gateway) "hpr" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=3.2-AtriumSW"; @@ -41538,6 +41556,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/maintenance/starboard/aft) +"hsR" = ( +/obj/machinery/door/airlock/shuttle/glass, +/obj/machinery/door/firedoor/closed, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "hsV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -41581,6 +41604,14 @@ }, /turf/open/floor/plasteel, /area/service/bar/atrium) +"hGN" = ( +/obj/machinery/light, +/obj/structure/closet/secure_closet/exile, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/command/gateway) "hIu" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -41694,6 +41725,15 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engineering/atmos) +"hYy" = ( +/obj/structure/lattice, +/turf/open/floor/plating/asteroid, +/area/maintenance/starboard/aft) +"hZH" = ( +/turf/open/floor/plating/airless{ + icon_state = "platingdmg2" + }, +/area/asteroid/nearstation) "iaa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/navbeacon{ @@ -41760,6 +41800,11 @@ /obj/machinery/air_sensor/atmos/carbon_tank, /turf/open/floor/engine/co2, /area/engineering/atmos) +"isT" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken2" + }, +/area/maintenance/starboard/aft) "ixk" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -41773,6 +41818,9 @@ }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) +"iGT" = ( +/turf/closed/wall, +/area/service/lawoffice) "iIj" = ( /obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ dir = 4 @@ -41827,14 +41875,43 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) +"iSq" = ( +/turf/open/floor/plating/asteroid/airless, +/area/maintenance/starboard/aft) +"iSy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/toy/poolnoodle/red, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "iUq" = ( /obj/machinery/status_display, /turf/closed/wall, /area/service/library) +"iUJ" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/command/gateway) "iUO" = ( /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix, /turf/open/floor/engine, /area/science/mixing) +"iVs" = ( +/obj/machinery/computer/gateway_control{ + dir = 4; + icon_state = "computer" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/camera{ + c_tag = "Gateway"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/command/gateway) "iVw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -41856,6 +41933,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/visible, /turf/open/floor/plasteel, /area/engineering/atmos) +"iYt" = ( +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/lawyer, +/turf/open/floor/carpet/green/airless, +/area/service/lawoffice) "iZQ" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input, /turf/open/floor/engine/co2, @@ -41910,6 +41992,18 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/xenobiology) +"jeI" = ( +/turf/open/floor/plasteel/yellowsiding{ + dir = 1; + icon_state = "yellowsiding" + }, +/area/maintenance/starboard/aft) +"jkc" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/airless{ + icon_state = "wood-broken7" + }, +/area/asteroid/nearstation) "jkl" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -41966,6 +42060,10 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/primary/starboard) +"jrd" = ( +/obj/machinery/pool/drain, +/turf/open/pool, +/area/maintenance/starboard/aft) "jsD" = ( /obj/effect/mapping_helpers/airlock/locked, /obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, @@ -41985,6 +42083,10 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) +"juY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "jwi" = ( /obj/structure/sign/directions/engineering{ dir = 8; @@ -42097,6 +42199,31 @@ }, /turf/open/floor/plasteel, /area/science/mixing) +"jMP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken2" + }, +/area/maintenance/starboard/aft) +"jOJ" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/dark, +/area/command/gateway) "jRe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -42139,12 +42266,26 @@ }, /turf/open/floor/plasteel/cafeteria, /area/engineering/atmos) +"kbe" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/command/gateway) "kcN" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/junction{ dir = 4 }, /turf/open/floor/plating/asteroid/airless, /area/asteroid/nearstation) +"kdd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "kit" = ( /obj/machinery/portable_atmospherics/canister/toxins, /obj/machinery/light/small{ @@ -42179,6 +42320,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/science/mixing) +"krX" = ( +/obj/machinery/light/floor, +/turf/open/floor/plasteel/yellowsiding/corner{ + dir = 4; + icon_state = "yellowcornersiding" + }, +/area/maintenance/starboard/aft) "kwF" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -42201,6 +42349,18 @@ }, /turf/open/floor/plasteel/dark, /area/engineering/atmos) +"kyS" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) +"kAD" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "kCG" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 @@ -42235,6 +42395,10 @@ }, /turf/open/floor/plasteel/dark, /area/engineering/atmos) +"kIL" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating/airless, +/area/asteroid/nearstation) "kKd" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/external{ @@ -42252,6 +42416,10 @@ }, /turf/open/floor/plasteel, /area/cargo/miningdock) +"kKr" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/airless, +/area/asteroid/nearstation) "kPi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -42267,9 +42435,14 @@ }, /turf/open/floor/plasteel, /area/science/mixing) +"kQz" = ( +/turf/open/floor/plasteel, +/area/command/gateway) "kRV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + icon_state = "2-8" }, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -42280,6 +42453,13 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) +"kUu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) +"lcW" = ( +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "lmq" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/plating, @@ -42290,6 +42470,22 @@ }, /turf/closed/wall/r_wall, /area/science/mixing) +"loB" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + pixel_x = 32; + pixel_y = 24 + }, +/obj/effect/landmark/start/lawyer, +/turf/open/floor/wood, +/area/service/lawoffice) +"loX" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/cigarettes/cigars/havana, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "lqz" = ( /obj/machinery/atmospherics/pipe/manifold/yellow/visible, /obj/effect/decal/cleanable/dirt, @@ -42301,6 +42497,10 @@ dir = 1 }, /area/engineering/atmos) +"lqJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/service/lawoffice) "lrg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 @@ -42480,6 +42680,23 @@ }, /turf/open/floor/plasteel, /area/science/mixing) +"mia" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/command/gateway) "mkF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 @@ -42506,6 +42723,9 @@ }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) +"msl" = ( +/turf/closed/wall/rust, +/area/command/gateway) "msG" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -42524,6 +42744,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/science/mixing) +"myQ" = ( +/turf/closed/wall/mineral/titanium, +/area/maintenance/starboard/aft) "mDx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -42592,6 +42815,15 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"mZm" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/exit) "nbT" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; @@ -42602,6 +42834,16 @@ }, /turf/open/floor/plasteel, /area/science/mixing) +"ncG" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/wrench, +/obj/item/wirecutters, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/starboard) "ndg" = ( /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, @@ -42625,6 +42867,20 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"nio" = ( +/obj/structure/pool/ladder{ + dir = 1; + icon_state = "ladder"; + pixel_y = -24 + }, +/turf/open/pool, +/area/maintenance/starboard/aft) +"nqr" = ( +/obj/item/kirbyplants{ + icon_state = "plant-22" + }, +/turf/open/space/basic, +/area/space) "nty" = ( /obj/machinery/button/massdriver{ id = "toxinsdriver"; @@ -42636,10 +42892,21 @@ }, /turf/open/floor/plasteel, /area/science/mixing) +"nvk" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "nwY" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/primary/starboard/fore) +"nBu" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "nFG" = ( /obj/machinery/atmospherics/pipe/manifold/yellow/visible{ dir = 8 @@ -42647,6 +42914,10 @@ /obj/machinery/meter, /turf/open/floor/plasteel, /area/engineering/atmos) +"nIf" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "nKi" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -42719,6 +42990,12 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible, /turf/closed/wall/r_wall, /area/engineering/atmos) +"ogx" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/asteroid/nearstation) "ogL" = ( /obj/structure/sign/warning/vacuum/external{ pixel_y = -32 @@ -42742,6 +43019,9 @@ dir = 1 }, /area/engineering/atmos) +"omB" = ( +/turf/closed/wall, +/area/asteroid/nearstation) "ooX" = ( /obj/machinery/smartfridge/organ/preloaded{ pixel_y = 2 @@ -42849,6 +43129,13 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) +"oIA" = ( +/obj/machinery/light/floor, +/turf/open/floor/plasteel/yellowsiding/corner{ + dir = 1; + icon_state = "yellowcornersiding" + }, +/area/maintenance/starboard/aft) "oIG" = ( /obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, @@ -42899,12 +43186,36 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"oXj" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/machinery/door/window/westright, +/obj/effect/decal/cleanable/egg_smudge, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/freezer, +/area/commons/toilet/restrooms) "oXz" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 5 }, /turf/open/floor/plasteel, /area/science/mixing) +"par" = ( +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/command/gateway) "pbT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -42925,6 +43236,20 @@ /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output, /turf/open/floor/engine/vacuum, /area/engineering/atmos) +"pcD" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/command/gateway) "pdX" = ( /obj/machinery/portable_atmospherics/canister, /obj/item/radio/intercom{ @@ -42937,6 +43262,15 @@ }, /turf/open/floor/plasteel/dark, /area/science/mixing) +"pix" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/starboard/aft) +"pjh" = ( +/obj/machinery/vending/boozeomat/pubby_maint, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "pjU" = ( /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/yellow/hidden{ @@ -42968,6 +43302,13 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) +"pmx" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "pmK" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 @@ -43016,6 +43357,10 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"puc" = ( +/obj/structure/bed, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "pvX" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/orange/visible, @@ -43048,7 +43393,6 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "pEt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/power/apc{ areastring = "/area/hallway/primary/starboard/fore"; dir = 8; @@ -43062,6 +43406,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, /turf/open/floor/plasteel{ heat_capacity = 1e+006 }, @@ -43107,6 +43454,25 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/mixing) +"pML" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain, +/obj/structure/window/spawner/north, +/obj/structure/sign/poster/official/no_erp{ + pixel_x = 32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/freezer, +/area/commons/toilet/restrooms) +"pMQ" = ( +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/item/reagent_containers/glass/bottle/nutrient/rh, +/turf/open/floor/plating/asteroid/airless, +/area/maintenance/port/aft) "pNE" = ( /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ @@ -43119,6 +43485,12 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"qab" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/airless{ + icon_state = "wood-broken5" + }, +/area/asteroid/nearstation) "qcg" = ( /obj/structure/window/reinforced{ dir = 4 @@ -43167,6 +43539,28 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hallway/primary/fore) +"qeO" = ( +/obj/machinery/door/airlock/command{ + name = "Gateway"; + req_access_txt = "62" + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/command/gateway) +"qgg" = ( +/obj/machinery/seed_extractor, +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/turf/open/floor/plating/asteroid/airless, +/area/maintenance/port/aft) "qgC" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ dir = 4 @@ -43181,6 +43575,11 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/science/mixing) +"qjS" = ( +/obj/structure/table/reinforced, +/obj/machinery/light, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "qnA" = ( /turf/open/floor/plating, /area/science/mixing) @@ -43225,6 +43624,13 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engineering/atmos) +"qFj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "qFw" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -43273,6 +43679,13 @@ /obj/machinery/meter, /turf/open/floor/plasteel, /area/engineering/atmos) +"qRz" = ( +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/machinery/photocopier, +/turf/open/floor/wood, +/area/service/lawoffice) "qTa" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 @@ -43282,6 +43695,13 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) +"qUQ" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/shaker, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/starboard/aft) "qUW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -43295,6 +43715,27 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) +"ria" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/command/gateway) +"rih" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white/corner, +/area/hallway/primary/starboard/fore) "rjQ" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plasteel, @@ -43311,6 +43752,15 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) +"rmZ" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/starboard/aft) +"rwH" = ( +/turf/closed/wall/mineral/titanium, +/area/asteroid/nearstation) "rzn" = ( /obj/machinery/status_display, /turf/closed/wall, @@ -43370,6 +43820,13 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input, /turf/open/floor/engine/vacuum, /area/engineering/atmos) +"rVP" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/extinguisher, +/turf/open/floor/plasteel, +/area/command/gateway) "sak" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/tile/blue{ @@ -43390,19 +43847,42 @@ /mob/living/simple_animal/opossum, /turf/open/floor/plating, /area/maintenance/starboard) +"sdk" = ( +/obj/structure/table/wood, +/obj/item/lighter, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "sdL" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/hydroponics/soil, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/weather, +/obj/effect/turf_decal/weather, /turf/open/floor/plasteel/dark, /area/maintenance/starboard/aft) "sdX" = ( /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"sjr" = ( +/obj/item/reagent_containers/food/snacks/grown/wheat, +/turf/open/space/basic, +/area/space) +"slf" = ( +/obj/machinery/door/poddoor/shutters{ + id = "stationawaygate"; + name = "Gateway Access Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/command/gateway) "soC" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -43537,8 +44017,16 @@ /turf/closed/wall/rust, /area/cargo/miningdock) "syS" = ( -/turf/closed/wall/rust, -/area/commons/toilet/restrooms) +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/fountain, +/obj/machinery/requests_console{ + department = "Law office"; + name = "Lawyer RC"; + pixel_y = -30 + }, +/turf/open/floor/carpet/green/airless, +/area/service/lawoffice) "syT" = ( /turf/closed/wall/r_wall/rust, /area/ai_monitored/command/storage/eva) @@ -43555,6 +44043,8 @@ /turf/closed/wall/rust, /area/service/bar/atrium) "sAY" = ( +/obj/structure/easel, +/obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plating{ icon_state = "panelscorched" }, @@ -43594,10 +44084,6 @@ }, /turf/open/floor/plasteel, /area/maintenance/starboard) -"sBW" = ( -/obj/structure/sign/warning/vacuum, -/turf/closed/wall/rust, -/area/maintenance/starboard) "sCr" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -43607,30 +44093,6 @@ icon_state = "platingdmg2" }, /area/maintenance/port/central) -"sCt" = ( -/obj/structure/easel, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) -"sCQ" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/sign/poster/contraband/random{ - pixel_x = 32 - }, -/obj/item/storage/box, -/turf/open/floor/plasteel, -/area/maintenance/starboard) "sDl" = ( /turf/closed/wall/rust, /area/commons/dorms) @@ -43668,19 +44130,20 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"sEm" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +"sEn" = ( /obj/structure/cable/white{ icon_state = "1-8" }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"sEn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable/white{ + icon_state = "4-8" }, /turf/open/floor/plating, /area/maintenance/starboard) +"sEq" = ( +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/turf/open/floor/plating/asteroid/airless, +/area/asteroid/nearstation) "sEG" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -43746,9 +44209,13 @@ /turf/open/floor/plasteel/dark, /area/maintenance/starboard) "sEQ" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/wall, -/area/maintenance/starboard) +/obj/structure/rack, +/obj/item/radio, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/command/gateway) "sFn" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line{ @@ -43903,43 +44370,23 @@ /turf/open/floor/plasteel/dark, /area/maintenance/starboard) "sFX" = ( -/obj/structure/table, /obj/machinery/light/small{ dir = 8 }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel, /area/hallway/secondary/exit) "sFY" = ( -/obj/structure/table, -/obj/effect/turf_decal/stripes/line, -/obj/item/crowbar, -/obj/item/crowbar, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel, /area/hallway/secondary/exit) "sGy" = ( /obj/machinery/door/firedoor, @@ -43985,6 +44432,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white/corner{ dir = 1 }, @@ -44046,10 +44494,12 @@ /turf/open/floor/plating, /area/maintenance/starboard) "sHf" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -24 - }, +/obj/structure/table, +/obj/item/crowbar, +/obj/item/crowbar, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "sHz" = ( @@ -44188,15 +44638,13 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "sIy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /obj/structure/cable/white{ icon_state = "4-8" }, /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "sIB" = ( @@ -44242,6 +44690,17 @@ /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit) "sIR" = ( +/obj/structure/table, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -44573,19 +45032,6 @@ "sLf" = ( /turf/closed/wall/rust, /area/service/chapel/main) -"sLg" = ( -/obj/item/kirbyplants{ - icon_state = "plant-22" - }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/aft) "sLm" = ( /turf/closed/wall/rust, /area/hallway/secondary/entry) @@ -46010,18 +46456,18 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/obj/machinery/door/airlock{ + name = "Primary Restroom" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/freezer, +/area/commons/toilet/restrooms) "sOL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -46141,9 +46587,6 @@ icon_state = "panelscorched" }, /area/maintenance/starboard/aft) -"sPY" = ( -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "sSy" = ( /obj/structure/window/reinforced{ dir = 4 @@ -46151,9 +46594,24 @@ /obj/structure/flora/ausbushes/ppflowers, /turf/open/floor/grass, /area/hallway/secondary/entry) +"sTH" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/tower, +/turf/open/floor/plating/asteroid, +/area/maintenance/port/aft) "sVt" = ( /turf/closed/wall/r_wall, /area/science/mixing) +"sYi" = ( +/obj/structure/table/reinforced, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/starboard/aft) +"sZH" = ( +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plating/asteroid, +/area/maintenance/port/aft) "tac" = ( /obj/structure/grille, /obj/machinery/meter, @@ -46170,6 +46628,12 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) +"tfP" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/airless{ + icon_state = "wood-broken" + }, +/area/asteroid/nearstation) "tgm" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -46189,6 +46653,24 @@ "tin" = ( /turf/open/floor/engine/vacuum, /area/science/mixing) +"tjk" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/carpet/green/airless, +/area/asteroid/nearstation) +"tkH" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Courtroom" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/service/lawoffice) "ttp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -46217,6 +46699,16 @@ dir = 1 }, /area/engineering/atmos) +"twy" = ( +/obj/structure/table/reinforced, +/obj/machinery/chem_dispenser/drinks{ + dir = 1; + icon_state = "soda_dispenser" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/starboard/aft) "tFk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -46397,6 +46889,12 @@ heat_capacity = 1e+006 }, /area/hallway/primary/starboard) +"uqZ" = ( +/obj/structure/table/wood, +/turf/open/floor/wood{ + icon_state = "wood-broken2" + }, +/area/maintenance/starboard/aft) "uuj" = ( /obj/machinery/plantgenes{ pixel_y = 6 @@ -46491,12 +46989,21 @@ }, /turf/open/floor/plasteel/dark, /area/engineering/gravity_generator) +"uCY" = ( +/turf/open/pool, +/area/maintenance/starboard/aft) "uDp" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 5 }, /turf/open/floor/plating/asteroid/airless, /area/asteroid/nearstation) +"uDz" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "uEu" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 6 @@ -46511,6 +47018,35 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/port) +"uIq" = ( +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/command/gateway) +"uMi" = ( +/obj/machinery/door/airlock/security{ + name = "Law Office"; + req_access_txt = "38" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/service/lawoffice) "uSs" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/green/visible{ @@ -46632,6 +47168,17 @@ }, /turf/open/floor/plasteel/dark, /area/engineering/atmos) +"vmV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/maintenance/starboard/aft) +"vna" = ( +/obj/item/wrench, +/turf/open/space/basic, +/area/space) "voi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -46727,6 +47274,18 @@ }, /turf/open/floor/engine/vacuum, /area/science/mixing) +"vDy" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "vGQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -46782,6 +47341,10 @@ }, /turf/open/floor/plasteel, /area/science/mixing) +"vTk" = ( +/obj/item/hatchet, +/turf/open/space/basic, +/area/space) "vVA" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -46835,13 +47398,15 @@ /area/science/mixing) "wbV" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/hydroponics/soil, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/effect/turf_decal/weather, +/obj/effect/turf_decal/weather, +/obj/structure/closet/athletic_mixed, /turf/open/floor/plasteel/dark, /area/maintenance/starboard/aft) "wdt" = ( @@ -46860,6 +47425,12 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/primary/aft) +"wkn" = ( +/obj/machinery/hydroponics/soil, +/obj/item/shovel/spade, +/obj/item/cultivator, +/turf/open/floor/plating/asteroid, +/area/maintenance/port/aft) "wkG" = ( /obj/structure/lattice/catwalk, /turf/open/floor/plating/airless, @@ -46883,17 +47454,36 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) +"wtA" = ( +/obj/structure/fluff/broken_flooring{ + dir = 8; + icon_state = "plating" + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "wvy" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible, /obj/machinery/meter, /turf/open/floor/plasteel, /area/science/mixing) +"wvA" = ( +/obj/machinery/biogenerator, +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/turf/open/floor/plating/asteroid, +/area/maintenance/port/aft) "wwT" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 }, /turf/open/floor/plasteel, /area/science/mixing) +"wDb" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) "wOe" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/door/airlock/research{ @@ -46977,10 +47567,13 @@ /turf/open/floor/plasteel/dark, /area/engineering/atmos) "xdr" = ( -/obj/structure/barricade/wooden, +/obj/effect/turf_decal/sand/plating, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, +/obj/structure/cable/white{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/maintenance/starboard/aft) "xej" = ( @@ -47004,6 +47597,16 @@ }, /turf/open/floor/plasteel, /area/science/mixing) +"xpX" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/window/spawner/north, +/obj/machinery/door/window/westright, +/obj/effect/turf_decal/bot, +/obj/effect/landmark/blobstart, +/turf/open/floor/plasteel/freezer, +/area/commons/toilet/restrooms) "xrf" = ( /obj/machinery/light{ dir = 8 @@ -47143,12 +47746,46 @@ /obj/structure/grille, /turf/closed/wall/r_wall, /area/engineering/atmos) +"xMv" = ( +/obj/structure/lattice, +/obj/structure/fluff/broken_flooring{ + dir = 8; + icon_state = "plating" + }, +/turf/open/space/basic, +/area/space/nearstation) +"xMZ" = ( +/turf/closed/wall, +/area/command/gateway) "xPz" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 }, /turf/open/floor/plating/asteroid/airless, /area/asteroid/nearstation) +"xTs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/power/apc{ + areastring = "/area/commons/toilet/restrooms"; + dir = 8; + name = "Restrooms APC"; + pixel_x = -25; + pixel_y = 3 + }, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"xWb" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/command/gateway) "xZO" = ( /obj/effect/mapping_helpers/airlock/locked, /obj/machinery/door/airlock/public/glass{ @@ -47234,6 +47871,19 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/port/aft) +"ygB" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "ygE" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -47260,6 +47910,16 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) +"yin" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating/asteroid, +/area/maintenance/port/aft) +"ykL" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) "ylr" = ( /obj/machinery/door/airlock/external{ name = "External Airlock"; @@ -78265,9 +78925,9 @@ aqo aqo bbd aKm -aad -aad -aad +wvA +bVs +wkn aad aad aad @@ -78521,12 +79181,12 @@ ylr aSG jXc aME -aKm -aad -aad -aad -aad -aad +aLv +yin +dvB +sZH +sTH +bVs aad aad aad @@ -78779,9 +79439,9 @@ aqo aqo bbd aKm -aac -aac -aad +qgg +pMQ +fNN aKm aKm aKm @@ -79037,8 +79697,8 @@ ghr jBh aKm aKm -aKm -aKm +gIT +aLv aKm aOs aSf @@ -79291,10 +79951,10 @@ aUQ bvg aKm jlZ -atE +vDy aOI -aPQ -aPQ +qFj +kdd aPQ aPQ aPQ @@ -83399,7 +84059,7 @@ aBn aDf aVV aVQ -aXk +aXg ajG aOZ bey @@ -84132,10 +84792,10 @@ aqy ajf ake ald -oyD -syS -oyD -oyD +iGT +tkH +iGT +lqJ apI apI arP @@ -84388,7 +85048,7 @@ aid aqw ajg akf -oyD +iGT alT amO anJ @@ -84648,8 +85308,8 @@ akg ale alU amP -oyD -oyD +aoC +aoC sAc aqU arR @@ -84905,7 +85565,7 @@ akh alf alV amQ -anJ +fmq aoD apI aqV @@ -85159,10 +85819,10 @@ ahG aix ajj aki -oyD -alW +uMi +loB amR -oyD +iYt syS apI aqW @@ -85416,10 +86076,10 @@ swC abw ajk akj -oyD +iGT alX amS -anJ +qRz aoE apI aqX @@ -92882,7 +93542,7 @@ aup avu atp gMe -arj +rih arj sEJ aBa @@ -93135,11 +93795,11 @@ nwY sOF sOG atq -aRz -aRz +oyD +oyD sOK -aRz -aRz +boD +oyD bli azU aBb @@ -93392,11 +94052,11 @@ aqj aRz asr bfp -aRz +oyD avv acx axf -aRz +oyD aRz sEK sJN @@ -93649,11 +94309,11 @@ aqk aRz ass aTR -sJN -avw +oyD +alW awz axg -aRz +oyD sEl sEL aXb @@ -93906,11 +94566,11 @@ aql aRz ast bfo -aRz -aRz -aRz -sJN -aRz +oyD +oXj +xpX +pML +oyD bfp aSD aRz @@ -93952,20 +94612,20 @@ sdL bhj wbV sOM -aad -aad -aad +bsq +iSq +bsq bfP bfP bjc bfP bfP -aad -aad -aad -aad -aad -aad +myQ +rwH +fgZ +aac +aac +aac aaa aaa aaa @@ -94162,13 +94822,13 @@ ape aqm sJN sAY -acw -aXJ -aSC -aXJ -bai -aXb -sEm +caJ +oyD +oyD +oyD +oyD +oyD +sGY aRz sFn sFR @@ -94206,22 +94866,22 @@ beQ emA xdr bgu -sPY -bhT -sOM -aad +pmx +myQ +aRy +aRy +aRy +aRy +aRy +hYy +nIf +nIf +lcW +myQ +ogx bvg +aKo aac -aad -aac -aac -aac -aad -aad -aac -aac -aac -aad aaa aaa aaa @@ -94419,12 +95079,12 @@ apf aqn aRz abO -bfp -aSD -sCt -sCQ -sDq -aSD +acw +aXJ +aXJ +xTs +aXJ +aXJ sEn sEN sFo @@ -94464,20 +95124,20 @@ bfr hso bgv kRV -bhU -aRy -bvg -aac -aaa -aaa -aaa -aaa -aac -aad -aad -aad -aad -aac +vmV +kUu +iSy +kUu +kUu +kUu +jMP +lcW +fWh +lcW +hsR +kKr +tfP +kKr aac aaa aaa @@ -94678,11 +95338,11 @@ aRz abN acy aRz -sJN -aRz -aRz -aRz +ncG +eOg +sDq aRz +bfp aRz sFp sFT @@ -94719,23 +95379,23 @@ aRy aRy aRy mgV -bgw +myQ hiR -bhV -aRy -bvg -aaa -aaa -aaa -aaa -aaa -aaa -aac -aad -aad -aac -aac -aaa +dSq +dSq +dSq +dSq +krX +ekG +nBu +nvk +lcW +twy +myQ +tjk +tjk +tjk +sdX aaa aaa aaa @@ -94934,13 +95594,13 @@ aqp aRz bvh sBx +xMZ +xMZ +xMZ +bRf +xMZ +ygB aRz -aad -aad -aah -aad -aad -aSD sFq sFU aRz @@ -94976,23 +95636,23 @@ bes bes bes mgV -bgx +aRy bhm -bhW -sON -aac -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +uCY +uCY +uCY +uCY +jeI +lcW +foP +uqZ +lcW +qUQ +myQ +tjk +tjk +tjk +sdX aaa aaa aaa @@ -95191,14 +95851,14 @@ amD amC amC sBy -sBW -aad -aac -bvg -aad -aad -sJN -aRz +xMZ +ria +pcD +uIq +iVs +iUJ +xMZ +xMZ aRz aSD sHd @@ -95233,22 +95893,22 @@ bet bet bet lMu -bgy -sPY -bhX aRy -bvg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bhm +bhX +jrd +uCY +nio +jeI +juY +kyS +kAD +pix +qjS +myQ +gWt +tjk +tjk aaa aaa aaa @@ -95448,15 +96108,15 @@ aqq ark amC sOJ -bvg -aac -aac -aae -aac -aad -aRz +xMZ +mia +hkI +jOJ +gRe +par +hGN +xMZ aXK -bhk sGA sHe aRz @@ -95490,22 +96150,22 @@ vCu tin tin vxf -bgz -sPY -sLg aRy -bvg -aac -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bhm +uCY +uCY +uCY +uCY +jeI +lcW +rmZ +sdk +lcW +sYi +myQ +tjk +tjk +wtA aaa aaa aaa @@ -95705,15 +96365,15 @@ aqr arl amC bvg -aac -aac -aaa -aae -aac -aac +xMZ +uIq +pcD +ria +kQz +xWb sEQ +bRf aRz -sJN atq aRz aRz @@ -95747,27 +96407,27 @@ fDZ hNT bkf lMu -bgA +myQ bhn -bhY -sON -aad -aac -aac +gSu +gSu +gSu +gSu +oIA +lcW +ykL +loX +lcW +pjh +myQ +tjk +hZH +aaa aaa aaa aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP jFP jFP jFP @@ -95962,19 +96622,19 @@ aqs arm syD aac -aaa -aaa -aaa -aae -aaa -aac -bvg -sFs +xMZ +xMZ +xMZ +xMZ +xMZ +cUd +dMx +slf sFX sGC sHf -sHB -blM +mZm +dQg sIy blZ sHB @@ -96005,26 +96665,26 @@ jsD low lMu sON -sOM -sOM -sOM -aad -aad -aad -aad +myQ +cGA +puc +puc +puc +lcW +lcW +lcW +lcW +isT +lcW +hsR +jkc +fRe +aaa +aaa aaa aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP jFP jFP jFP @@ -96223,10 +96883,10 @@ aaa aaa aaa aae -aae -bvg -bvg -sFs +xMZ +rVP +kbe +qeO sFY sGD bsS @@ -96262,26 +96922,26 @@ iUO svX eWo aad -aad -aad -aad -aad -aad -aad -aac -aac -aac +omB +myQ +aRy +aRy +aRy +aRy +aRy +lcW +lcW +uDz +lcW +myQ +kKr +qab +sdX +aaa +aaa +aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP jFP jFP jFP @@ -96480,10 +97140,10 @@ aaf aaf aae aae -axW -sDP -azb -axW +xMZ +msl +xMZ +xMZ axW axW azb @@ -96521,24 +97181,24 @@ jRe aad aad aad +sEq +aac aad aad -aad -aad -aad -aad -aad +aRy +myQ +aRy +myQ +aRy +myQ +rwH +rwH +kIL +xMv +aaa +aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP jFP jFP jFP @@ -96782,20 +97442,20 @@ aad aad aad aad -aad +omB aad aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa uXD jFP jFP @@ -97044,15 +97704,15 @@ aac aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP +aaa +aaa +wDb +aaa +aaa +aaa +aaa +aaa +aaa jFP jFP jFP @@ -97300,16 +97960,16 @@ aad aaa aaa aaa +wDb +aaa +sjr +aaa +aaa +aaa +vna +aaa +aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP jFP jFP jFP @@ -97554,19 +98214,19 @@ aad aad aad aaa +vTk +aaa +aaa +aaa +aaa +aaa +aaa +fpH +aaa aaa aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP jFP jFP jFP @@ -97812,18 +98472,18 @@ aaa aaa aaa aaa +wDb +aaa +aaa +nqr +aaa +aaa +aaa +aaa +aaa aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP jFP jFP jFP @@ -98072,15 +98732,15 @@ aaa aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa jFP jFP jFP @@ -98329,15 +98989,15 @@ aaa aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa jFP jFP jFP @@ -98586,15 +99246,15 @@ aaa aaa aaa aaa -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP -jFP +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa jFP jFP jFP diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 0972252bf6..536d5f4aa3 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -40675,6 +40675,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/space_heater, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -45447,15 +45448,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engineering/main) "bYS" = ( @@ -45468,15 +45469,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engineering/main) "bYT" = ( @@ -45492,15 +45493,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/structure/cable{ icon_state = "1-2" }, @@ -45520,15 +45521,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engineering/main) "bYV" = ( @@ -45539,6 +45540,12 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -45551,15 +45558,15 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -45578,15 +45585,15 @@ /obj/machinery/firealarm{ pixel_y = 29 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engineering/main) "bYY" = ( @@ -47272,6 +47279,10 @@ dir = 4; light_color = "#e8eaff" }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, /turf/open/floor/plasteel/dark, /area/engineering/main) "cfk" = ( @@ -53466,10 +53477,6 @@ }, /area/maintenance/department/engine) "dEy" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, /obj/structure/reflector/double/anchored{ dir = 9 }, @@ -55355,6 +55362,10 @@ /obj/machinery/power/rad_collector/anchored, /turf/open/floor/engine, /area/engineering/supermatter) +"hKX" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "hMx" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/plating{ @@ -60884,6 +60895,10 @@ /obj/item/pen, /turf/open/floor/plasteel/dark, /area/science/explab) +"tCJ" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/department/crew_quarters/bar) "tCP" = ( /obj/docking_port/stationary/public_mining_dock, /turf/open/floor/plating, @@ -80222,7 +80237,7 @@ aiu xuv aoe ajD -ajD +hKX aiu apB aiu @@ -91030,7 +91045,7 @@ aKT aLH aNf aKT -aLL +tCJ aQO aRO aSH @@ -99781,7 +99796,7 @@ aPY bau aLf aFi -aFi +aMA beI beI bgD @@ -107236,7 +107251,7 @@ aaa aEl aTx aFi -aFi +aMA aEj bhz lEn diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 8fc2dc116b..67d16e6687 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -268,6 +268,15 @@ #define GAS_FLAG_DANGEROUS (1<<0) #define GAS_FLAG_BREATH_PROC (1<<1) +//SUPERMATTER DEFINES +#define HEAT_PENALTY "heat penalties" +#define TRANSMIT_MODIFIER "transmit" +#define RADIOACTIVITY_MODIFIER "radioactivity" +#define HEAT_RESISTANCE "heat resistance" +#define POWERLOSS_INHIBITION "powerloss inhibition" +#define ALL_SUPERMATTER_GASES "gases we care about" +#define POWER_MIX "gas powermix" + //HELPERS #define PIPING_LAYER_SHIFT(T, PipingLayer) \ if(T.dir & (NORTH|SOUTH)) { \ diff --git a/code/__DEFINES/loadout.dm b/code/__DEFINES/loadout.dm index c900a33d06..f9b4c36c9c 100644 --- a/code/__DEFINES/loadout.dm +++ b/code/__DEFINES/loadout.dm @@ -59,7 +59,7 @@ #define LOADOUT_CATEGORY_UNLOCKABLE "Unlockable" //how many prosthetics can we have -#define MAXIMUM_LOADOUT_PROSTHETICS 2 +#define MAXIMUM_LOADOUT_PROSTHETICS 4 //what limbs can be amputated or be prosthetic #define LOADOUT_ALLOWED_LIMB_TARGETS list(BODY_ZONE_L_ARM,BODY_ZONE_R_ARM,BODY_ZONE_L_LEG,BODY_ZONE_R_LEG) diff --git a/code/datums/components/crafting/glassware/glassware.dm b/code/datums/components/crafting/glassware/glassware.dm index 88f52d6b01..50137733ee 100644 --- a/code/datums/components/crafting/glassware/glassware.dm +++ b/code/datums/components/crafting/glassware/glassware.dm @@ -1,8 +1,8 @@ //This file is for glass working types of things! /obj/item/glasswork - name = "This is a bug report it!" - desc = "Failer to code. Contact your local bug remover..." + name = "this is a bug!" + desc = "Uh oh, the coders did a fucky wucky! Contact your local code monkey and tell them about this!" icon = 'icons/obj/glassworks.dmi' w_class = WEIGHT_CLASS_SMALL force = 1 @@ -11,45 +11,45 @@ tool_behaviour = null /obj/item/glasswork/glasskit - name = "Glass working tools" - desc = "A lovely belt of most the tools you will need to shape, mold, and refine glass into more advanced shapes." + name = "glasswork tools" + desc = "A set of most the tools you will need to shape, mold, and refine glass into more advanced shapes." icon_state = "glass_tools" tool_behaviour = TOOL_GLASS_CUT //Cutting takes 20 ticks /obj/item/glasswork/blowing_rod - name = "Glass working blow rod" - desc = "A hollow metal stick made for glass blowing." + name = "glassblowing rod" + desc = "A hollow metal rod made for blowing glass." icon_state = "blowing_rods_unused" tool_behaviour = TOOL_BLOW //Rods take 5 ticks /obj/item/glasswork/glass_base //Welding takes 30 ticks - name = "Glass fodder sheet" - desc = "A sheet of glass set aside for glass working" + name = "glass fodder sheet" + desc = "A sheet of glass set aside for glass working." icon_state = "glass_base" var/next_step = null var/rod = /obj/item/glasswork/blowing_rod /obj/item/tea_plate - name = "Tea Plate" + name = "tea saucer" desc = "A polished plate for a tea cup. How fancy!" icon = 'icons/obj/glass_ware.dmi' icon_state = "tea_plate" /obj/item/tea_cup - name = "Tea Cup" - desc = "A glass cup made for fake tea!" + name = "tea cup" + desc = "A glass cup made for sipping tea!" icon = 'icons/obj/glass_ware.dmi' icon_state = "tea_plate" //////////////////////Chem Disk///////////////////// //Two Steps // //Sells for 300 cr, takes 10 glass shets // -//Usefull for chem spliting // +//Useful for chem spliting // //////////////////////////////////////////////////// /obj/item/glasswork/glass_base/dish - name = "Glass fodder sheet" - desc = "A set of glass sheets set aside for glass working, this one is ideal for a small glass dish. Needs to be cut with some tools." + name = "glass fodder sheet (dish)" + desc = "A set of glass sheets set aside for glass working. This one is ideal for a small glass dish. It needs to be cut with some glassworking tools." next_step = /obj/item/glasswork/glass_base/dish_part1 /obj/item/glasswork/glass_base/dish/attackby(obj/item/I, mob/user, params) @@ -60,8 +60,8 @@ qdel(src) /obj/item/glasswork/glass_base/dish_part1 - name = "Half chem dish sheet" - desc = "A sheet of glass cut in half, looks like it still needs some more cutting down" + name = "half glass fodder sheet (dish)" + desc = "A sheet of glass cut in half. It looks like it still needs some more cutting down." icon_state = "glass_base_half" next_step = /obj/item/reagent_containers/glass/beaker/glass_dish @@ -75,12 +75,12 @@ //////////////////////Lens////////////////////////// //Six Steps // //Sells for 1600 cr, takes 15 glass shets // -//Usefull for selling and later crafting // +//Useful for selling and later crafting // //////////////////////////////////////////////////// /obj/item/glasswork/glass_base/glass_lens - name = "Glass fodder sheet" - desc = "A set of glass sheets set aside for glass working, this one is ideal for a small glass lens. Needs to be cut with some tools." + name = "glass fodder sheet (lens)" + desc = "A set of glass sheets set aside for glass working. This one is ideal for a glass lens. It needs to be cut with some glassworking tools." next_step = /obj/item/glasswork/glass_base/glass_lens_part1 /obj/item/glasswork/glass_base/glass_lens/attackby(obj/item/I, mob/user, params) @@ -91,8 +91,8 @@ qdel(src) /obj/item/glasswork/glass_base/glass_lens_part1 - name = "Glass fodder sheet" - desc = "Cut glass ready to be heated. Needs to be heated with some tools." + name = "half glass fodder sheet (lens)" + desc = "Cut glass ready to be heated with something very hot." icon_state = "glass_base_half" next_step = /obj/item/glasswork/glass_base/glass_lens_part2 @@ -104,8 +104,8 @@ qdel(src) /obj/item/glasswork/glass_base/glass_lens_part2 - name = "Glass fodder sheet" - desc = "Cut glass that has been heated. Needs to be heated more with some tools." + name = "heated half glass fodder sheet (lens)" + desc = "Cut glass that has been heated once already and is ready to be heated again." icon_state = "glass_base_heat" next_step = /obj/item/glasswork/glass_base/glass_lens_part3 @@ -117,8 +117,8 @@ qdel(src) /obj/item/glasswork/glass_base/glass_lens_part3 - name = "Glass fodder sheet" - desc = "Cut glass that has been heated into a blob of hot glass. Needs to be placed onto a blow tube." + name = "heated glass blob (lens)" + desc = "Cut glass that has been heated into a blob. It needs to be attached to a glassblowing rod." icon_state = "glass_base_molding" next_step = /obj/item/glasswork/glass_base/glass_lens_part4 @@ -131,8 +131,8 @@ qdel(I) /obj/item/glasswork/glass_base/glass_lens_part4 - name = "Glass fodder sheet" - desc = "Cut glass that has been heated into a blob of hot glass. Needs to be cut off onto a blow tube." + name = "glassblowing rod (lens)" + desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools." icon_state = "blowing_rods_inuse" next_step = /obj/item/glasswork/glass_base/glass_lens_part5 @@ -145,8 +145,8 @@ qdel(src) /obj/item/glasswork/glass_base/glass_lens_part5 - name = "Unpolished glass lens" - desc = "A small unpolished glass lens. Could be polished with some cloth." + name = "unpolished glass lens" + desc = "An unpolished glass lens. It needs to be polished with some dry cloth." icon = 'icons/obj/glass_ware.dmi' icon_state = "glass_optics" next_step = /obj/item/glasswork/glass_base/glass_lens_part6 @@ -159,8 +159,8 @@ qdel(src) /obj/item/glasswork/glass_base/glass_lens_part6 - name = "Unrefined glass lens" - desc = "A small polished glass lens. Just needs to be refined with some sandstone." + name = "unrefined glass lens" + desc = "A polished glass lens. It needs to be refined with some sandstone." icon = 'icons/obj/glass_ware.dmi' icon_state = "glass_optics" next_step = /obj/item/glasswork/glass_base/lens @@ -174,12 +174,12 @@ //////////////////////Spouty Flask////////////////// //Four Steps // //Sells for 1200 cr, takes 20 glass shets // -//Usefull for selling and chemical things // +//Useful for selling and chemical things // //////////////////////////////////////////////////// /obj/item/glasswork/glass_base/spouty - name = "Glass fodder sheet" - desc = "A set of glass sheets set aside for glass working, this one is ideal for a spout beaker. Needs to be cut with some tools." + name = "Glass fodder sheet (spout)" + desc = "A set of glass sheets set aside for glass working. This one is ideal for a spouty flask. It needs to heated with something very hot." next_step = /obj/item/glasswork/glass_base/spouty_part2 /obj/item/glasswork/glass_base/spouty/attackby(obj/item/I, mob/user, params) @@ -190,8 +190,8 @@ qdel(src) /obj/item/glasswork/glass_base/spouty_part2 - name = "Glass fodder sheet" - desc = "Cut glass that has been heated. Needs to be heated with some tools." + name = "glass fodder sheet (spout)" + desc = "Cut glass ready to be heated with something very hot." icon_state = "glass_base_half" next_step = /obj/item/glasswork/glass_base/spouty_part3 @@ -203,8 +203,8 @@ qdel(src) /obj/item/glasswork/glass_base/spouty_part3 - name = "Glass fodder sheet" - desc = "Cut glass that has been heated into a blob of hot glass. Needs to be placed onto a blow tube." + name = "heated glass blob (spout)" + desc = "Cut glass that has been heated into a blob. It needs to be attached to a glassblowing rod." icon_state = "glass_base_molding" next_step = /obj/item/glasswork/glass_base/spouty_part4 @@ -217,8 +217,8 @@ qdel(I) /obj/item/glasswork/glass_base/spouty_part4 - name = "Glass fodder sheet" - desc = "Cut glass that has been heated into a blob of hot glass. Needs to be cut off onto a blow tube." + name = "glassblowing rod (spout)" + desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools." icon_state = "blowing_rods_inuse" next_step = /obj/item/reagent_containers/glass/beaker/flask/spouty @@ -233,12 +233,12 @@ //////////////////////Small Bulb Flask////////////// //Two Steps // //Sells for 600 cr, takes 5 glass shets // -//Usefull for selling and chemical things // +//Useful for selling and chemical things // //////////////////////////////////////////////////// /obj/item/glasswork/glass_base/flask_small - name = "Glass fodder sheet" - desc = "A set of glass sheets set aside for glass working, this one is ideal for a small flask. Needs to be heated with some tools." + name = "glass fodder sheet (small flask)" + desc = "A set of glass sheets set aside for glass working. This one is ideal for a small flask. It needs to heated with something very hot." next_step = /obj/item/glasswork/glass_base/flask_small_part1 /obj/item/glasswork/glass_base/flask_small/attackby(obj/item/I, mob/user, params) @@ -249,8 +249,8 @@ qdel(src) /obj/item/glasswork/glass_base/flask_small_part1 - name = "Metled glass" - desc = "A blob of metled glass, this one is ideal for a small flask. Needs to be blown with some tools." + name = "heated glass blob (small flask)" + desc = "Glass that has been heated into a blob. It needs to be attached to a glassblowing rod." icon_state = "glass_base_molding" next_step = /obj/item/glasswork/glass_base/flask_small_part2 @@ -263,8 +263,8 @@ qdel(I) /obj/item/glasswork/glass_base/flask_small_part2 - name = "Metled glass" - desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools." + name = "glassblowing rod (small flask)" + desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools." icon_state = "blowing_rods_inuse" next_step = /obj/item/reagent_containers/glass/beaker/flask @@ -279,12 +279,12 @@ //////////////////////Large Bulb Flask////////////// //Two Steps // //Sells for 1000 cr, takes 15 glass shets // -//Usefull for selling and chemical things // +//Useful for selling and chemical things // //////////////////////////////////////////////////// /obj/item/glasswork/glass_base/flask_large - name = "Glass fodder sheet" - desc = "A set of glass sheets set aside for glass working, this one is ideal for a large flask. Needs to be heated with some tools." + name = "glass fodder sheet (large flask)" + desc = "A set of glass sheets set aside for glass working. This one is ideal for a large flask. It needs to heated with something very hot." next_step = /obj/item/glasswork/glass_base/flask_large_part1 /obj/item/glasswork/glass_base/flask_large/attackby(obj/item/I, mob/user, params) @@ -295,8 +295,8 @@ qdel(src) /obj/item/glasswork/glass_base/flask_large_part1 - name = "Metled glass" - desc = "A blob of metled glass, this one is ideal for a large flask. Needs to be blown with some tools." + name = "heated glass blob (large flask)" + desc = "Glass that has been heated into a blob. It needs to be attached to a glassblowing rod." icon_state = "glass_base_molding" next_step = /obj/item/glasswork/glass_base/flask_large_part2 @@ -309,8 +309,8 @@ qdel(I) /obj/item/glasswork/glass_base/flask_large_part2 - name = "Metled glass" - desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools." + name = "glassblowing rod (small flask)" + desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools." icon_state = "blowing_rods_inuse" next_step = /obj/item/reagent_containers/glass/beaker/flask/large @@ -325,12 +325,12 @@ //////////////////////Tea Plates//////////////////// //Three Steps // //Sells for 1000 cr, takes 5 glass shets // -//Usefull for selling and chemical things // +//Useful for selling and chemical things // //////////////////////////////////////////////////// /obj/item/glasswork/glass_base/tea_plate - name = "Glass fodder sheet" - desc = "A set of glass sheets set aside for glass working, this one is ideal for a tea plate, how fancy! Needs to be heated with some tools." + name = "glass fodder sheet (tea saucer)" + desc = "A set of glass sheets set aside for glass working. This one is ideal for a tea saucer. It needs to heated with something very hot." next_step = /obj/item/glasswork/glass_base/tea_plate1 /obj/item/glasswork/glass_base/tea_plate/attackby(obj/item/I, mob/user, params) @@ -341,8 +341,8 @@ qdel(src) /obj/item/glasswork/glass_base/tea_plate1 - name = "Metled glass" - desc = "A blob of metled glass, this one is ideal for a tea plate. Needs to be blown with some tools." + name = "heated glass blob (tea saucer)" + desc = "Glass that has been heated into a blob. It needs to be attached to a glassblowing rod." icon_state = "glass_base_molding" next_step = /obj/item/glasswork/glass_base/tea_plate2 @@ -355,8 +355,8 @@ qdel(I) /obj/item/glasswork/glass_base/tea_plate2 - name = "Metled glass" - desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools." + name = "glassblowing rod (tea saucer)" + desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools." icon_state = "blowing_rods_inuse" next_step = /obj/item/glasswork/glass_base/tea_plate3 @@ -369,8 +369,8 @@ qdel(src) /obj/item/glasswork/glass_base/tea_plate3 - name = "Disk of glass" - desc = "A disk of glass that can be cant be used for much. Needs to be polished with some cloth." + name = "unpolished glass saucer (tea saucer)" + desc = "An unpolished glass saucer. It needs to be polished with some dry cloth." icon_state = "glass_base_half" next_step = /obj/item/tea_plate @@ -384,12 +384,12 @@ //////////////////////Tea Cup/////////////////////// //Four Steps // //Sells for 1600 cr, takes 6 glass shets // -//Usefull for selling and chemical things // +//Useful for selling and chemical things // //////////////////////////////////////////////////// /obj/item/glasswork/glass_base/tea_cup - name = "Glass fodder sheet" - desc = "A set of glass sheets set aside for glass working, this one is ideal for a tea cup, how fancy! Needs to be heated with some tools." + name = "glass fodder sheet (tea cup)" + desc = "A set of glass sheets set aside for glass working. This one is ideal for a tea cup. It needs to heated with something very hot." next_step = /obj/item/glasswork/glass_base/tea_cup1 /obj/item/glasswork/glass_base/tea_cup/attackby(obj/item/I, mob/user, params) @@ -400,8 +400,8 @@ qdel(src) /obj/item/glasswork/glass_base/tea_cup1 - name = "Metled glass" - desc = "A blob of metled glass, this one is ideal for a tea cup. Needs to be blown with some tools." + name = "heated glass blob (tea cup)" + desc = "Glass that has been heated into a blob. It needs to be attached to a glassblowing rod." icon_state = "glass_base_molding" next_step = /obj/item/glasswork/glass_base/tea_cup2 @@ -414,8 +414,8 @@ qdel(I) /obj/item/glasswork/glass_base/tea_cupe2 - name = "Metled glass" - desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools." + name = "glassblowing rod (tea cup)" + desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools." icon_state = "blowing_rods_inuse" next_step = /obj/item/glasswork/glass_base/tea_cup3 @@ -428,8 +428,8 @@ qdel(src) /obj/item/glasswork/glass_base/tea_cup3 - name = "Disk of glass" - desc = "A bowl of glass that can be cant be used for much. Needs to be polished with some cloth." + name = "unpolished glass cup (tea cup)" + desc = "An unpolished glass cup. It needs to be polished with some dry cloth." icon_state = "glass_base_half" next_step = /obj/item/glasswork/glass_base/tea_cup4 @@ -441,8 +441,8 @@ qdel(src) /obj/item/glasswork/glass_base/tea_cup4 - name = "Disk of glass" - desc = "A bowl of polished glass that can be cant be used for much. Needs some more glass to make a handle." + name = "polished glass cup (tea cup)" + desc = "A polished glass cup. It needs some extra glass to form a handle." icon_state = "glass_base_half" next_step = /obj/item/tea_cup diff --git a/code/datums/components/crafting/glassware/lens_crafting.dm b/code/datums/components/crafting/glassware/lens_crafting.dm index 8907522946..7b650989a8 100644 --- a/code/datums/components/crafting/glassware/lens_crafting.dm +++ b/code/datums/components/crafting/glassware/lens_crafting.dm @@ -1,15 +1,15 @@ //This file is for crafting using a lens! /obj/item/glasswork/glass_base/lens - name = "Optical lens" - desc = "Good for selling or crafting, by itself its useless" + name = "optical lens" + desc = "A glass lens. Useless by itself, but may prove useful in making something with a focus." icon = 'icons/obj/glass_ware.dmi' icon_state = "glass_optics" //Laser pointers - 2600 /obj/item/glasswork/glass_base/laserpointer_shell - name = "Laser pointer assembly" - desc = "Good for selling or crafting, by itself its useless. Needs a power capactor." + name = "laser pointer assembly" + desc = "An empty hull of a laser pointer. It's missing a capacitor." icon_state = "laser_case" icon = 'icons/obj/glass_ware.dmi' next_step = /obj/item/glasswork/glass_base/laserpointer_shell_1 @@ -21,8 +21,8 @@ qdel(src) /obj/item/glasswork/glass_base/laserpointer_shell_1 - name = "Laser pointer assembly" - desc = "Good for selling or crafting, by itself its useless. Needs a glass lens." + name = "powered laser pointer assembly" + desc = "A laser pointer hull with a capacitor inside of it. It's missing a lens." icon_state = "laser_wire" icon_state = "laser_case" next_step = /obj/item/glasswork/glass_base/laserpointer_shell_2 @@ -34,8 +34,8 @@ qdel(src) /obj/item/glasswork/glass_base/laserpointer_shell_2 - name = "Laser pointer assembly" - desc = "Good for selling or crafting, by itself its useless. Needs to be screwed together." + name = "near-complete laser pointer assembly" + desc = "A laser pointer hull with a capacitor and a lens inside of it. It needs to be screwed together." icon_state = "laser_wire" icon_state = "laser_case" next_step = /obj/item/laser_pointer/blue/handmade @@ -50,8 +50,8 @@ //NERD SHIT - 5000 /obj/item/glasswork/glass_base/glasses_frame - name = "Glasses Frame" - desc = "Good for crafting a pare of glasses, by itself its useless. Just add a pare of lens." + name = "glasses frame" + desc = "A pair of glasses without the lenses. You could probably add them yourself, though." icon = 'icons/obj/glass_ware.dmi' icon_state = "frames" next_step = /obj/item/glasswork/glass_base/glasses_frame_1 @@ -64,8 +64,8 @@ qdel(src) /obj/item/glasswork/glass_base/glasses_frame_1 - name = "Glasses Frame" - desc = "Good for crafting a pare of glasses, by itself its useless. Just add a the other lens." + name = "glasses frame" + desc = "A pair of shoddily-assembled glasses with only one lens. You could probably add the second one yourself, though." icon = 'icons/obj/glass_ware.dmi' icon_state = "frames_1" next_step = /obj/item/glasswork/glass_base/glasses_frame_2 @@ -78,8 +78,8 @@ qdel(src) /obj/item/glasswork/glass_base/glasses_frame_2 - name = "Glasses Frame" - desc = "Good for crafting a pare of glasses, by itself its useless. Just adjust the pices into the frame with a screwdriver." + name = "glasses frame" + desc = "A pair of hastily-assembled unfitted glasses with both lenses intact. Use a screwdriver to fit them." icon = 'icons/obj/glass_ware.dmi' icon_state = "frames_2" next_step = /obj/item/glasswork/glasses @@ -92,7 +92,7 @@ qdel(src) /obj/item/glasswork/glasses - name = "Handmade Glasses" - desc = "Handmade glasses that have not been polished at all making them useless. Selling them could still be worth a few credits." + name = "handmade glasses" + desc = "A pair of poorly-assembled glasses clearly produced by someone with no qualifications in making glasses. They're smudged, ugly, and don't even fit you. They might be worth some money, though." icon = 'icons/obj/glass_ware.dmi' icon_state = "frames_2" diff --git a/code/datums/diseases/advance/symptoms/oxygen.dm b/code/datums/diseases/advance/symptoms/oxygen.dm index 24e01dbbaf..67e2a8c588 100644 --- a/code/datums/diseases/advance/symptoms/oxygen.dm +++ b/code/datums/diseases/advance/symptoms/oxygen.dm @@ -47,7 +47,7 @@ Bonus M.adjustOxyLoss(-7, 0) M.losebreath = max(0, M.losebreath - 4) if(regenerate_blood && M.blood_volume < (BLOOD_VOLUME_NORMAL * M.blood_ratio)) - M.blood_volume += 1 + M.adjust_integration_blood(1) else if(prob(base_message_chance)) to_chat(M, "[pick("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.")]") diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index bf38bb7c6c..0bf7b13646 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -426,18 +426,21 @@ GENETICS SCANNER if(ishuman(C)) if(H.is_bleeding()) msg += "Subject is bleeding!\n" - var/blood_percent = round((C.scan_blood_volume() / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100) + var/blood_percent = round((C.scan_blood_volume() / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100) + var/integrated_blood_percent = round((C.integrating_blood / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100) var/blood_type = C.dna.blood_type if(!(blood_typepath in GLOB.blood_reagent_types)) var/datum/reagent/R = GLOB.chemical_reagents_list[blood_typepath] if(R) blood_type = R.name - if(C.scan_blood_volume() <= (BLOOD_VOLUME_SAFE*C.blood_ratio) && C.scan_blood_volume() > (BLOOD_VOLUME_OKAY*C.blood_ratio)) - msg += "LOW blood level [blood_percent] %, [C.scan_blood_volume()] cl, type: [blood_type]\n" - else if(C.scan_blood_volume() <= (BLOOD_VOLUME_OKAY*C.blood_ratio)) - msg += "CRITICAL blood level [blood_percent] %, [C.scan_blood_volume()] cl, type: [blood_type]\n" + + if((C.scan_blood_volume() + C.integrating_blood) <= (BLOOD_VOLUME_SAFE * C.blood_ratio) && (C.scan_blood_volume() + C.integrating_blood) > (BLOOD_VOLUME_OKAY*C.blood_ratio)) + msg += "LOW blood level [blood_percent] %, [C.scan_blood_volume()] cl[C.integrating_blood? ", with [integrated_blood_percent] % of it integrating, [C.integrating_blood] cl " : ""]. type: [blood_type]\n" + else if((C.scan_blood_volume() + C.integrating_blood) <= (BLOOD_VOLUME_OKAY * C.blood_ratio)) + msg += "CRITICAL blood level [blood_percent] %, [C.scan_blood_volume()] cl[C.integrating_blood? ", with [integrated_blood_percent] % of it integrating, [C.integrating_blood] cl " : ""]. type: [blood_type]\n" else - msg += "Blood level [blood_percent] %, [C.scan_blood_volume()] cl, type: [blood_type]\n" + msg += "Blood level [blood_percent] %, [C.scan_blood_volume()] cl[C.integrating_blood? ", with [integrated_blood_percent] % of it integrating, [C.integrating_blood] cl " : ""]. type: [blood_type]\n" + var/cyberimp_detect for(var/obj/item/organ/cyberimp/CI in C.internal_organs) diff --git a/code/modules/antagonists/abductor/equipment/glands/heal.dm b/code/modules/antagonists/abductor/equipment/glands/heal.dm index 5ea8f77d6c..8917e1661e 100644 --- a/code/modules/antagonists/abductor/equipment/glands/heal.dm +++ b/code/modules/antagonists/abductor/equipment/glands/heal.dm @@ -144,7 +144,7 @@ owner.Stun(15) owner.adjustToxLoss(-15, TRUE, TRUE) - owner.blood_volume = min(BLOOD_VOLUME_NORMAL, owner.blood_volume + 20) + owner.adjust_integration_blood(20) if(owner.blood_volume < BLOOD_VOLUME_NORMAL) keep_going = TRUE diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm index 3e358cd795..29e64a4913 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm @@ -89,6 +89,7 @@ owner.current.adjustStaminaLoss(-1.5 + (actual_regen * -7) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more. owner.current.adjustCloneLoss(-0.1 * (actual_regen * 2) * mult, 0) owner.current.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1 * (actual_regen * 4) * mult) + owner.current.integrating_blood = 0 // No Bleeding /*if(ishuman(owner.current)) //NOTE Current bleeding is horrible, not to count the amount of blood ballistics delete. var/mob/living/carbon/human/H = owner.current diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index 843e5c6db2..8e6b5c9060 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -297,8 +297,14 @@ prof.socks = H.socks prof.socks_color = H.socks_color - var/list/slots = list("head", "wear_mask", "back", "wear_suit", "w_uniform", "shoes", "belt", "gloves", "glasses", "ears", "wear_id", "s_store") - for(var/slot in slots) + var/datum/icon_snapshot/entry = new + entry.name = H.name + entry.icon = H.icon + entry.icon_state = H.icon_state + entry.overlays = H.get_overlays_copy(list(HANDS_LAYER, HANDCUFF_LAYER, LEGCUFF_LAYER)) + prof.profile_snapshot = entry + + for(var/slot in GLOB.slots) if(slot in H.vars) var/obj/item/I = H.vars[slot] if(!I) @@ -518,6 +524,9 @@ var/socks var/socks_color + /// Icon snapshot of the profile + var/datum/icon_snapshot/profile_snapshot + /datum/changelingprofile/Destroy() qdel(dna) . = ..() @@ -535,13 +544,14 @@ newprofile.underwear = underwear newprofile.undershirt = undershirt newprofile.socks = socks - + newprofile.profile_snapshot = profile_snapshot /datum/antagonist/changeling/xenobio name = "Xenobio Changeling" give_objectives = FALSE show_in_roundend = FALSE //These are here for admin tracking purposes only you_are_greet = FALSE + antag_moodlet = FALSE /datum/antagonist/changeling/roundend_report() var/list/parts = list() diff --git a/code/modules/antagonists/changeling/powers/humanform.dm b/code/modules/antagonists/changeling/powers/humanform.dm index c38bfe3b5b..c9edc12eeb 100644 --- a/code/modules/antagonists/changeling/powers/humanform.dm +++ b/code/modules/antagonists/changeling/powers/humanform.dm @@ -10,15 +10,8 @@ //Transform into a human. /obj/effect/proc_holder/changeling/humanform/sting_action(mob/living/carbon/user) var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/list/names = list() - for(var/datum/changelingprofile/prof in changeling.stored_profiles) - names += "[prof.name]" - var/chosen_name = input("Select the target DNA: ", "Target DNA", null) as null|anything in names - if(!chosen_name) - return - - var/datum/changelingprofile/chosen_prof = changeling.get_dna(chosen_name) + var/datum/changelingprofile/chosen_prof = changeling.select_dna() if(!chosen_prof) return if(!user || user.mob_transforming) diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index a8fe56aae7..9bda1bf5b9 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -78,7 +78,7 @@ if(changeling.chosen_sting) unset_sting(user) return - selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") + selected_dna = changeling.select_dna() if(!selected_dna) return if(NOTRANSSTING in selected_dna.dna.species.species_traits) diff --git a/code/modules/antagonists/changeling/powers/transform.dm b/code/modules/antagonists/changeling/powers/transform.dm index 8e3a36740b..cfd42f05cf 100644 --- a/code/modules/antagonists/changeling/powers/transform.dm +++ b/code/modules/antagonists/changeling/powers/transform.dm @@ -134,7 +134,7 @@ //Change our DNA to that of somebody we've absorbed. /obj/effect/proc_holder/changeling/transform/sting_action(mob/living/carbon/human/user) var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/datum/changelingprofile/chosen_prof = changeling.select_dna("Select the target DNA: ", "Target DNA") + var/datum/changelingprofile/chosen_prof = changeling.select_dna() if(!chosen_prof) return @@ -142,15 +142,21 @@ changeling_transform(user, chosen_prof) return TRUE -/datum/antagonist/changeling/proc/select_dna(var/prompt, var/title) +/** + * Gives a changeling a list of all possible dnas in their profiles to choose from and returns profile containing their chosen dna + */ +/datum/antagonist/changeling/proc/select_dna() var/mob/living/carbon/user = owner.current if(!istype(user)) return - var/list/names = list("Drop Flesh Disguise") - for(var/datum/changelingprofile/prof in stored_profiles) - names += "[prof.name]" + var/list/disguises = list("Drop Flesh Disguise" = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_drop")) + for(var/datum/changelingprofile/current_profile in stored_profiles) + var/datum/icon_snapshot/snap = current_profile.profile_snapshot + var/image/disguise_image = image(icon = snap.icon, icon_state = snap.icon_state) + disguise_image.overlays = snap.overlays + disguises[current_profile.name] = disguise_image - var/chosen_name = input(prompt, title, null) as null|anything in names + var/chosen_name = show_radial_menu(user, user, disguises, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 40, require_near = TRUE, tooltips = TRUE) if(!chosen_name) return @@ -158,6 +164,21 @@ for(var/slot in GLOB.slots) if(istype(user.vars[slot], GLOB.slot2type[slot])) qdel(user.vars[slot]) + return var/datum/changelingprofile/prof = get_dna(chosen_name) return prof + +/** + * Checks if we are allowed to interact with a radial menu + * + * Arguments: + * * user The carbon mob interacting with the menu + */ +/datum/antagonist/changeling/proc/check_menu(mob/living/carbon/user) + if(!istype(user)) + return FALSE + var/datum/antagonist/changeling/changeling_datum = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(!changeling_datum) + return FALSE + return TRUE diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 568f01ab83..9bd1030685 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -687,10 +687,10 @@ if(H.stat == DEAD) to_chat(user,"Only a revive rune can bring back the dead!") return - if(H.blood_volume < (BLOOD_VOLUME_SAFE*H.blood_ratio)) + if(H.functional_blood() < (BLOOD_VOLUME_SAFE*H.blood_ratio)) var/restore_blood = (BLOOD_VOLUME_SAFE*H.blood_ratio) - H.blood_volume - if(uses*2 < restore_blood) - H.blood_volume += uses*2 + if(uses * 2 < restore_blood) + H.adjust_integration_blood(uses * 2) to_chat(user,"You use the last of your blood rites to restore what blood you could!") uses = 0 return ..() diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index a0093e4da1..a2f283ec67 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -219,7 +219,7 @@ if(M.health < M.maxHealth) M.adjustHealth(-3) if(ishuman(L) && L.blood_volume < (BLOOD_VOLUME_NORMAL * L.blood_ratio)) - L.blood_volume += 1.0 + L.adjust_integration_blood(1.0) CHECK_TICK diff --git a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm index 4d6576ee92..158acc0071 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm @@ -147,7 +147,7 @@ carbon_target.blood_volume -= 20 if(carbon_user.blood_volume < BLOOD_VOLUME_MAXIMUM) //we dont want to explode after all - carbon_user.blood_volume += 20 + carbon_user.adjust_integration_blood(20) return /obj/effect/proc_holder/spell/pointed/blood_siphon/can_target(atom/target, mob/user, silent) diff --git a/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm index ed41cae8ce..bfcaff7d56 100644 --- a/code/modules/arousal/genitals.dm +++ b/code/modules/arousal/genitals.dm @@ -27,6 +27,12 @@ if(do_update) update() +/obj/item/organ/genital/Destroy() + if(linked_organ?.linked_organ == src) + linked_organ.linked_organ = null + linked_organ = null + . = ..() + /obj/item/organ/genital/proc/set_aroused_state(new_state,cause = "manual toggle") if(!(genital_flags & GENITAL_CAN_AROUSE)) return FALSE diff --git a/code/modules/atmospherics/auxgm/gas_types.dm b/code/modules/atmospherics/auxgm/gas_types.dm index 22a42319b3..6d30d7ed92 100644 --- a/code/modules/atmospherics/auxgm/gas_types.dm +++ b/code/modules/atmospherics/auxgm/gas_types.dm @@ -3,10 +3,16 @@ specific_heat = 20 name = "Oxygen" oxidation_temperature = T0C - 100 // it checks max of this and fire temperature, so rarely will things spontaneously combust + powermix = 1 + heat_penalty = 1 + transmit_modifier = 1.5 /datum/gas/nitrogen id = GAS_N2 specific_heat = 20 + name = "Nitrogen" + powermix = -1 + heat_penalty = -1.5 breath_alert_info = list( not_enough_alert = list( alert_category = "not_enough_nitro", @@ -17,12 +23,14 @@ alert_type = /atom/movable/screen/alert/too_much_nitro ) ) - name = "Nitrogen" /datum/gas/carbon_dioxide //what the fuck is this? id = GAS_CO2 specific_heat = 30 name = "Carbon Dioxide" + powermix = 1 + heat_penalty = 0.1 + powerloss_inhibition = 1 breath_results = GAS_O2 breath_alert_info = list( not_enough_alert = list( @@ -43,6 +51,9 @@ gas_overlay = "plasma" moles_visible = MOLES_GAS_VISIBLE flags = GAS_FLAG_DANGEROUS + heat_penalty = 15 + transmit_modifier = 4 + powermix = 1 // no fire info cause it has its own bespoke reaction for trit generation reasons /datum/gas/water_vapor @@ -52,6 +63,8 @@ gas_overlay = "water_vapor" moles_visible = MOLES_GAS_VISIBLE fusion_power = 8 + heat_penalty = 8 + powermix = 1 breath_reagent = /datum/reagent/water /datum/gas/hypernoblium @@ -71,6 +84,7 @@ fire_products = list(GAS_N2 = 1) oxidation_rate = 0.5 oxidation_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST + 100 + heat_resistance = 6 /datum/gas/nitryl id = GAS_NITRYL @@ -91,6 +105,9 @@ moles_visible = MOLES_GAS_VISIBLE flags = GAS_FLAG_DANGEROUS fusion_power = 1 + powermix = 1 + heat_penalty = 10 + transmit_modifier = 30 /* these are for when we add hydrogen, trit gets to keep its hardcoded fire for legacy reasons fire_provides = list(GAS_H2O = 2) @@ -105,6 +122,10 @@ name = "BZ" flags = GAS_FLAG_DANGEROUS fusion_power = 8 + powermix = 1 + heat_penalty = 5 + transmit_modifier = -2 + radioactivity_modifier = 5 /datum/gas/stimulum id = GAS_STIMULUM @@ -119,6 +140,10 @@ fusion_power = 10 oxidation_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 1000 // it is VERY stable oxidation_rate = 8 + powermix = -1 + heat_penalty = -1 + transmit_modifier = -5 + heat_resistance = 3 /datum/gas/miasma id = GAS_MIASMA diff --git a/code/modules/atmospherics/gasmixtures/auxgm.dm b/code/modules/atmospherics/gasmixtures/auxgm.dm index 6c7bc0cc49..4aa68aa710 100644 --- a/code/modules/atmospherics/gasmixtures/auxgm.dm +++ b/code/modules/atmospherics/gasmixtures/auxgm.dm @@ -35,6 +35,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(GAS_O2, GAS_N2, GAS_CO2, GA var/list/fire_enthalpies = list() var/list/fire_products = list() var/list/fire_burn_rates = list() + var/list/supermatter = list() /datum/gas @@ -55,6 +56,12 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(GAS_O2, GAS_N2, GAS_CO2, GA var/list/fire_products = null // what results when this gas is burned (oxidizer or fuel); null for none var/fire_energy_released = 0 // how much energy is released per mole of fuel burned var/fire_burn_rate = 1 // how many moles are burned per product released + var/powermix = 0 // how much this gas contributes to the supermatter's powermix ratio + var/heat_penalty = 0 // heat and waste penalty from having the supermatter crystal surrounded by this gas; negative numbers reduce + var/transmit_modifier = 0 // bonus to supermatter power generation (multiplicative, since it's % based, and divided by 10) + var/radioactivity_modifier = 0 // improves effect of transmit modifiers, must be from -10 to 10 + var/heat_resistance = 0 // makes the crystal more resistant against heat damage. + var/powerloss_inhibition = 0 // Reduces how much power the supermatter loses each tick /datum/gas/proc/breath(partial_pressure, light_threshold, heavy_threshold, moles, mob/living/carbon/C, obj/item/organ/lungs/lungs) // This is only called on gases with the GAS_FLAG_BREATH_PROC flag. When possible, do NOT use this-- @@ -100,12 +107,20 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(GAS_O2, GAS_N2, GAS_CO2, GA if(gas.fire_products) fire_products[g] = gas.fire_products fire_enthalpies[g] = gas.fire_energy_released - + add_supermatter_properties(gas) _auxtools_register_gas(gas) /proc/finalize_gas_refs() /datum/auxgm/New() + src.supermatter[HEAT_PENALTY] = list() + src.supermatter[TRANSMIT_MODIFIER] = list() + src.supermatter[RADIOACTIVITY_MODIFIER] = list() + src.supermatter[HEAT_RESISTANCE] = list() + src.supermatter[POWERLOSS_INHIBITION] = list() + src.supermatter[POWER_MIX] = list() + src.supermatter[ALL_SUPERMATTER_GASES] = list() + for(var/gas_path in subtypesof(/datum/gas)) var/datum/gas/gas = new gas_path add_gas(gas) diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index 551c1c5536..8aa265d39f 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -172,15 +172,13 @@ GLOBAL_LIST_EMPTY(gateway_destinations) /// bumper object, the thing that starts actual teleport var/obj/effect/gateway_portal_bumper/portal /// Visual object for handling the viscontents - /// DISABLED DUE TO BYOND BUG CAUSING STACK OVERFLOWS OF ANY HUMAN INSTANTIATION NEAR AN ACTIVATED GATEWAY. - /// Probably due to it referencing each other through the gateway (there's a deep loop, maybe BYOND isn't catching something when it usually would) - // var/obj/effect/gateway_portal_effect/portal_visuals + var/obj/effect/gateway_portal_effect/portal_visuals /obj/machinery/gateway/Initialize() generate_destination() update_icon() - // portal_visuals = new - // vis_contents += portal_visuals + portal_visuals = new + vis_contents += portal_visuals return ..() /obj/machinery/gateway/proc/generate_destination() @@ -197,7 +195,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations) if(use_power == ACTIVE_POWER_USE) use_power = IDLE_POWER_USE update_icon() - // portal_visuals.reset_visuals() + portal_visuals.reset_visuals() /obj/machinery/gateway/process() if((stat & (NOPOWER)) && use_power) @@ -217,7 +215,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations) return target = D target.activate(destination) - // portal_visuals.setup_visuals(target) + portal_visuals.setup_visuals(target) generate_bumper() use_power = ACTIVE_POWER_USE update_icon() @@ -359,6 +357,8 @@ GLOBAL_LIST_EMPTY(gateway_destinations) animate(get_filter("portal_ripple"), time = 1.3 SECONDS, loop = -1, easing = LINEAR_EASING, radius = 32) - var/turf/center_turf = our_destination.get_target_turf() + /// DISABLED DUE TO BYOND BUG CAUSING STACK OVERFLOWS OF ANY HUMAN INSTANTIATION NEAR AN ACTIVATED GATEWAY. + /// Probably due to it referencing each other through the gateway (there's a deep loop, maybe BYOND isn't catching something when it usually would) + //var/turf/center_turf = our_destination.get_target_turf() - vis_contents += block(locate(center_turf.x - 1, center_turf.y - 1, center_turf.z), locate(center_turf.x + 1, center_turf.y + 1, center_turf.z)) + //vis_contents += block(locate(center_turf.x - 1, center_turf.y - 1, center_turf.z), locate(center_turf.x + 1, center_turf.y + 1, center_turf.z)) diff --git a/code/modules/events/sentience.dm b/code/modules/events/sentience.dm index ba14a5307f..d90792c88f 100644 --- a/code/modules/events/sentience.dm +++ b/code/modules/events/sentience.dm @@ -37,7 +37,7 @@ continue if(L.mob_biotypes & blacklisted_biotypes) //hey can you don't continue - if(!(L in GLOB.player_list) && !L.mind) + if(!(L in GLOB.player_list) && !L.mind && !L.incapacitated()) potential += L if(!potential.len) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 7377913c15..f650a935ea 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -497,6 +497,72 @@ /obj/item/reagent_containers/food/drinks/bottle/grenadine/empty list_reagents = null +/obj/item/reagent_containers/food/drinks/bottle/blank //Don't let players print these from a lathe, bottles should be obtained in mass from the bar only. + name = "glass bottle" + desc = "This blank bottle is unyieldingly anonymous, offering no clues to it's contents." + icon_state = "glassbottle" + volume = 90 + spillable = TRUE + obj_flags = UNIQUE_RENAME + +/obj/item/reagent_containers/food/drinks/bottle/blank/update_icon() + ..() + add_overlay("[initial(icon_state)]shine") + +/obj/item/reagent_containers/food/drinks/bottle/blank/Initialize() + . = ..() + update_icon() + +/obj/item/reagent_containers/food/drinks/bottle/blank/get_part_rating() + return reagents.maximum_volume + +/obj/item/reagent_containers/food/drinks/bottle/blank/on_reagent_change(changetype) + update_icon() + +/obj/item/reagent_containers/food/drinks/bottle/blank/update_overlays() + . = ..() + if(!cached_icon) + cached_icon = icon_state + + if(reagents.total_volume) + var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "[cached_icon]10", color = mix_color_from_reagents(reagents.reagent_list)) + + var/percent = round((reagents.total_volume / volume) * 100) + switch(percent) + if(0 to 9) + filling.icon_state = "[cached_icon]0" + if(10 to 19) + filling.icon_state = "[cached_icon]10" + if(20 to 29) + filling.icon_state = "[cached_icon]20" + if(30 to 39) + filling.icon_state = "[cached_icon]30" + if(40 to 49) + filling.icon_state = "[cached_icon]40" + if(50 to 59) + filling.icon_state = "[cached_icon]50" + if(60 to 69) + filling.icon_state = "[cached_icon]60" + if(70 to 79) + filling.icon_state = "[cached_icon]70" + if(80 to 89) + filling.icon_state = "[cached_icon]80" + if(90 to INFINITY) + filling.icon_state = "[cached_icon]90" + . += filling + +/obj/item/reagent_containers/food/drinks/bottle/blank/small + name = "small glass bottle" + desc = "This small bottle is unyieldingly anonymous, offering no clues to it's contents." + icon_state = "glassbottlesmall" + volume = 60 + +/obj/item/reagent_containers/food/drinks/bottle/blank/pitcher + name = "glass pitcher" + desc = "This is a pitcher for large amounts of liquid of any kind." + icon_state = "unipitcher" + volume = 120 + ////////////////////////// MOLOTOV /////////////////////// /obj/item/reagent_containers/food/drinks/bottle/molotov name = "molotov cocktail" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm index 3834eb9231..b5ba7f0732 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm @@ -436,13 +436,27 @@ /datum/sprite_accessory/tails/human/shark name = "Shark" - icon_state = "shark" + icon_state = "carp" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/human/shark name = "Shark" + icon_state = "carp" + color_src = MATRIXED + icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED + +/datum/sprite_accessory/tails/human/sharkalt + name = "Shark (alt)" + icon_state = "shark" + color_src = MATRIXED + icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED + +/datum/sprite_accessory/tails_animated/human/sharkalt + name = "Shark (alt)" icon_state = "shark" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' @@ -897,11 +911,21 @@ /datum/sprite_accessory/tails/mam_tails/shark name = "Shark" - icon_state = "shark" + icon_state = "carp" matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/shark name = "Shark" + icon_state = "carp" + matrixed_sections = MATRIX_RED + +/datum/sprite_accessory/tails/mam_tails/sharkalt + name = "Shark (alt)" + icon_state = "shark" + matrixed_sections = MATRIX_RED + +/datum/sprite_accessory/tails_animated/mam_tails_animated/sharkalt + name = "Shark (alt)" icon_state = "shark" matrixed_sections = MATRIX_RED diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index cf1a158fc5..7615792028 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -39,29 +39,35 @@ return if(bodytemperature >= TCRYO && !(HAS_TRAIT(src, TRAIT_HUSK))) //cryosleep or husked people do not pump the blood. - - //Blood regeneration if there is some space - if(blood_volume < BLOOD_VOLUME_NORMAL && !HAS_TRAIT(src, TRAIT_NOHUNGER)) + if(integrating_blood > 0) + var/blood_integrated = max(integrating_blood - 1, 0) + var/blood_diff = integrating_blood - blood_integrated + integrating_blood = blood_integrated + if(blood_volume < BLOOD_VOLUME_MAXIMUM) + blood_volume += blood_diff + if(blood_volume < BLOOD_VOLUME_NORMAL) var/nutrition_ratio = 0 - switch(nutrition) - if(0 to NUTRITION_LEVEL_STARVING) - nutrition_ratio = 0.2 - if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) - nutrition_ratio = 0.4 - if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED) - nutrition_ratio = 0.6 - if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED) - nutrition_ratio = 0.8 - else - nutrition_ratio = 1 - if(satiety > 80) - nutrition_ratio *= 1.25 - adjust_nutrition(-nutrition_ratio * HUNGER_FACTOR) - blood_volume = min(BLOOD_VOLUME_NORMAL, blood_volume + 0.5 * nutrition_ratio) + if(!HAS_TRAIT(src, TRAIT_NOHUNGER)) + switch(nutrition) + if(0 to NUTRITION_LEVEL_STARVING) + nutrition_ratio = 0.2 + if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) + nutrition_ratio = 0.4 + if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED) + nutrition_ratio = 0.6 + if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED) + nutrition_ratio = 0.8 + else + nutrition_ratio = 1 + if(satiety > 80) + nutrition_ratio *= 1.25 + adjust_nutrition(-nutrition_ratio * HUNGER_FACTOR) + blood_volume = min(BLOOD_VOLUME_NORMAL, blood_volume + 0.5 * nutrition_ratio) //Effects of bloodloss var/word = pick("dizzy","woozy","faint") - switch(blood_volume) + var/blood_effect_volume = blood_volume + integrating_blood + switch(blood_effect_volume) if(BLOOD_VOLUME_MAXIMUM to BLOOD_VOLUME_EXCESS) if(prob(10)) to_chat(src, "You feel terribly bloated.") @@ -94,14 +100,22 @@ bleed(temp_bleed) //Makes a blood drop, leaking amt units of blood from the mob -/mob/living/carbon/proc/bleed(amt) - if(blood_volume) +/mob/living/carbon/proc/bleed(amt, force) + var/bled = FALSE //Have we bled amnt? + if(blood_volume > amt || force && blood_volume) blood_volume = max(blood_volume - amt, 0) - if(isturf(src.loc)) //Blood loss still happens in locker, floor stays clean - if(amt >= 10) - add_splatter_floor(src.loc) - else - add_splatter_floor(src.loc, 1) + bled = TRUE + if(integrating_blood > amt || force && integrating_blood) + integrating_blood = max(integrating_blood - amt, 0) + bled = TRUE + if(!bled && !force) //If we are already cycling back through, don't do this again + bleed(amt, TRUE) //we cycle back through to try to bleed SOMETHING, not neccesarily the required amount + return + if(isturf(src.loc)) //Blood loss still happens in locker, floor stays clean + if(amt >= 10) + add_splatter_floor(src.loc) + else + add_splatter_floor(src.loc, TRUE) /mob/living/carbon/human/bleed(amt) amt *= physiology.bleed_mod @@ -114,6 +128,7 @@ /mob/living/proc/restore_blood() blood_volume = initial(blood_volume) + integrating_blood = 0 /mob/living/carbon/restore_blood() blood_volume = (BLOOD_VOLUME_NORMAL * blood_ratio) @@ -368,10 +383,17 @@ return blood_ratio = 1 -/mob/living/proc/AdjustBloodVol(var/value) +/mob/living/proc/AdjustBloodVol(value) if(blood_ratio == value) return blood_ratio = value if(ishuman(src)) var/mob/living/carbon/human/H = src H.handle_blood() + +/mob/living/proc/adjust_integration_blood(value, remove_actual_blood, force) + if(integrating_blood + value < 0 && remove_actual_blood) + blood_volume += value + integrating_blood + blood_volume = max(blood_volume, 0) + integrating_blood += value + integrating_blood = clamp(integrating_blood, 0, force ? INFINITY : (BLOOD_VOLUME_MAXIMUM - (integrating_blood + blood_volume))) diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index cae9280c61..41c3882de6 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -85,7 +85,7 @@ owner.adjustOxyLoss(-heal_amt) owner.adjustCloneLoss(-heal_amt) if(owner.blood_volume && (owner.blood_volume < BLOOD_VOLUME_NORMAL)) - owner.blood_volume += 5 + owner.adjust_integration_blood(5) else owner.adjustPlasma(plasma_rate * 0.1) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 541db47431..f6ef8e8177 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1273,3 +1273,6 @@ var/mob/living/carbon/C = usr if(I.can_give()) C.give(src) + +/mob/living/carbon/proc/functional_blood() + return blood_volume + integrating_blood diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 65bcddf0ad..e3af31ae96 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -825,6 +825,7 @@ dna.remove_mutation(HM.name) if(blood_volume < (BLOOD_VOLUME_NORMAL*blood_ratio)) blood_volume = (BLOOD_VOLUME_NORMAL*blood_ratio) + integrating_blood = 0 ..() /mob/living/carbon/human/check_weakness(obj/item/weapon, mob/living/attacker) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 7e3b2ab015..2e530226c8 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -182,3 +182,8 @@ destination.underwear = underwear destination.undershirt = undershirt destination.socks = socks + +/mob/living/carbon/human/adjust_integration_blood(value, force) + if(NOBLOOD in dna.species.species_traits) //Can't lose blood if your species doesn't have any + return + . = ..() diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index f270e215eb..6f94be2d41 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1365,7 +1365,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.type == exotic_blood && !istype(exotic_blood, /datum/reagent/blood)) - H.blood_volume = min(H.blood_volume + round(chem.volume, 0.1), BLOOD_VOLUME_MAXIMUM) + H.adjust_integration_blood(round(chem.volume, 0.1)) H.reagents.del_reagent(chem.type) return TRUE return FALSE diff --git a/code/modules/mob/living/carbon/human/species_types/bugmen.dm b/code/modules/mob/living/carbon/human/species_types/bugmen.dm index c649339fe3..f87f425b5f 100644 --- a/code/modules/mob/living/carbon/human/species_types/bugmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/bugmen.dm @@ -6,7 +6,7 @@ species_traits = list(LIPS,EYECOLOR,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR,WINGCOLOR,HAS_FLESH,HAS_BONE) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG mutant_bodyparts = list("mcolor" = "FFFFFF","mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_tail" = "None", "mam_ears" = "None", - "insect_wings" = "None", "insect_fluff" = "None", "mam_snouts" = "None", "taur" = "None", "insect_markings" = "None") + "insect_wings" = "None", "insect_fluff" = "None", "mam_snouts" = "None", "taur" = "None", "insect_markings" = "None", "mam_body_markings" = list()) attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index 6327375bb5..eee5757b46 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -4,7 +4,7 @@ id = SPECIES_FELINID limbs_id = SPECIES_HUMAN - mutant_bodyparts = list("mam_tail" = "Cat", "mam_ears" = "Cat", "deco_wings" = "None") + mutant_bodyparts = list("mam_tail" = "Cat", "mam_ears" = "Cat", "deco_wings" = "None", "mam_body_markings" = list()) mutantears = /obj/item/organ/ears/cat mutanttail = /obj/item/organ/tail/cat diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index d0f6c64550..e0558e6533 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -4,7 +4,7 @@ default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR,HAS_FLESH,HAS_BONE) - mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None", "legs" = "Plantigrade") + mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None", "legs" = "Plantigrade", "mam_body_markings" = list()) use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 7a5bcc9e3a..04c69a4138 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -53,16 +53,16 @@ exotic_blood_color = "#" + H.dna.features["mcolor"] /datum/species/jelly/spec_life(mob/living/carbon/human/H) - if(H.stat == DEAD || HAS_TRAIT(H, TRAIT_NOMARROW)) //can't farm slime jelly from a dead slime/jelly person indefinitely, and no regeneration for blooduskers + if(H.stat == DEAD || HAS_TRAIT(H, TRAIT_NOMARROW)) //can't farm slime jelly from a dead slime/jelly person indefinitely, and no regeneration for bloodsuckers return if(!H.blood_volume) - H.blood_volume += 5 + H.adjust_integration_blood(5) H.adjustBruteLoss(5) to_chat(H, "You feel empty!") if(H.blood_volume < (BLOOD_VOLUME_NORMAL * H.blood_ratio)) if(H.nutrition >= NUTRITION_LEVEL_STARVING) - H.blood_volume += 3 + H.adjust_integration_blood(3) H.nutrition -= 2.5 if(H.blood_volume < (BLOOD_VOLUME_OKAY*H.blood_ratio)) if(prob(5)) @@ -82,7 +82,7 @@ consumed_limb.drop_limb() to_chat(H, "Your [consumed_limb] is drawn back into your body, unable to maintain its shape!") qdel(consumed_limb) - H.blood_volume += 20 + H.adjust_integration_blood(20) ////////////////////////////////////////////////////////SLIMEPEOPLE/////////////////////////////////////////////////////////////////// @@ -151,7 +151,7 @@ if(prob(5)) to_chat(H, "You feel very bloated!") else if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) - H.blood_volume += 3 + H.adjust_integration_blood(3) H.nutrition -= 2.5 ..() diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index a76fbe4c4e..7b07dfb487 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -112,6 +112,7 @@ var/stun_absorption = null //converted to a list of stun absorption sources this mob has when one is added var/blood_volume = 0 //how much blood the mob has + var/integrating_blood = 0 //this is the variable you want to affect if you want to give the mob blood, this will slowly turn into normal blood, preventing some cheesyness, use adjust_integration_blood() instead of modifying directly var/blood_ratio = 1 //How much blood the mob needs, in terms of ratio (i.e 1.2 will require BLOOD_VOLUME_NORMAL of 672) DO NOT GO ABOVE 3.55 Well, actually you can but, then they can't get enough blood. var/obj/effect/proc_holder/ranged_ability //Any ranged ability the mob has, as a click override diff --git a/code/modules/mob/living/simple_animal/hostile/cat_butcher.dm b/code/modules/mob/living/simple_animal/hostile/cat_butcher.dm index 6950c6409f..78697cb4fe 100644 --- a/code/modules/mob/living/simple_animal/hostile/cat_butcher.dm +++ b/code/modules/mob/living/simple_animal/hostile/cat_butcher.dm @@ -94,7 +94,7 @@ L.SetUnconscious(0, FALSE) L.adjustOxyLoss(-50)// do CPR first if(L.blood_volume <= 500) //bandage them up and give em some blood if they're bleeding - L.blood_volume += 30 + L.adjust_integration_blood(30) L.bleedsuppress = 0 if(L.getBruteLoss() >= 50)// first, did we beat them into crit? if so, heal that var/healing = min(L.getBruteLoss(), 120) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 363d3f6b71..b460cfea51 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -12,33 +12,17 @@ #define OBJECT (LOWEST + 1) #define LOWEST (1) -#define PLASMA_HEAT_PENALTY 15 // Higher == Bigger heat and waste penalty from having the crystal surrounded by this gas. Negative numbers reduce penalty. -#define OXYGEN_HEAT_PENALTY 1 -#define PLUOXIUM_HEAT_PENALTY -1 -#define TRITIUM_HEAT_PENALTY 10 -#define CO2_HEAT_PENALTY 0.1 -#define NITROGEN_HEAT_PENALTY -1.5 -#define BZ_HEAT_PENALTY 5 -#define H2O_HEAT_PENALTY 8 -//#define FREON_HEAT_PENALTY -10 //very good heat absorbtion and less plasma and o2 generation -//#define HYDROGEN_HEAT_PENALTY 10 // similar heat penalty as tritium (dangerous) - - -//All of these get divided by 10-bzcomp * 5 before having 1 added and being multiplied with power to determine rads -//Keep the negative values here above -10 and we won't get negative rads -#define OXYGEN_TRANSMIT_MODIFIER 1.5 //Higher == Bigger bonus to power generation. -#define PLASMA_TRANSMIT_MODIFIER 4 -#define BZ_TRANSMIT_MODIFIER -2 -#define TRITIUM_TRANSMIT_MODIFIER 30 //We divide by 10, so this works out to 3 -#define PLUOXIUM_TRANSMIT_MODIFIER -5 //Should halve the power output -#define H2O_TRANSMIT_MODIFIER 2 -//#define HYDROGEN_TRANSMIT_MODIFIER 25 //increase the radiation emission, but less than the trit (2.5) - -#define BZ_RADIOACTIVITY_MODIFIER 5 //Improves the effect of transmit modifiers - -#define N2O_HEAT_RESISTANCE 6 //Higher == Gas makes the crystal more resistant against heat damage. -#define PLUOXIUM_HEAT_RESISTANCE 3 -//#define HYDROGEN_HEAT_RESISTANCE 2 // just a bit of heat resistance to spice it up +/datum/auxgm/proc/add_supermatter_properties(datum/gas/gas) + var/g = gas.id + var/list/props = src.supermatter + if(gas.powermix || gas.heat_penalty || gas.transmit_modifier || gas.radioactivity_modifier || gas.heat_resistance || gas.powerloss_inhibition) + props[HEAT_PENALTY][g] = gas.heat_penalty + props[TRANSMIT_MODIFIER][g] = gas.transmit_modifier + props[RADIOACTIVITY_MODIFIER][g] = gas.radioactivity_modifier + props[HEAT_RESISTANCE][g] = gas.heat_resistance + props[POWERLOSS_INHIBITION][g] = gas.powerloss_inhibition + props[POWER_MIX][g] = gas.powermix + props[ALL_SUPERMATTER_GASES] += g #define POWERLOSS_INHIBITION_GAS_THRESHOLD 0.20 //Higher == Higher percentage of inhibitor gas needed before the charge inertia chain reaction effect starts. #define POWERLOSS_INHIBITION_MOLE_THRESHOLD 20 //Higher == More moles of the gas are needed before the charge inertia chain reaction effect starts. //Scales powerloss inhibition down until this amount of moles is reached @@ -148,90 +132,17 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/power = 0 ///Determines the rate of positve change in gas comp values var/gas_change_rate = 0.05 - ///The list of gases we will be interacting with in process_atoms() - var/list/gases_we_care_about = list( - GAS_O2, - GAS_H2O, - GAS_PLASMA, - GAS_CO2, - GAS_NITROUS, - GAS_N2, - GAS_PLUOXIUM, - GAS_TRITIUM, - GAS_BZ, -// /datum/gas/freon, -// /datum/gas/hydrogen, - ) - ///The list of gases mapped against their current comp. We use this to calculate different values the supermatter uses, like power or heat resistance. It doesn't perfectly match the air around the sm, instead moving up at a rate determined by gas_change_rate per call. Ranges from 0 to 1 - var/list/gas_comp = list( - GAS_O2 = 0, - GAS_H2O = 0, - GAS_PLASMA = 0, - GAS_CO2 = 0, - GAS_NITROUS = 0, - GAS_N2 = 0, - GAS_PLUOXIUM = 0, - GAS_TRITIUM = 0, - GAS_BZ = 0, -// /datum/gas/freon = 0, -// /datum/gas/hydrogen = 0, - ) - ///The list of gases mapped against their transmit values. We use it to determine the effect different gases have on radiation - var/list/gas_trans = list( - GAS_O2 = OXYGEN_TRANSMIT_MODIFIER, - GAS_H2O = H2O_TRANSMIT_MODIFIER, - GAS_PLASMA = PLASMA_TRANSMIT_MODIFIER, - GAS_PLUOXIUM = PLUOXIUM_TRANSMIT_MODIFIER, - GAS_TRITIUM = TRITIUM_TRANSMIT_MODIFIER, - GAS_BZ = BZ_TRANSMIT_MODIFIER, -// /datum/gas/hydrogen = HYDROGEN_TRANSMIT_MODIFIER, - ) - ///The list of gases mapped against their heat penaltys. We use it to determin molar and heat output - var/list/gas_heat = list( - GAS_O2 = OXYGEN_HEAT_PENALTY, - GAS_H2O = H2O_HEAT_PENALTY, - GAS_PLASMA = PLASMA_HEAT_PENALTY, - GAS_CO2 = CO2_HEAT_PENALTY, - GAS_N2 = NITROGEN_HEAT_PENALTY, - GAS_PLUOXIUM = PLUOXIUM_HEAT_PENALTY, - GAS_TRITIUM = TRITIUM_HEAT_PENALTY, - GAS_BZ = BZ_HEAT_PENALTY, -// /datum/gas/freon = FREON_HEAT_PENALTY, -// /datum/gas/hydrogen = HYDROGEN_HEAT_PENALTY, - ) - ///The list of gases mapped against their heat resistance. We use it to moderate heat damage. - var/list/gas_resist = list( - GAS_NITROUS = N2O_HEAT_RESISTANCE, - GAS_PLUOXIUM = PLUOXIUM_HEAT_RESISTANCE, -// /datum/gas/hydrogen = HYDROGEN_HEAT_RESISTANCE, - ) - ///The list of gases mapped against their powermix ratio - var/list/gas_powermix = list( - GAS_O2 = 1, - GAS_H2O = 1, - GAS_PLASMA = 1, - GAS_CO2 = 1, - GAS_N2 = -1, - GAS_PLUOXIUM = -1, - GAS_TRITIUM = 1, - GAS_BZ = 1, -// /datum/gas/freon = -1, -// /datum/gas/hydrogen = 1, - ) + var/list/gas_comp = list() ///The last air sample's total molar count, will always be above or equal to 0 var/combined_gas = 0 ///Affects the power gain the sm experiances from heat var/gasmix_power_ratio = 0 - ///Affects the amount of o2 and plasma the sm outputs, along with the heat it makes. - var/dynamic_heat_modifier = 1 ///Affects the amount of damage and minimum point at which the sm takes heat damage var/dynamic_heat_resistance = 1 ///Uses powerloss_dynamic_scaling and combined_gas to lessen the effects of our powerloss functions var/powerloss_inhibitor = 1 ///Based on co2 percentage, slowly moves between 0 and 1. We use it to calc the powerloss_inhibitor var/powerloss_dynamic_scaling= 0 - ///Affects the amount of radiation the sm makes. We multiply this with power to find the rads. - var/power_transmission_bonus = 0 ///Used to increase or lessen the amount of damage the sm takes from heat based on molar counts. var/mole_heat_penalty = 0 ///Takes the energy throwing things into the sm generates and slowly turns it into actual power @@ -481,6 +392,10 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) removed = new() damage_archived = damage + var/list/gas_info = GLOB.gas_data.supermatter + + var/list/gases_we_care_about = gas_info[ALL_SUPERMATTER_GASES] + /******** EXPERIMENTAL, HUGBOXY AS HELL CITADEL CHANGES: Even in a vaccum, update gas composition and modifiers. This means that the SM will usually have a very small explosion if it ends up being breached to space, @@ -491,7 +406,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(takes_damage) damage += max((power / 1000) * DAMAGE_INCREASE_MULTIPLIER, 0.1) // always does at least some damage combined_gas = max(0, combined_gas - 0.5) // Slowly wear off. - for(var/gasID in gases_we_care_about) + for(var/gasID in gas_comp) gas_comp[gasID] = max(0, gas_comp[gasID] - 0.05) //slowly ramp down else if(takes_damage) @@ -531,46 +446,49 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Prevents huge bursts of gas/heat when a large amount of something is introduced //They range between 0 and 1 for(var/gasID in gases_we_care_about) + if(!(gasID in gas_comp)) + gas_comp[gasID] = 0 gas_comp[gasID] += clamp(max(removed.get_moles(gasID)/combined_gas, 0) - gas_comp[gasID], -1, gas_change_rate) - var/list/heat_mod = gases_we_care_about.Copy() - var/list/transit_mod = gases_we_care_about.Copy() - var/list/resistance_mod = gases_we_care_about.Copy() + var/list/threshold_mod = gases_we_care_about.Copy() + + var/list/powermix = gas_info[POWER_MIX] + var/list/heat = gas_info[HEAT_PENALTY] + var/list/transmit = gas_info[TRANSMIT_MODIFIER] + var/list/resist = gas_info[HEAT_RESISTANCE] + var/list/radioactivity = gas_info[RADIOACTIVITY_MODIFIER] + var/list/inhibition = gas_info[POWERLOSS_INHIBITION] //We're concerned about pluoxium being too easy to abuse at low percents, so we make sure there's a substantial amount. var/pluoxiumbonus = (gas_comp[GAS_PLUOXIUM] >= 0.15) //makes pluoxium only work at 15%+ - var/h2obonus = 1 - (gas_comp[GAS_H2O] * 0.25)//At max this value should be 0.75 + var/h2obonus = 1 - (gas_comp[GAS_H2O] * 0.25)//At min this value should be 0.75 // var/freonbonus = (gas_comp[/datum/gas/freon] <= 0.03) //Let's just yeet power output if this shit is high - heat_mod[GAS_PLUOXIUM] = pluoxiumbonus - transit_mod[GAS_PLUOXIUM] = pluoxiumbonus - resistance_mod[GAS_PLUOXIUM] = pluoxiumbonus + threshold_mod[GAS_PLUOXIUM] = pluoxiumbonus //No less then zero, and no greater then one, we use this to do explosions and heat to power transfer //Be very careful with modifing this var by large amounts, and for the love of god do not push it past 1 gasmix_power_ratio = 0 - for(var/gasID in gas_powermix) - gasmix_power_ratio += gas_comp[gasID] * gas_powermix[gasID] - gasmix_power_ratio = clamp(gasmix_power_ratio, 0, 1) - - //Minimum value of -10, maximum value of 23. Effects plasma and o2 output and the output heat - dynamic_heat_modifier = 0 - for(var/gasID in gas_heat) - dynamic_heat_modifier += gas_comp[gasID] * gas_heat[gasID] * (isnull(heat_mod[gasID]) ? 1 : heat_mod[gasID]) - dynamic_heat_modifier *= h2obonus - dynamic_heat_modifier = max(dynamic_heat_modifier, 0.5) - - //Value between 1 and 10. Effects the damage heat does to the crystal + //Affects the amount of o2 and plasma the sm outputs, along with the heat it makes. + var/dynamic_heat_modifier = 0 + //Effects the damage heat does to the crystal. dynamic_heat_resistance = 0 - for(var/gasID in gas_resist) - dynamic_heat_resistance += gas_comp[gasID] * gas_resist[gasID] * (isnull(resistance_mod[gasID]) ? 1 : resistance_mod[gasID]) - dynamic_heat_resistance = max(dynamic_heat_resistance, 1) - - //Value between -5 and 30, used to determine radiation output as it concerns things like collectors. - power_transmission_bonus = 0 - for(var/gasID in gas_trans) - power_transmission_bonus += gas_comp[gasID] * gas_trans[gasID] * (isnull(transit_mod[gasID]) ? 1 : transit_mod[gasID]) + //We multiply this with power to find the rads. + var/power_transmission_bonus = 0 + var/powerloss_inhibition_gas = 0 + var/radioactivity_modifier = 0 + for(var/gasID in gas_comp) + var/this_comp = gas_comp[gasID] * (isnull(threshold_mod[gasID] ? 1 : threshold_mod[gasID])) + gasmix_power_ratio += this_comp * powermix[gasID] + dynamic_heat_modifier += this_comp * heat[gasID] + dynamic_heat_resistance += this_comp * resist[gasID] + power_transmission_bonus += this_comp * transmit[gasID] + powerloss_inhibition_gas += this_comp * inhibition[gasID] + radioactivity_modifier += this_comp * radioactivity[gasID] + dynamic_heat_modifier *= h2obonus power_transmission_bonus *= h2obonus + gasmix_power_ratio = clamp(gasmix_power_ratio, 0, 1) + dynamic_heat_modifier = max(dynamic_heat_modifier, 0.5) //more moles of gases are harder to heat than fewer, so let's scale heat damage around them mole_heat_penalty = max(combined_gas / MOLE_HEAT_PENALTY, 0.25) @@ -578,8 +496,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Ramps up or down in increments of 0.02 up to the proportion of co2 //Given infinite time, powerloss_dynamic_scaling = co2comp //Some value between 0 and 1 - if (combined_gas > POWERLOSS_INHIBITION_MOLE_THRESHOLD && gas_comp[GAS_CO2] > POWERLOSS_INHIBITION_GAS_THRESHOLD) //If there are more then 20 mols, and more then 20% co2 - powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling + clamp(gas_comp[GAS_CO2] - powerloss_dynamic_scaling, -0.02, 0.02), 0, 1) + if (combined_gas > POWERLOSS_INHIBITION_MOLE_THRESHOLD && powerloss_inhibition_gas > POWERLOSS_INHIBITION_GAS_THRESHOLD) //If there are more then 20 mols, and more then 20% co2 + powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling + clamp(powerloss_inhibition_gas - powerloss_dynamic_scaling, -0.02, 0.02), 0, 1) else powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling - 0.05, 0, 1) //Ranges from 0 to 1(1-(value between 0 and 1 * ranges from 1 to 1.5(mol / 500))) @@ -611,23 +529,15 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(prob(50)) //(1 + (tritRad + pluoxDampen * bzDampen * o2Rad * plasmaRad / (10 - bzrads))) * freonbonus - radiation_pulse(src, power * max(0, (1 + (power_transmission_bonus/(10-(gas_comp[GAS_BZ] * BZ_RADIOACTIVITY_MODIFIER)))) * 1))//freonbonus))// RadModBZ(500%) - if(gas_comp[GAS_BZ] >= 0.4 && prob(30 * gas_comp[GAS_BZ])) - src.fire_nuclear_particle() // Start to emit radballs at a maximum of 30% chance per tick + radiation_pulse(src, power * max(0, (1 + (power_transmission_bonus/(10-radioactivity_modifier)))))//freonbonus))// RadModBZ(500%) + if(radioactivity_modifier >= 2 && prob(6 * radioactivity_modifier)) + src.fire_nuclear_particle() //Power * 0.55 * a value between 1 and 0.8 var/device_energy = power * REACTION_POWER_MODIFIER - //To figure out how much temperature to add each tick, consider that at one atmosphere's worth - //of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature - //that the device energy is around 2140. At that stage, we don't want too much heat to be put out - //Since the core is effectively "cold" - - //Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock - //is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall. - //Power * 0.55 * (some value between 1.5 and 23) / 5 removed.set_temperature(removed.return_temperature() + ((device_energy * dynamic_heat_modifier) / THERMAL_RELEASE_MODIFIER)) - //We can only emit so much heat, that being 57500 + //We don't want our output to be too hot removed.set_temperature(max(0, min(removed.return_temperature(), 2500 * dynamic_heat_modifier))) //Calculate how much gas to release diff --git a/code/modules/procedural_mapping/mapGenerators/repair.dm b/code/modules/procedural_mapping/mapGenerators/repair.dm index d9380a40dd..a36ac88d6c 100644 --- a/code/modules/procedural_mapping/mapGenerators/repair.dm +++ b/code/modules/procedural_mapping/mapGenerators/repair.dm @@ -41,6 +41,7 @@ set waitfor = FALSE var/turf/B = L atoms += B + B.assemble_baseturfs(B.type) for(var/A in B) atoms += A if(istype(A,/obj/structure/cable)) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 9982bc3722..12c91e145a 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -586,7 +586,7 @@ All effects don't start immediately, but rather get worse over time; the rate is if(AmBloodsucker(C)) disgust_bloodsucker(FALSE, 1) //Bloodsuckers get SOME blood from it, for style reasons. if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio)) - C.blood_volume = min((BLOOD_VOLUME_NORMAL*C.blood_ratio), C.blood_volume + 3) //Bloody Mary quickly restores blood loss. + C.adjust_integration_blood(3) //Bloody Mary quickly restores blood loss. ..() /datum/reagent/consumable/ethanol/brave_bull @@ -2593,7 +2593,7 @@ All effects don't start immediately, but rather get worse over time; the rate is alcohol_description = "sweet" else alcohol_description = "watery" //How the hell did you get negative boozepwr? - + var/list/fruits = list() if(names_in_order.len <= 3) fruits = names_in_order diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index fe843fff36..a07c5f7a2a 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -396,26 +396,34 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 60 taste_description = "sweetness and salt" + var/extra_regen = 0.25 // in addition to acting as temporary blood, also add this much to their actual blood per tick var/last_added = 0 var/maximum_reachable = BLOOD_VOLUME_NORMAL - 10 //So that normal blood regeneration can continue with salglu active - var/extra_regen = 0.25 // in addition to acting as temporary blood, also add this much to their actual blood per tick pH = 5.5 -/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/M) - if((HAS_TRAIT(M, TRAIT_NOMARROW))) - return - if(last_added) - M.blood_volume -= last_added - last_added = 0 - if(M.blood_volume < maximum_reachable) //Can only up to double your effective blood level. - var/amount_to_add = min(M.blood_volume, volume*5) - var/new_blood_level = min(M.blood_volume + amount_to_add, maximum_reachable) - last_added = new_blood_level - M.blood_volume - M.blood_volume = new_blood_level + extra_regen +/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/human/M) if(prob(33)) M.adjustBruteLoss(-0.5*REM, 0) M.adjustFireLoss(-0.5*REM, 0) . = TRUE + if((HAS_TRAIT(M, TRAIT_NOMARROW))) + return ..() + if(last_added) + M.adjust_integration_blood(-last_added, TRUE) + last_added = 0 + if(M.functional_blood() < maximum_reachable) //Can only up to double your effective blood level. + var/new_blood_level = min(volume * 5, maximum_reachable) + last_added = new_blood_level + M.adjust_integration_blood(new_blood_level + (extra_regen * REM)) + if(prob(33)) + M.adjustBruteLoss(-0.5*REM, 0) + M.adjustFireLoss(-0.5*REM, 0) + . = TRUE + ..() + +/datum/reagent/medicine/salglu_solution/on_mob_delete(mob/living/carbon/human/M) + if(last_added) + M.adjust_integration_blood(-last_added, TRUE) ..() /datum/reagent/medicine/salglu_solution/overdose_process(mob/living/M) @@ -1295,7 +1303,7 @@ M.adjustCloneLoss(-3*REM, FALSE) M.adjustStaminaLoss(-25*REM,FALSE) if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio)) - M.blood_volume += 40 // blood fall out man bad + M.adjust_integration_blood(40) // blood fall out man bad ..() . = 1 @@ -1316,7 +1324,7 @@ M.adjustCloneLoss(-1.25*REM, FALSE) M.adjustStaminaLoss(-4*REM,FALSE) if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio)) - M.blood_volume += 3 + M.adjust_integration_blood(3) ..() . = 1 diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 0c70f47c53..bf93c933de 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -48,7 +48,7 @@ var/mob/living/carbon/C = L var/blood_id = C.get_blood_id() if((HAS_TRAIT(C, TRAIT_NOMARROW) || blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) - C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM * C.blood_ratio) + C.adjust_integration_blood(round(reac_volume, 0.1)) // we don't care about bloodtype here, we're just refilling the mob if(reac_volume >= 10 && istype(L) && method != INJECT) @@ -253,7 +253,7 @@ /datum/reagent/water/on_mob_life(mob/living/carbon/M) . = ..() if(M.blood_volume) - M.blood_volume += 0.1 // water is good for you! + M.adjust_integration_blood(0.1) // water is good for you! /* * Water reaction to turf @@ -370,7 +370,7 @@ /datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M) if(M.blood_volume) - M.blood_volume += 0.1 // water is good for you! + M.adjust_integration_blood(0.1) // water is good for you! if(!data) data = list("misc" = 1) data["misc"]++ @@ -456,7 +456,7 @@ M.adjustBruteLoss(-2, FALSE) M.adjustFireLoss(-2, FALSE) if(ishuman(M) && M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio)) - M.blood_volume += 3 + M.adjust_integration_blood(3) else // Will deal about 90 damage when 50 units are thrown M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150) M.adjustToxLoss(2, FALSE) @@ -1146,7 +1146,7 @@ if((HAS_TRAIT(C, TRAIT_NOMARROW))) return if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio)) - C.blood_volume += 0.25 + C.adjust_integration_blood(0.25) ..() /datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume) @@ -2552,7 +2552,7 @@ M.adjustBruteLoss(-3, FALSE) M.adjustFireLoss(-3, FALSE) if(ishuman(M) && M.blood_volume < BLOOD_VOLUME_NORMAL) - M.blood_volume += 3 + M.adjust_integration_blood(3) else M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150) M.adjustToxLoss(2, FALSE) diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 7dfe19f635..630a3629cf 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -245,6 +245,36 @@ category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE +/datum/design/emptybottle + name = "Glass Bottle" + desc = "A small, empty bottle for storing liquids." + id = "emptyglassbottle" + build_type = PROTOLATHE + materials = list(/datum/material/glass = 400) + build_path = /obj/item/reagent_containers/food/drinks/bottle/blank/small + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/largeemptybottle + name = "Large Glass Bottle" + desc = "A large, empty bottle for storing liquids." + id = "largeemptyglassbottle" + build_type = PROTOLATHE + materials = list(/datum/material/glass = 2000) + build_path = /obj/item/reagent_containers/food/drinks/bottle/blank + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/emptypitcher + name = "Pitcher" + desc = "A large Pitcher to hold vast amounts of liquid." + id = "emptypitcher" + build_type = PROTOLATHE + materials = list(/datum/material/glass = 3600) + build_path = /obj/item/reagent_containers/food/drinks/bottle/blank/pitcher + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + /datum/design/air_horn name = "Air Horn" desc = "Damn son, where'd you find this?" diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm index 9274522553..81a837504a 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -109,7 +109,7 @@ /datum/nanite_program/blood_restoring/active_effect() if(iscarbon(host_mob)) var/mob/living/carbon/C = host_mob - C.blood_volume += 2 + C.adjust_integration_blood(2) /datum/nanite_program/repairing name = "Mechanical Repair" diff --git a/code/modules/research/techweb/nodes/export_nodes.dm b/code/modules/research/techweb/nodes/export_nodes.dm index cbdedef113..5259fc1bfa 100644 --- a/code/modules/research/techweb/nodes/export_nodes.dm +++ b/code/modules/research/techweb/nodes/export_nodes.dm @@ -14,8 +14,8 @@ /datum/techweb_node/bottle_exports id = "bottle_exports" - display_name = "Legal Bottling" + display_name = "Advanced Bottling" prereq_ids = list("blueprinted_bottles") - description = "New bottles for printing and selling." - design_ids = list("minikeg", "blooddrop", "slim_gold", "white_bloodmoon", "greenroad") + description = "New bottles for printing, storage and selling." + design_ids = list("minikeg", "blooddrop", "slim_gold", "white_bloodmoon", "greenroad", "emptyglassbottle", "largeemptyglassbottle", "emptypitcher") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 250) diff --git a/code/modules/research/xenobiology/crossbreeding/consuming.dm b/code/modules/research/xenobiology/crossbreeding/consuming.dm index af37a70232..8d80613be4 100644 --- a/code/modules/research/xenobiology/crossbreeding/consuming.dm +++ b/code/modules/research/xenobiology/crossbreeding/consuming.dm @@ -322,7 +322,7 @@ Consuming extracts: playsound(get_turf(M), 'sound/effects/splat.ogg', 10, 1) if(iscarbon(M)) var/mob/living/carbon/C = M - C.blood_volume += 25 //Half a vampire drain. + C.adjust_integration_blood(25) //Half a vampire drain. /obj/item/slimecross/consuming/green colour = "green" diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index a8cefd9bed..70cd28718c 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -187,7 +187,7 @@ switch(activation_type) if(SLIME_ACTIVATE_MINOR) user.adjust_nutrition(50) - user.blood_volume += 50 + user.adjust_integration_blood(50) to_chat(user, "You activate [src], and your body is refilled with fresh slime jelly!") return 150 diff --git a/code/modules/surgery/advanced/revival.dm b/code/modules/surgery/advanced/revival.dm index a8d7deb803..945dee48e7 100644 --- a/code/modules/surgery/advanced/revival.dm +++ b/code/modules/surgery/advanced/revival.dm @@ -25,7 +25,7 @@ return TRUE /datum/surgery_step/revive name = "electrically stimulate brain" - implements = list(/obj/item/shockpaddles = 100, /obj/item/abductor/gizmo = 100, /obj/item/melee/baton = 75, /obj/item/organ/cyberimp/arm/baton = 75, /obj/item/organ/cyberimp/arm/gun/taser = 60, /obj/item/gun/energy/e_gun/advtaser = 60, /obj/item/gun/energy/taser = 60) + implements = list(/obj/item/shockpaddles = 100, /obj/item/abductor/gizmo = 100, /obj/item/rod_of_asclepius = 100, /obj/item/melee/baton = 75, /obj/item/organ/cyberimp/arm/baton = 75, /obj/item/organ/cyberimp/arm/gun/taser = 60, /obj/item/gun/energy/e_gun/advtaser = 60, /obj/item/gun/energy/taser = 60) time = 120 /datum/surgery_step/revive/tool_check(mob/user, obj/item/tool) . = TRUE diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 536b70044f..93f88192e5 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -533,7 +533,7 @@ var/total_moles = breath.total_moles() var/pressure = breath.return_pressure() var/plasma_pp = PP(breath, GAS_PLASMA) - owner.blood_volume += (0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you. + owner.adjust_integration_blood(0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you. /obj/item/organ/lungs/yamerol name = "Yamerol lungs" diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index 5ec0987111..87f2a0940b 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -5,6 +5,9 @@ icon_deny = "boozeomat-deny" products = list(/obj/item/reagent_containers/food/drinks/drinkingglass = 30, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12, + /obj/item/reagent_containers/food/drinks/bottle/blank = 5, + /obj/item/reagent_containers/food/drinks/bottle/blank/small = 10, + /obj/item/reagent_containers/food/drinks/bottle/blank/pitcher = 2, /obj/item/reagent_containers/food/drinks/bottle/gin = 5, /obj/item/reagent_containers/food/drinks/bottle/whiskey = 5, /obj/item/reagent_containers/food/drinks/bottle/tequila = 5, diff --git a/dependencies.sh b/dependencies.sh index d7b56ae5b9..cdbdcd98df 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -11,7 +11,7 @@ export BYOND_MINOR=1556 export RUST_G_VERSION=0.4.8 #auxmos git tag -export AUXMOS_VERSION=v0.2.2 +export AUXMOS_VERSION=v0.2.3 #node version export NODE_VERSION=12 diff --git a/html/changelog.html b/html/changelog.html index a295e5279c..b4710f0b3b 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,102 @@ -->
+

23 August 2021

+

zeroisthebiggay updated:

+ + +

22 August 2021

+

zeroisthebiggay updated:

+ + +

20 August 2021

+

EmeraldSundisk updated:

+ +

Putnam3145 updated:

+ +

TripleShades updated:

+ +

WanderingFox95 updated:

+ + +

18 August 2021

+

timothyteakettle updated:

+ + +

16 August 2021

+

BlueWildrose updated:

+ +

bunny232 updated:

+ + +

13 August 2021

+

Putnam3145 updated:

+ + +

12 August 2021

+

Arturlang updated:

+ +

Putnam3145 updated:

+ +

cadyn updated:

+ + +

11 August 2021

+

timothyteakettle updated:

+ + +

09 August 2021

+

Arturlang updated:

+ +

BlueWildrose updated:

+ +

Putnam3145 updated:

+ +

07 August 2021

BlueWildrose updated:

GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index afdc1928f8..0e2ea29dac 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -29784,3 +29784,63 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. don''t announce they''re ending if they never announced they''re starting tweak: Supernovae say explicitly no rad storms can happen if they can''t' - rscadd: Monstermos is back +2021-08-09: + Arturlang: + - bugfix: Nanite machinery overlays should now work properly + - code_imp: screen objects are now atom/movables instead + - code_imp: Update appearance is used for updating atoms now instead of update_icon + and such + BlueWildrose: + - bugfix: Old gateway animation is back. Feedback is given that the gateway is open + again. + Putnam3145: + - balance: Rod of asclepius can now be used for revival surgery +2021-08-11: + timothyteakettle: + - rscadd: lets felinids, humans and moths have markings +2021-08-12: + Arturlang: + - rscdel: Nonslimes and nonvampires will no longer be able to increase their blood + to stupid heights + Putnam3145: + - refactor: Supermatter values use auxgm + cadyn: + - server: precompile.sh and build.sh updated, auxmos set to 0.2.3 in dependencies.sh +2021-08-13: + Putnam3145: + - bugfix: makes certain organs no longer have circular references +2021-08-16: + BlueWildrose: + - bugfix: Incapacitated mobs are blacklisted from being human-level intelligence + sentience event candidates. This is particularly important due to slimes in + BZ stasis on the station. + bunny232: + - bugfix: Polyvitiligo actually changes your color now +2021-08-18: + timothyteakettle: + - rscadd: lets you select 4 prosthetic limbs instead of only 2 +2021-08-20: + EmeraldSundisk: + - rscadd: Adds a law office/courtroom to OmegaStation + - rscadd: Adds a gateway to OmegaStation + - rscadd: Adds a pool/maintenance bar to OmegaStation + - rscdel: 'Removes the original maintenance garden in OmegaStation tweak: Relocates + the bathrooms to the starboard hall tweak: Modifies port quarter maintenance + to include some affected items' + Putnam3145: + - rscadd: Beach now has showers + TripleShades: + - rscadd: At least four or five space heaters spread across Pubby Station Maints + - rscadd: Missing decal in Pubby Station engineering + - bugfix: Moved an atmos alarm in the SM emitter chamber so it wont be destroyed + WanderingFox95: + - rscadd: Empty bottles and pitchers are available to the bartender now. + - imageadd: They even come with 10 different fillstates! + - imageadd: Better Shark Tails, dodododododo~ + - rscadd: The old ones are now listed as carp tails. +2021-08-22: + zeroisthebiggay: + - spellcheck: trillby can't spell pair +2021-08-23: + zeroisthebiggay: + - spellcheck: i hate the grammarchrist diff --git a/html/changelogs/AutoChangeLog-pr-14971.yml b/html/changelogs/AutoChangeLog-pr-14971.yml deleted file mode 100644 index 02388f97d9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-14971.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - bugfix: "Nanite machinery overlays should now work properly" - - code_imp: "screen objects are now atom/movables instead" - - code_imp: "Update appearance is used for updating atoms now instead of update_icon and such" diff --git a/icons/mob/radial.dmi b/icons/mob/radial.dmi index e681069131..27b268eea0 100644 Binary files a/icons/mob/radial.dmi and b/icons/mob/radial.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index b7f21a1fe4..0f49bc6d5f 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi index 8115036b6f..7926ead12d 100644 Binary files a/icons/obj/reagentfillings.dmi and b/icons/obj/reagentfillings.dmi differ diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm index 043d9e5603..3725e46b38 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm @@ -226,7 +226,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.adjustCloneLoss(-10, 0) //I don't want to make Rezadone obsolete. M.adjustBruteLoss(-25, 0)// Note that this takes a long time to apply and makes you fat and useless when it's in you, I don't think this small burst of healing will be useful considering how long it takes to get there. M.adjustFireLoss(-25, 0) - M.blood_volume += 250 + M.adjust_integration_blood(250) M.heal_bodypart_damage(1,1) M.action_cooldown_mod = 1 if (M.nutrition < 1500) @@ -236,7 +236,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING to_chat(M, "the cells fail to hold enough mass to generate a clone, instead diffusing into your system.") M.adjustBruteLoss(-10, 0) M.adjustFireLoss(-10, 0) - M.blood_volume += 100 + M.adjust_integration_blood(100) M.action_cooldown_mod = 1 if (M.nutrition < 1500) M.adjust_nutrition(500) @@ -309,7 +309,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING /datum/reagent/fermi/SDGFheal/on_mob_life(mob/living/carbon/M)//Used to heal the clone after splitting, the clone spawns damaged. (i.e. insentivies players to make more than required, so their clone doesn't have to be treated) if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio)) - M.blood_volume += 10 + M.adjust_integration_blood(10) M.adjustCloneLoss(-2, 0) M.setOrganLoss(ORGAN_SLOT_BRAIN, -1) M.adjust_nutrition(10) diff --git a/modular_citadel/icons/mob/mam_tails.dmi b/modular_citadel/icons/mob/mam_tails.dmi index 5e5a87c199..c1ffced3d5 100644 Binary files a/modular_citadel/icons/mob/mam_tails.dmi and b/modular_citadel/icons/mob/mam_tails.dmi differ diff --git a/tools/build/build.sh b/tools/build/build.sh index 5d050764d1..62372eff2d 100755 --- a/tools/build/build.sh +++ b/tools/build/build.sh @@ -58,7 +58,7 @@ fi #Compile and move auxmos binary to repo root echo "Deploying auxmos..." git checkout "$AUXMOS_VERSION" -env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo rustc --release --target=i686-unknown-linux-gnu --features "all_reaction_hooks" -- -C target-cpu=native +env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo rustc --release --target=i686-unknown-linux-gnu --features all_reaction_hooks,explosive_decompression -- -C target-cpu=native mv target/i686-unknown-linux-gnu/release/libauxmos.so ../../../../libauxmos.so cd ../.. diff --git a/tools/ci/check_grep.sh b/tools/ci/check_grep.sh index 9638215bb8..079f79704d 100755 --- a/tools/ci/check_grep.sh +++ b/tools/ci/check_grep.sh @@ -6,6 +6,10 @@ shopt -s globstar st=0 +if git grep -P "\r\n"; then + echo "ERROR: CRLF line endings detected. Please stop using the webeditor, and fix it using a desktop Git client." + st = 1 +fi; if grep -El '^\".+\" = \(.+\)' _maps/**/*.dmm; then echo "ERROR: Non-TGM formatted map detected. Please convert it using Map Merger!" st=1 diff --git a/tools/tgs4_scripts/PreCompile.sh b/tools/tgs4_scripts/PreCompile.sh index 6463b1a0d6..6130736b4e 100755 --- a/tools/tgs4_scripts/PreCompile.sh +++ b/tools/tgs4_scripts/PreCompile.sh @@ -84,7 +84,7 @@ fi echo "Deploying auxmos..." git checkout "$AUXMOS_VERSION" -env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo rustc --release --target=i686-unknown-linux-gnu --features "all_reaction_hooks" -- -C target-cpu=native +env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo rustc --release --target=i686-unknown-linux-gnu --features all_reaction_hooks,explosive_decompression -- -C target-cpu=native mv -f target/i686-unknown-linux-gnu/release/libauxmos.so "$1/libauxmos.so" cd ..