diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index e5edafff2b2..b4d563d8fed 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -1145,7 +1145,7 @@ /obj/structure/table, /obj/item/book/manual/wiki/barman_recipes, /obj/item/reagent_containers/cup/glass/shaker, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/machinery/light/small/directional/west, /turf/open/floor/wood, /area/ruin/powered/beach) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm index 726a767d107..ae743175f17 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm @@ -243,7 +243,7 @@ "ks" = ( /obj/structure/sign/warning/fire/directional/north, /obj/structure/reagent_dispensers/fueltank/large{ - anchored = 1; + anchored = 1 }, /obj/structure/railing{ dir = 8 @@ -379,7 +379,7 @@ "qO" = ( /obj/structure/sign/warning/fire/directional/south, /obj/structure/reagent_dispensers/fueltank/large{ - anchored = 1; + anchored = 1 }, /obj/structure/railing{ dir = 8 diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 6bdb976de4b..bbc09f38f59 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -3028,7 +3028,7 @@ /area/ruin/syndicate_lava_base/dormitories) "Ev" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -4; pixel_y = 9 }, diff --git a/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm b/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm index e90c2666bdc..e548d3cbc6b 100644 --- a/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm +++ b/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm @@ -477,7 +477,7 @@ pixel_x = -1; pixel_y = 5 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 8; pixel_y = 3 }, diff --git a/_maps/RandomRuins/SpaceRuins/bus.dmm b/_maps/RandomRuins/SpaceRuins/bus.dmm index 1ecb40291e3..b821bf32195 100644 --- a/_maps/RandomRuins/SpaceRuins/bus.dmm +++ b/_maps/RandomRuins/SpaceRuins/bus.dmm @@ -244,7 +244,7 @@ /turf/open/misc/asteroid/airless, /area/ruin/space) "uO" = ( -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /turf/open/misc/asteroid/airless, /area/ruin/space) "wc" = ( diff --git a/_maps/RandomRuins/SpaceRuins/film_studio.dmm b/_maps/RandomRuins/SpaceRuins/film_studio.dmm index fbd07432e52..4b8f54e1cdb 100644 --- a/_maps/RandomRuins/SpaceRuins/film_studio.dmm +++ b/_maps/RandomRuins/SpaceRuins/film_studio.dmm @@ -902,7 +902,7 @@ "rQ" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, /obj/structure/table, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/item/reagent_containers/cup/glass/bottle/beer{ pixel_x = 5; pixel_y = -2 diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm index 96525b60616..4e01555219c 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm @@ -673,7 +673,7 @@ /obj/structure/sinkframe, /obj/structure/broken_flooring/pile, /obj/effect/decal/cleanable/blood/gibs/old, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 6; pixel_y = -3 }, diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index eec1e5a9671..1e2ad893c92 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -2517,7 +2517,7 @@ pixel_x = -4; pixel_y = 0 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 10; pixel_y = 17 }, diff --git a/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm b/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm index af55da5cb4f..1b5da8d37ed 100644 --- a/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm +++ b/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm @@ -116,7 +116,7 @@ dir = 4; pixel_y = 0 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 6; pixel_y = 26 }, diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index 823332f9297..bbc1f67457e 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -800,7 +800,7 @@ /area/awaymission/cabin) "ev" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /turf/open/floor/wood, /area/awaymission/cabin) "ew" = ( diff --git a/_maps/RandomZLevels/TheBeach.dmm b/_maps/RandomZLevels/TheBeach.dmm index 63e3b580ec9..df0347e5729 100644 --- a/_maps/RandomZLevels/TheBeach.dmm +++ b/_maps/RandomZLevels/TheBeach.dmm @@ -3562,7 +3562,7 @@ /area/awaymission/beach) "Sg" = ( /obj/structure/table/bronze, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 5 }, /obj/item/reagent_containers/condiment/coconut_milk{ diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index c830fdc968f..5b0bbb0c733 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -4882,7 +4882,7 @@ "Gl" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 5 }, /obj/machinery/door/poddoor/shutters{ diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 16cc8924aae..b7d9cc58540 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -1689,7 +1689,7 @@ "hn" = ( /obj/structure/table, /obj/item/stack/package_wrap, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/crew_quarters) diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index cc46323dff5..4ced4938047 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -32123,9 +32123,9 @@ pixel_x = 3; pixel_y = 6 }, -/obj/item/reagent_containers/cup/rag{ - pixel_x = -6; - pixel_y = 4 +/obj/item/rag{ + pixel_y = 4; + pixel_x = -6 }, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/science/xenobiology) @@ -33998,7 +33998,7 @@ /area/station/hallway/secondary/construction) "lnD" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -6; pixel_y = 6 }, @@ -66740,7 +66740,7 @@ pixel_x = -13; pixel_y = 14 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 7; pixel_y = 7 }, diff --git a/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm b/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm index 870c9e34446..3b91b092916 100644 --- a/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm +++ b/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm @@ -1772,7 +1772,7 @@ id = "abandoned_kitchen"; name = "Kitchen Shudders" }, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /turf/open/floor/iron/cafeteria, /area/station/maintenance/starboard/lesser) "aCO" = ( @@ -17454,7 +17454,7 @@ /area/station/maintenance/department/engine) "fmZ" = ( /obj/structure/table, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 2; pixel_y = 5 }, @@ -45317,7 +45317,7 @@ pixel_x = -6; pixel_y = 5 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 10; pixel_y = 17 }, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index ab9355066a3..200f92a49b9 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -10046,7 +10046,7 @@ name = "Bar Requests Console" }, /obj/effect/mapping_helpers/requests_console/supplies, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /turf/open/floor/iron/checker{ dir = 1 }, @@ -47317,7 +47317,7 @@ pixel_x = -8 }, /obj/effect/turf_decal/delivery, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /turf/open/floor/iron, /area/station/service/kitchen/abandoned) "lKe" = ( @@ -67036,7 +67036,7 @@ }, /obj/item/book/manual/wiki/cooking_to_serve_man, /obj/item/knife/kitchen, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/structure/table, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) @@ -79566,7 +79566,7 @@ name = "scissors"; pixel_y = 1 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 4 }, /obj/structure/table, diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index ca081aaa238..0890551bbb4 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -8286,7 +8286,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) "cjJ" = ( @@ -10449,7 +10449,7 @@ /area/station/command/heads_quarters/captain) "cQc" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/item/clothing/head/collectable/tophat{ pixel_x = 6; pixel_y = 5 @@ -82726,7 +82726,7 @@ pixel_x = 5; pixel_y = 6 }, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/structure/table/wood, /obj/item/holosign_creator/robot_seat/bar{ pixel_y = 6 diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 53ca4aad46d..37d299a5cd0 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -2512,7 +2512,7 @@ /obj/structure/desk_bell{ pixel_x = 7 }, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/item/reagent_containers/cup/glass/coffee{ pixel_x = -3; pixel_y = 9 @@ -6732,7 +6732,7 @@ pixel_x = 8; pixel_y = 2 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -4 }, /turf/open/floor/iron/cafeteria, @@ -8892,7 +8892,7 @@ }, /obj/item/clothing/mask/surgical, /obj/item/clothing/suit/apron/surgical, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/machinery/newscaster/directional/south, /turf/open/floor/iron/white, /area/station/medical/abandoned) @@ -10187,7 +10187,7 @@ /turf/open/floor/iron, /area/station/command/heads_quarters/ce) "dJT" = ( -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/structure/table/wood, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, @@ -14345,7 +14345,7 @@ /obj/structure/table, /obj/item/kitchen/rollingpin, /obj/effect/turf_decal/trimline/brown/warning, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/effect/turf_decal/tile/bar{ dir = 1 }, @@ -24993,7 +24993,7 @@ /area/station/security/prison/mess) "iSt" = ( /obj/structure/table, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 14 }, /obj/item/reagent_containers/cup/glass/waterbottle{ @@ -38105,7 +38105,7 @@ /obj/effect/landmark/navigate_destination/bar, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/structure/table, /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, @@ -39640,7 +39640,7 @@ pixel_x = -6; pixel_y = 10 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -10; pixel_y = 4 }, diff --git a/_maps/map_files/NebulaStation/NebulaStation.dmm b/_maps/map_files/NebulaStation/NebulaStation.dmm index 682eb7cfee9..d5a0b031d47 100644 --- a/_maps/map_files/NebulaStation/NebulaStation.dmm +++ b/_maps/map_files/NebulaStation/NebulaStation.dmm @@ -7320,7 +7320,7 @@ /area/station/medical/chemistry) "bfc" = ( /obj/structure/table, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 14 }, /obj/item/reagent_containers/cup/glass/waterbottle{ @@ -54885,7 +54885,7 @@ /area/station/maintenance/port/aft) "ify" = ( /obj/structure/table/reinforced/rglass, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 11; pixel_x = -4 }, @@ -73482,7 +73482,7 @@ pixel_x = -6; pixel_y = 2 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 5; pixel_x = 6 }, @@ -81440,7 +81440,7 @@ }, /obj/item/clothing/mask/surgical, /obj/item/clothing/suit/apron/surgical, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /turf/open/floor/iron/white/textured_large, /area/station/maintenance/department/medical) "mec" = ( @@ -84085,7 +84085,7 @@ pixel_x = -8; pixel_y = 13 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 14; pixel_x = 7 }, @@ -104261,7 +104261,7 @@ "puA" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/spawner/random/maintenance/two, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -105860,7 +105860,7 @@ /area/station/engineering/atmos) "pFZ" = ( /obj/structure/table, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 14; pixel_x = 7 }, @@ -114850,7 +114850,7 @@ /obj/structure/desk_bell{ pixel_x = 7 }, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/item/reagent_containers/cup/glass/coffee{ pixel_x = -3; pixel_y = 9 @@ -131082,7 +131082,7 @@ dir = 8 }, /obj/item/food/energybar, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 14 }, /obj/effect/turf_decal/siding/thinplating_new/light{ @@ -146515,7 +146515,7 @@ "vKP" = ( /obj/effect/turf_decal/tile/dark/opposingcorners, /obj/structure/table/reinforced/rglass, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = -6; pixel_x = 6 }, @@ -151705,7 +151705,7 @@ dir = 1 }, /obj/structure/table, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 14 }, /obj/item/reagent_containers/cup/glass/waterbottle{ @@ -160772,7 +160772,7 @@ pixel_x = 7; pixel_y = 4 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -6; pixel_y = 4 }, diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 6fd168d26ba..9408693271c 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -9585,7 +9585,7 @@ /obj/structure/table/wood, /obj/item/book/manual/wiki/barman_recipes, /obj/item/reagent_containers/cup/glass/shaker, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/machinery/newscaster/directional/south, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/small/directional/east, diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_attachment_a_3.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_attachment_a_3.dmm index 933e982d3a8..d644068cab3 100644 --- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_attachment_a_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_attachment_a_3.dmm @@ -53,7 +53,7 @@ "K" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 13; pixel_x = -7 }, diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 33a4f4a4b5c..7faabeb5eff 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -2163,7 +2163,7 @@ pixel_x = 6; pixel_y = 6 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -5; pixel_y = 8 }, @@ -10470,7 +10470,7 @@ "cAJ" = ( /obj/structure/table, /obj/item/razor, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 8; pixel_y = 15 }, @@ -23649,7 +23649,7 @@ pixel_x = 9; pixel_y = 5 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -6; pixel_y = 2 }, @@ -37745,7 +37745,7 @@ pixel_x = -5; pixel_y = 8 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 6; pixel_y = 5 }, diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index 3c3fc943b1c..51a51c65385 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -524,7 +524,7 @@ /area/station/cargo/storage) "ait" = ( /obj/structure/table, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -5; pixel_y = 8 }, @@ -30028,7 +30028,7 @@ /obj/machinery/light/small/directional/east, /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /turf/open/floor/plating, /area/station/maintenance/central/greater) "kvX" = ( diff --git a/_maps/shuttles/emergency_birdshot.dmm b/_maps/shuttles/emergency_birdshot.dmm index 1cf44657848..47e5de8ac3a 100644 --- a/_maps/shuttles/emergency_birdshot.dmm +++ b/_maps/shuttles/emergency_birdshot.dmm @@ -257,7 +257,7 @@ /obj/item/reagent_containers/syringe/epinephrine{ pixel_x = -4 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 3; pixel_y = 12 }, diff --git a/_maps/shuttles/emergency_cruise.dmm b/_maps/shuttles/emergency_cruise.dmm index a04903b6a3a..2558bc9c5bb 100644 --- a/_maps/shuttles/emergency_cruise.dmm +++ b/_maps/shuttles/emergency_cruise.dmm @@ -563,7 +563,7 @@ /obj/structure/table/wood/shuttle_bar{ boot_dir = 4 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -3; pixel_y = 1 }, diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index 01a873d8731..2eb0e949737 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -969,7 +969,7 @@ pixel_x = 7; pixel_y = 11 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -6; pixel_y = 4 }, diff --git a/_maps/shuttles/emergency_monastery.dmm b/_maps/shuttles/emergency_monastery.dmm index 01e49397ee4..63df00c0048 100644 --- a/_maps/shuttles/emergency_monastery.dmm +++ b/_maps/shuttles/emergency_monastery.dmm @@ -3568,7 +3568,7 @@ /area/shuttle/escape) "XK" = ( /obj/structure/closet/crate/bin, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_tranquility.dmm b/_maps/shuttles/emergency_tranquility.dmm index 0de15be89cb..e44665e39c7 100644 --- a/_maps/shuttles/emergency_tranquility.dmm +++ b/_maps/shuttles/emergency_tranquility.dmm @@ -1597,7 +1597,7 @@ pixel_x = 6; pixel_y = 9 }, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = -2 }, /turf/open/floor/sepia, diff --git a/_maps/shuttles/pirate_irs.dmm b/_maps/shuttles/pirate_irs.dmm index c78c73a7538..dec40b87bd7 100644 --- a/_maps/shuttles/pirate_irs.dmm +++ b/_maps/shuttles/pirate_irs.dmm @@ -36,7 +36,7 @@ /obj/effect/turf_decal/siding/dark_green{ dir = 1 }, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /turf/open/floor/iron/kitchen, /area/shuttle/pirate) "bT" = ( diff --git a/_maps/templates/battlecruiser_starfury.dmm b/_maps/templates/battlecruiser_starfury.dmm index 659a066347b..7a28474079a 100644 --- a/_maps/templates/battlecruiser_starfury.dmm +++ b/_maps/templates/battlecruiser_starfury.dmm @@ -2255,7 +2255,7 @@ pixel_x = 5; pixel_y = -2 }, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/structure/table/reinforced/plastitaniumglass, /obj/effect/turf_decal/siding/dark{ dir = 1 diff --git a/_maps/templates/holodeck_lounge.dmm b/_maps/templates/holodeck_lounge.dmm index 1bcec197d7b..88d56f65711 100644 --- a/_maps/templates/holodeck_lounge.dmm +++ b/_maps/templates/holodeck_lounge.dmm @@ -1,7 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /obj/structure/table/wood/shuttle_bar, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_x = 10; pixel_y = 1 }, diff --git a/_maps/templates/lazy_templates/nukie_base.dmm b/_maps/templates/lazy_templates/nukie_base.dmm index ea39593ffb8..3d16561fd58 100644 --- a/_maps/templates/lazy_templates/nukie_base.dmm +++ b/_maps/templates/lazy_templates/nukie_base.dmm @@ -482,7 +482,7 @@ /area/centcom/syndicate_mothership/expansion_chemicalwarfare) "eF" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/centcom/syndicate_mothership/control) diff --git a/_maps/templates/shelter_3.dmm b/_maps/templates/shelter_3.dmm index 2bae50e8ba7..67b5155b9b4 100644 --- a/_maps/templates/shelter_3.dmm +++ b/_maps/templates/shelter_3.dmm @@ -41,7 +41,7 @@ "i" = ( /obj/item/book/manual/wiki/barman_recipes, /obj/item/reagent_containers/cup/glass/shaker, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/structure/table/wood/fancy/black, /turf/open/floor/pod/dark, /area/misc/survivalpod) diff --git a/_maps/virtual_domains/beach_bar.dmm b/_maps/virtual_domains/beach_bar.dmm index ba12436e048..b7d2e72ff6e 100644 --- a/_maps/virtual_domains/beach_bar.dmm +++ b/_maps/virtual_domains/beach_bar.dmm @@ -173,7 +173,7 @@ /obj/structure/table, /obj/item/book/manual/wiki/barman_recipes, /obj/item/reagent_containers/cup/glass/shaker, -/obj/item/reagent_containers/cup/rag, +/obj/item/rag, /obj/machinery/light/small/directional/west, /turf/open/floor/wood, /area/virtual_domain/fullbright) diff --git a/_maps/virtual_domains/island_brawl.dmm b/_maps/virtual_domains/island_brawl.dmm index ff94b8a335e..f9bbc496950 100644 --- a/_maps/virtual_domains/island_brawl.dmm +++ b/_maps/virtual_domains/island_brawl.dmm @@ -3298,7 +3298,7 @@ /area/virtual_domain) "Pq" = ( /obj/structure/table/bronze, -/obj/item/reagent_containers/cup/rag{ +/obj/item/rag{ pixel_y = 5 }, /obj/item/reagent_containers/condiment/coconut_milk{ diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index d249a40d806..2eb6eab1d45 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -131,7 +131,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/lead_pipe = 1, /obj/item/reagent_containers/cup/beaker = 1, /obj/item/reagent_containers/cup/bottle/random_buffer = 2, - /obj/item/reagent_containers/cup/rag = 1, + /obj/item/rag = 1, /obj/item/reagent_containers/hypospray/medipen/pumpup = 2, /obj/item/reagent_containers/syringe = 1, /obj/item/stock_parts/power_store/cell/lead = 1, diff --git a/code/datums/components/cleaner.dm b/code/datums/components/cleaner.dm index de88ba08acd..f9134a409a7 100644 --- a/code/datums/components/cleaner.dm +++ b/code/datums/components/cleaner.dm @@ -118,7 +118,9 @@ if(user.mind) //higher cleaning skill can make the duration shorter //offsets the multiplier you get from cleaning skill, but doesn't allow the duration to be longer than the base duration cleaning_duration = (cleaning_duration * min(user.mind.get_skill_modifier(/datum/skill/cleaning, SKILL_SPEED_MODIFIER)+skill_duration_modifier_offset, 1)) - + // Assoc list, collects all items being cleaned with its value being any blood on it + var/list/all_cleaned = list() + all_cleaned[target] = GET_ATOM_BLOOD_DNA(target) || list() //do the cleaning var/clean_succeeded = FALSE if(do_after(user, cleaning_duration, target = target)) @@ -126,10 +128,11 @@ if(clean_target) for(var/obj/effect/decal/cleanable/cleanable_decal in target) //it's important to do this before you wash all of the cleanables off user.mind?.adjust_experience(/datum/skill/cleaning, round(cleanable_decal.beauty / CLEAN_SKILL_BEAUTY_ADJUSTMENT)) + all_cleaned[cleanable_decal] = GET_ATOM_BLOOD_DNA(cleanable_decal) if(target.wash(cleaning_strength)) user.mind?.adjust_experience(/datum/skill/cleaning, round(CLEAN_SKILL_GENERIC_WASH_XP)) - on_cleaned_callback?.Invoke(source, target, user, clean_succeeded) + on_cleaned_callback?.Invoke(source, target, user, clean_succeeded, all_cleaned) //remove the cleaning overlay target.cut_overlay(low_bubble) target.cut_overlay(high_bubble) diff --git a/code/datums/components/crafting/chemistry.dm b/code/datums/components/crafting/chemistry.dm index 77f33210e2c..eecbecea1ae 100644 --- a/code/datums/components/crafting/chemistry.dm +++ b/code/datums/components/crafting/chemistry.dm @@ -15,7 +15,7 @@ name = "Molotov" result = /obj/item/reagent_containers/cup/glass/bottle/molotov reqs = list( - /obj/item/reagent_containers/cup/rag = 1, + /obj/item/rag = 1, /obj/item/reagent_containers/cup/glass/bottle = 1, ) parts = list(/obj/item/reagent_containers/cup/glass/bottle = 1) diff --git a/code/datums/elements/reagents_heated_on_fire.dm b/code/datums/elements/reagents_heated_on_fire.dm new file mode 100644 index 00000000000..cf01dcad15b --- /dev/null +++ b/code/datums/elements/reagents_heated_on_fire.dm @@ -0,0 +1,25 @@ +/// When this atom is exposed to fire, that will propagate to its reagents +/datum/element/reagents_exposed_on_fire + +/datum/element/reagents_exposed_on_fire/Attach(datum/target) + . = ..() + if(!isatom(target)) + return ELEMENT_INCOMPATIBLE + RegisterSignal(target, COMSIG_ATOM_FIRE_ACT, PROC_REF(on_fire)) + RegisterSignal(target, COMSIG_ITEM_MICROWAVE_ACT, PROC_REF(on_microwave)) + +/datum/element/reagents_exposed_on_fire/Detach(datum/source, ...) + UnregisterSignal(source, COMSIG_ATOM_FIRE_ACT) + UnregisterSignal(source, COMSIG_ITEM_MICROWAVE_ACT) + return ..() + +/datum/element/reagents_exposed_on_fire/proc/on_fire(atom/source, exposed_temp, exposed_vol) + SIGNAL_HANDLER + + source.reagents?.expose_temperature(exposed_temp) + +/datum/element/reagents_exposed_on_fire/proc/on_microwave(atom/source, obj/machinery/microwave/microwave_source, mob/microwaver, randomize_pixel_offset) + SIGNAL_HANDLER + + source.reagents?.expose_temperature(1000) + return COMPONENT_MICROWAVE_SUCCESS diff --git a/code/datums/elements/reagents_item_heatable.dm b/code/datums/elements/reagents_item_heatable.dm new file mode 100644 index 00000000000..1dbd205064a --- /dev/null +++ b/code/datums/elements/reagents_item_heatable.dm @@ -0,0 +1,41 @@ +/// This atom can be touched by a hot item to warm up its reagents +/datum/element/reagents_item_heatable + +/datum/element/reagents_item_heatable/Attach(datum/target) + . = ..() + if(!isatom(target)) + return ELEMENT_INCOMPATIBLE + RegisterSignal(target, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_interact)) + +/datum/element/reagents_item_heatable/Detach(datum/source, ...) + UnregisterSignal(source, COMSIG_ATOM_ITEM_INTERACTION) + return ..() + +/datum/element/reagents_item_heatable/proc/on_item_interact(atom/source, mob/living/user, obj/item/tool, list/modifiers) + SIGNAL_HANDLER + + if(isnull(source.reagents) || source.reagents.total_volume <= 0) + return NONE + + var/hotness = tool.get_temperature() + if(hotness) + source.reagents.expose_temperature(hotness) + source.balloon_alert(user, "heated [source]") + return ITEM_INTERACT_SUCCESS + + //Cooling method + if(istype(tool, /obj/item/extinguisher)) + var/obj/item/extinguisher/extinguisher = tool + if(extinguisher.safety) + return NONE + if (extinguisher.reagents?.total_volume < 1) + extinguisher.balloon_alert(user, "extinguisher is empty!") // being a bit more verbose to clarify the extinguisher - not source - is empty + return ITEM_INTERACT_BLOCKING + var/cooling = (0 - source.reagents.chem_temp) * extinguisher.cooling_power * 2 + source.reagents.expose_temperature(cooling) + source.balloon_alert(user, "cooled [source]") + playsound(source, 'sound/effects/extinguish.ogg', 75, TRUE, -3) + extinguisher.reagents.remove_all(1) + return ITEM_INTERACT_SUCCESS + + return NONE diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 66d01cd2f7d..1fdeb997e1d 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -82,7 +82,7 @@ return TRUE /obj/effect/decal/cleanable/attackby(obj/item/W, mob/user, list/modifiers) - if((istype(W, /obj/item/reagent_containers/cup) && !istype(W, /obj/item/reagent_containers/cup/rag)) || istype(W, /obj/item/reagent_containers/cup/glass)) + if((istype(W, /obj/item/reagent_containers/cup) && !istype(W, /obj/item/rag)) || istype(W, /obj/item/reagent_containers/cup/glass)) if(src.reagents && W.reagents) . = 1 //so the containers don't splash their content on the src while scooping. if(!src.reagents.total_volume) diff --git a/code/game/objects/effects/spawners/random/trash.dm b/code/game/objects/effects/spawners/random/trash.dm index e54f5549a63..7377331ecdc 100644 --- a/code/game/objects/effects/spawners/random/trash.dm +++ b/code/game/objects/effects/spawners/random/trash.dm @@ -20,7 +20,7 @@ /obj/item/stack/cable_coil = 5, /obj/item/food/deadmouse = 1, /obj/item/trash/candle = 1, - /obj/item/reagent_containers/cup/rag = 1, + /obj/item/rag = 1, /obj/item/trash/flare = 1, /obj/item/popsicle_stick = 1, /obj/item/reagent_containers/syringe = 1, @@ -47,7 +47,7 @@ /mob/living/basic/mouse = 1, /mob/living/basic/snail = 1, /obj/item/food/grown/cannabis = 1, - /obj/item/reagent_containers/cup/rag = 1, + /obj/item/rag = 1, /obj/effect/spawner/random/entertainment/drugs= 1, /obj/item/modular_computer/pda = 1, /obj/item/reagent_containers/syringe = 1, @@ -183,7 +183,7 @@ /obj/item/clothing/head/cone = 7, /obj/item/clothing/suit/caution = 3, /obj/effect/spawner/random/frog = 2, - /obj/item/reagent_containers/cup/rag = 2, + /obj/item/rag = 2, /obj/item/reagent_containers/cup/bucket = 2, /obj/effect/decal/cleanable/blood/old = 2, /obj/structure/mop_bucket = 2, diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 62aa0f98300..db6a30c68e2 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -475,6 +475,9 @@ ) if(heal_end_sound) playsound(patient, heal_end_sound, 75, TRUE, MEDIUM_RANGE_SOUND_EXTRARANGE) + + if(limb.get_modified_bleed_rate()) + add_mob_blood(patient) limb.apply_gauze(src) /obj/item/stack/medical/gauze/twelve diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 8e09d54a369..1b6d55039ac 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -499,7 +499,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ new/datum/stack_recipe("construction bag", /obj/item/storage/bag/construction, 4, crafting_flags = NONE, category = CAT_CONTAINERS), \ null, \ new/datum/stack_recipe("improvised gauze", /obj/item/stack/medical/gauze/improvised, 1, 2, 6, crafting_flags = NONE, category = CAT_TOOLS), \ - new/datum/stack_recipe("rag", /obj/item/reagent_containers/cup/rag, 1, crafting_flags = NONE, category = CAT_CHEMISTRY), \ + new/datum/stack_recipe("rag", /obj/item/rag, 1, crafting_flags = NONE, category = CAT_CHEMISTRY), \ new/datum/stack_recipe("bedsheet", /obj/item/bedsheet, 3, crafting_flags = NONE, category = CAT_FURNITURE), \ new/datum/stack_recipe("double bedsheet", /obj/item/bedsheet/double, 6, crafting_flags = NONE, category = CAT_FURNITURE), \ new/datum/stack_recipe("empty sandbag", /obj/item/emptysandbag, 4, crafting_flags = NONE, category = CAT_CONTAINERS), \ diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 0eef0dd502c..86f73dcf609 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -204,7 +204,7 @@ new /obj/item/card/id/advanced/chameleon(src) // 2 tc new /obj/item/clothing/under/chameleon(src) // 1 tc new /obj/item/reagent_containers/hypospray/medipen/stimulants(src) // 5 tc - new /obj/item/reagent_containers/cup/rag(src) + new /obj/item/rag(src) new /obj/item/implanter/freedom(src) // 5 tc new /obj/item/flashlight/emp(src) // 2 tc new /obj/item/grenade/c4/x4(src) // 1ish tc diff --git a/code/game/objects/structures/cannons/cannon.dm b/code/game/objects/structures/cannons/cannon.dm index 95f938994db..d312b8d6ddd 100644 --- a/code/game/objects/structures/cannons/cannon.dm +++ b/code/game/objects/structures/cannons/cannon.dm @@ -85,7 +85,7 @@ var/obj/item/reagent_containers/powder_keg = used_item if(!(powder_keg.reagent_flags & OPENCONTAINER)) return ..() - if(istype(powder_keg, /obj/item/reagent_containers/cup/rag)) + if(istype(powder_keg, /obj/item/rag)) return ..() if(!powder_keg.reagents.total_volume) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 25745884838..ce2c598ba12 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -14,7 +14,7 @@ /obj/item/clothing/accessory/waistcoat = 2, /obj/item/clothing/head/soft/black = 2, /obj/item/clothing/shoes/sneakers/black = 2, - /obj/item/reagent_containers/cup/rag = 2, + /obj/item/rag = 2, /obj/item/storage/box/beanbag = 1, /obj/item/clothing/suit/armor/vest/alt = 1, /obj/item/circuitboard/machine/dish_drive = 1, @@ -41,7 +41,7 @@ /obj/item/clothing/suit/toggle/chef = 1, /obj/item/clothing/under/costume/buttondown/slacks/service = 1, /obj/item/clothing/head/utility/chefhat = 1, - /obj/item/reagent_containers/cup/rag = 1) + /obj/item/rag = 1) generate_items_inside(items_inside,src) /obj/structure/closet/jcloset @@ -326,4 +326,3 @@ new /obj/item/clothing/shoes/workboots/mining(src) new /obj/item/storage/backpack/satchel/explorer(src) new /obj/item/storage/backpack/messenger/explorer(src) - diff --git a/code/game/objects/structures/water_structures/sink.dm b/code/game/objects/structures/water_structures/sink.dm index cadd73070b1..b7a1a66b47f 100644 --- a/code/game/objects/structures/water_structures/sink.dm +++ b/code/game/objects/structures/water_structures/sink.dm @@ -164,14 +164,14 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sink, (-14)) if(istype(O, /obj/item/stack/medical/gauze)) var/obj/item/stack/medical/gauze/G = O - new /obj/item/reagent_containers/cup/rag(src.loc) + new /obj/item/rag(src.loc) to_chat(user, span_notice("You tear off a strip of gauze and make a rag.")) G.use(1) return if(istype(O, /obj/item/stack/sheet/cloth)) var/obj/item/stack/sheet/cloth/cloth = O - new /obj/item/reagent_containers/cup/rag(loc) + new /obj/item/rag(loc) to_chat(user, span_notice("You tear off a strip of cloth and make a rag.")) cloth.use(1) return diff --git a/code/game/objects/structures/water_structures/water_source.dm b/code/game/objects/structures/water_structures/water_source.dm index dca271ba94b..678e2509b71 100644 --- a/code/game/objects/structures/water_structures/water_source.dm +++ b/code/game/objects/structures/water_structures/water_source.dm @@ -94,20 +94,6 @@ playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE) return - if(istype(attacking_item, /obj/item/stack/medical/gauze)) - var/obj/item/stack/medical/gauze/G = attacking_item - new /obj/item/reagent_containers/cup/rag(loc) - to_chat(user, span_notice("You tear off a strip of gauze and make a rag.")) - G.use(1) - return - - if(istype(attacking_item, /obj/item/stack/sheet/cloth)) - var/obj/item/stack/sheet/cloth/cloth = attacking_item - new /obj/item/reagent_containers/cup/rag(loc) - to_chat(user, span_notice("You tear off a strip of cloth and make a rag.")) - cloth.use(1) - return - if(istype(attacking_item, /obj/item/stack/ore/glass)) new /obj/item/stack/sheet/sandblock(loc) to_chat(user, span_notice("You wet the sand and form it into a block.")) diff --git a/code/modules/art/paintings.dm b/code/modules/art/paintings.dm index 74e56ecf4e3..511096cc8fa 100644 --- a/code/modules/art/paintings.dm +++ b/code/modules/art/paintings.dm @@ -411,7 +411,7 @@ else if(istype(painting_implement, /obj/item/pen)) var/obj/item/pen/pen = painting_implement return pen.colour - else if(istype(painting_implement, /obj/item/soap) || istype(painting_implement, /obj/item/reagent_containers/cup/rag)) + else if(istype(painting_implement, /obj/item/soap) || istype(painting_implement, /obj/item/rag)) return canvas_color /// Generates medium description @@ -426,7 +426,7 @@ return "Crayon on canvas" else if(istype(painting_implement, /obj/item/pen)) return "Ink on canvas" - else if(istype(painting_implement, /obj/item/soap) || istype(painting_implement, /obj/item/reagent_containers/cup/rag)) + else if(istype(painting_implement, /obj/item/soap) || istype(painting_implement, /obj/item/rag)) return //These are just for cleaning, ignore them else return "Unknown medium" diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index 3624d6d4111..858040bb544 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -37,7 +37,7 @@ /obj/item/clothing/suit/caution = 3, /obj/item/storage/bag/trash, /obj/item/reagent_containers/spray/cleaner, - /obj/item/reagent_containers/cup/rag, + /obj/item/rag, /obj/item/grenade/chem_grenade/cleaner = 3, ) crate_name = "janitorial supplies crate" diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index d0e813bf46e..8084fc6cf62 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -20,7 +20,7 @@ /datum/job_department/service, ) - family_heirlooms = list(/obj/item/reagent_containers/cup/rag, /obj/item/clothing/head/hats/tophat, /obj/item/reagent_containers/cup/glass/shaker) + family_heirlooms = list(/obj/item/rag, /obj/item/clothing/head/hats/tophat, /obj/item/reagent_containers/cup/glass/shaker) mail_goodies = list( /obj/item/storage/box/rubbershot = 30, diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 35565082bf1..ed0ee16b03f 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -879,7 +879,7 @@ //obj/item/stack/pipe_cleaner_coil/cyborg, //obj/item/chisel, */ - /obj/item/reagent_containers/cup/rag, + /obj/item/rag, //obj/item/storage/bag/money, //This is never used and there's already too much bloat // SKYRAT EDIT END ) diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index 4626f684099..f81c60c4b77 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -213,7 +213,7 @@ GLOBAL_VAR_INIT(fax_autoprinting, FALSE) user.visible_message(span_notice("[user] cleans \the [src]."), span_notice("You clean \the [src].")) jammed = FALSE return TRUE - if (istype(item, /obj/item/soap) || istype(item, /obj/item/reagent_containers/cup/rag)) + if (istype(item, /obj/item/soap) || istype(item, /obj/item/rag)) var/cleanspeed = 50 if (istype(item, /obj/item/soap)) var/obj/item/soap/used_soap = item @@ -565,7 +565,7 @@ GLOBAL_VAR_INIT(fax_autoprinting, FALSE) context[SCREENTIP_CONTEXT_LMB] = "Manipulate wires" return CONTEXTUAL_SCREENTIP_SET - if (jammed && is_type_in_list(held_item, list(/obj/item/reagent_containers/spray, /obj/item/soap, /obj/item/reagent_containers/cup/rag))) + if (jammed && is_type_in_list(held_item, list(/obj/item/reagent_containers/spray, /obj/item/soap, /obj/item/rag))) context[SCREENTIP_CONTEXT_LMB] = "Clean output tray" return CONTEXTUAL_SCREENTIP_SET diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 43842d75978..97e7f8b4c78 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -66,6 +66,7 @@ var/list/data = list("viruses"= list(F)) reagents.add_reagent(/datum/reagent/blood, disease_amount, data) add_initial_reagents() + AddElement(/datum/element/reagents_exposed_on_fire) /obj/item/reagent_containers/examine(mob/user) . = ..() @@ -196,10 +197,6 @@ return ..() -/obj/item/reagent_containers/fire_act(exposed_temperature, exposed_volume) - reagents.expose_temperature(exposed_temperature) - ..() - /obj/item/reagent_containers/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum, do_splash = TRUE) . = ..() if(do_splash) @@ -262,10 +259,6 @@ reagents.clear_reagents() -/obj/item/reagent_containers/microwave_act(obj/machinery/microwave/microwave_source, mob/microwaver, randomize_pixel_offset) - reagents.expose_temperature(1000) - return ..() | COMPONENT_MICROWAVE_SUCCESS - /// Updates the icon of the container when the reagents change. Eats signal args /obj/item/reagent_containers/proc/on_reagent_change(datum/reagents/holder, ...) SIGNAL_HANDLER diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index b05d9d79c25..d0005ee5a7b 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -24,6 +24,10 @@ ///What sound does our consumption play on consuming from the container? var/consumption_sound = 'sound/items/drink.ogg' +/obj/item/reagent_containers/cup/Initialize(mapload, vol) + . = ..() + AddElement(/datum/element/reagents_item_heatable) + /obj/item/reagent_containers/cup/examine(mob/user) . = ..() if(drink_type) diff --git a/code/modules/reagents/reagent_containers/misc.dm b/code/modules/reagents/reagent_containers/misc.dm index 547de205031..4f1dafcce11 100644 --- a/code/modules/reagents/reagent_containers/misc.dm +++ b/code/modules/reagents/reagent_containers/misc.dm @@ -116,32 +116,49 @@ mug_glow.alpha = 255 * intensity . += mug_glow -/obj/item/reagent_containers/cup/rag +/obj/item/rag name = "damp rag" desc = "For cleaning up messes, you suppose." w_class = WEIGHT_CLASS_TINY icon = 'icons/obj/toys/toy.dmi' icon_state = "rag" item_flags = NOBLUDGEON - reagent_flags = OPENCONTAINER - amount_per_transfer_from_this = 5 - has_variable_transfer_amount = FALSE - volume = 5 - spillable = FALSE - reagent_container_liquid_sound = null + resistance_flags = FLAMMABLE + /// How bloody is this rag? + var/blood_level = 0 -/obj/item/reagent_containers/cup/rag/Initialize(mapload) +/obj/item/rag/Initialize(mapload) . = ..() - AddComponent(/datum/component/cleaner, 3 SECONDS, pre_clean_callback=CALLBACK(src, PROC_REF(should_clean))) + create_reagents(5, OPENCONTAINER) + AddComponent(/datum/component/cleaner, 3 SECONDS, \ + pre_clean_callback = CALLBACK(src, PROC_REF(should_clean)), \ + on_cleaned_callback = CALLBACK(src, PROC_REF(on_cleaned)), \ + ) + AddElement(/datum/element/reagents_exposed_on_fire) + AddElement(/datum/element/reagents_item_heatable) -/obj/item/reagent_containers/cup/rag/suicide_act(mob/living/user) +/obj/item/rag/pickup(mob/user) + . = ..() + if(prob(5 * blood_level)) + bloody_holder(user) + +/obj/item/rag/proc/bloody_holder(mob/living/holder) + var/obj/item/clothing/gloves/gloves = holder.get_item_by_slot(ITEM_SLOT_GLOVES) + if(gloves) + gloves.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) + holder.update_worn_gloves() + else + holder.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) + +/obj/item/rag/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is smothering [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return OXYLOSS -/obj/item/reagent_containers/cup/rag/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) +/obj/item/rag/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!iscarbon(interacting_with) || !reagents?.total_volume) return ..() var/mob/living/carbon/carbon_target = interacting_with + carbon_target.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) var/reagentlist = pretty_string_from_reagent_list(reagents.reagent_list) var/log_object = "containing [reagentlist]" if(!carbon_target.is_mouth_covered()) @@ -155,10 +172,75 @@ log_combat(user, carbon_target, "touched", src, log_object) return ITEM_INTERACT_SUCCESS +/obj/item/rag/wash(clean_types) + . = ..() + if(!(clean_types & CLEAN_TYPE_BLOOD)) + return + blood_level = 0 + update_appearance() + ///Checks whether or not we should clean. -/obj/item/reagent_containers/cup/rag/proc/should_clean(datum/cleaning_source, atom/atom_to_clean, mob/living/cleaner) +/obj/item/rag/proc/should_clean(datum/cleaning_source, atom/atom_to_clean, mob/living/cleaner) if(cleaner.combat_mode && ismob(atom_to_clean)) return CLEAN_BLOCKED|CLEAN_DONT_BLOCK_INTERACTION + if(blood_level >= 10) + // snowflakeeeee check to make it a bit more intuitive when cleaning the rag. + if(istype(atom_to_clean, /obj/structure/sink)) + return CLEAN_BLOCKED|CLEAN_DONT_BLOCK_INTERACTION + atom_to_clean.balloon_alert(cleaner, "[name] is too dirty!") + return CLEAN_BLOCKED if(loc == cleaner) return CLEAN_ALLOWED return CLEAN_ALLOWED|CLEAN_NO_XP + +///On cleaning, get the rag dirty +/obj/item/rag/proc/on_cleaned(datum/cleaning_source, atom/clean_target, mob/living/cleaner, was_successful, list/all_cleaned) + if(!was_successful) + return + + var/list/all_blood_dna = list() + for(var/atom/movable/cleaned in all_cleaned) + if(isturf(clean_target) && !HAS_TRAIT(cleaned, TRAIT_MOPABLE)) + continue + // collect dna FIRST + all_blood_dna |= all_cleaned[cleaned] + // THEN pass on dna (though in some cases the cleaned item is being deleted) + if(blood_level > 0 && !QDELING(cleaned)) + cleaned.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) + // THEN increment blood level + if(length(all_cleaned[cleaned])) + blood_level += get_blood_level_of_movable(cleaned) + // you didn't think you could "clean" a burning person and escape scot-free did you? + var/mob/living/living_cleaned = cleaned + if((cleaned.resistance_flags & ON_FIRE) || (istype(living_cleaned) && living_cleaned.on_fire)) + fire_act(500, 100) + + // FINALLY add the dna to us + add_blood_DNA(all_blood_dna) + update_appearance() + if(blood_level >= 10) + to_chat(cleaner, span_warning("[src] is too dirty to clean anything else! Wash it first!")) + if(prob(10 * blood_level)) + bloody_holder(cleaner) + +/obj/item/rag/proc/get_blood_level_of_movable(atom/movable/what) + if(istype(what, /obj/item/rag)) + var/obj/item/rag/friend_rag = what + return friend_rag.blood_level + if(istype(what, /obj/effect/decal/cleanable)) + var/obj/effect/decal/cleanable/mess = what + return round(mess.bloodiness / 20, 1) + return 1 + +/obj/item/rag/update_appearance(updates) + . = ..() + // v = green and blue color components (reduced as it gets dirtier) + var/v = max(1 - (0.1 * blood_level), 0) + var/list/colormatrix = list( + 1, 0, 0, 0, + 0, v, 0, 0, + 0, 0, v, 0, + 0, 0, 0, 1, + ) + + add_atom_colour(colormatrix, FIXED_COLOUR_PRIORITY) diff --git a/code/modules/unit_tests/damp_rag.dm b/code/modules/unit_tests/damp_rag.dm index 6a3948036af..9a2af270da5 100644 --- a/code/modules/unit_tests/damp_rag.dm +++ b/code/modules/unit_tests/damp_rag.dm @@ -6,7 +6,7 @@ var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() var/obj/item/organ/stomach/victim_stomach = victim.get_organ_slot(ORGAN_SLOT_STOMACH) - var/obj/item/reagent_containers/cup/rag/rag = EASY_ALLOCATE() + var/obj/item/rag/rag = EASY_ALLOCATE() attacker.put_in_active_hand(rag, forced = TRUE) attacker.zone_selected = BODY_ZONE_PRECISE_MOUTH diff --git a/code/modules/unit_tests/storage.dm b/code/modules/unit_tests/storage.dm index cadf2261682..2736137981d 100644 --- a/code/modules/unit_tests/storage.dm +++ b/code/modules/unit_tests/storage.dm @@ -30,7 +30,7 @@ bag.atom_storage.max_total_storage = INFINITY var/list/common_noncombat_insertion_items = list( - /obj/item/reagent_containers/cup/rag, + /obj/item/rag, /obj/item/soap, /obj/item/card/emag, /obj/item/detective_scanner, diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 8774791164d..675c148fb40 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -415,7 +415,7 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE) /obj/item/storage/dice/hazard = 1, /obj/item/storage/box/beanbag = 1, /obj/item/circuitboard/machine/dish_drive = 1, - /obj/item/reagent_containers/cup/rag = 2, + /obj/item/rag = 2, /obj/item/radio/headset/headset_srv = 2, ) premium = list( @@ -448,7 +448,7 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE) /obj/item/clothing/shoes/sneakers/black = 2, /obj/item/storage/box/mousetraps = 2, /obj/item/circuitboard/machine/dish_drive = 1, - /obj/item/reagent_containers/cup/rag = 2, + /obj/item/rag = 2, /obj/item/radio/headset/headset_srv = 2, ) refill_canister = /obj/item/vending_refill/wardrobe/chef_wardrobe diff --git a/tgstation.dme b/tgstation.dme index 1e485fa35d4..f4ba5a29b19 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1735,6 +1735,8 @@ #include "code\datums\elements\radiation_protected_clothing.dm" #include "code\datums\elements\radioactive.dm" #include "code\datums\elements\ranged_armour.dm" +#include "code\datums\elements\reagents_heated_on_fire.dm" +#include "code\datums\elements\reagents_item_heatable.dm" #include "code\datums\elements\regal_rat_minion.dm" #include "code\datums\elements\relay_attackers.dm" #include "code\datums\elements\ridable.dm" diff --git a/tools/UpdatePaths/Scripts/90700_rags.txt b/tools/UpdatePaths/Scripts/90700_rags.txt new file mode 100644 index 00000000000..12ae2985e5d --- /dev/null +++ b/tools/UpdatePaths/Scripts/90700_rags.txt @@ -0,0 +1 @@ +/obj/item/reagent_containers/cup/rag : /obj/item/rag{@OLD}