diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 30a2af7457..b3b6aec7b4 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -5898,6 +5898,15 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
+"alN" = (
+/obj/machinery/camera{
+ c_tag = "Dormitory Toilets";
+ dir = 1
+ },
+/obj/structure/table,
+/obj/structure/bedsheetbin/towel,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
"alO" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -15668,13 +15677,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
-"aJz" = (
-/obj/machinery/camera{
- c_tag = "Dormitory Toilets";
- dir = 1
- },
-/turf/open/floor/plasteel/freezer,
-/area/crew_quarters/toilet)
"aJA" = (
/obj/machinery/door/airlock/maintenance{
name = "Kitchen Maintenance";
@@ -90144,7 +90146,7 @@ aDL
aFf
aGk
aHU
-aJz
+alN
aAh
aLQ
aJq
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index 2b14f91a11..57a0f2c922 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -124,6 +124,36 @@
},
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
+"aaq" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/table,
+/obj/structure/bedsheetbin/towel,
+/turf/open/floor/plasteel,
+/area/crew_quarters/toilet/restrooms)
+"aar" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/bedsheetbin/color,
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/crew_quarters/dorms)
"aas" = (
/obj/docking_port/stationary/random{
id = "pod_lavaland1";
@@ -80845,21 +80875,6 @@
},
/turf/open/floor/plating,
/area/crew_quarters/toilet/restrooms)
-"cFc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/machinery/airalarm{
- dir = 1;
- pixel_y = -22
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/toilet/restrooms)
"cFd" = (
/obj/machinery/shower{
dir = 8;
@@ -84352,19 +84367,6 @@
/obj/item/reagent_containers/dropper,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"cKT" = (
-/obj/structure/table,
-/obj/structure/bedsheetbin,
-/obj/machinery/light{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/white/corner{
- dir = 1
- },
-/area/crew_quarters/dorms)
"cKU" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral{
@@ -172742,7 +172744,7 @@ bsE
cAm
cBI
cDo
-cFc
+aaq
cAm
cHW
cIW
@@ -177115,7 +177117,7 @@ cFr
cGP
cqd
cJe
-cKT
+aar
cMq
cAw
cPM
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index ff1cb94e0c..7e86483aae 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -2,6 +2,17 @@
"aaa" = (
/turf/open/space/basic,
/area/space)
+"aab" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/obj/structure/sign/poster/official/random{
+ pixel_y = -32
+ },
+/obj/structure/table,
+/obj/structure/bedsheetbin/towel,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
"aac" = (
/obj/effect/landmark/carpspawn,
/turf/open/space,
@@ -80885,15 +80896,6 @@
},
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
-"dhD" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 5
- },
-/obj/structure/sign/poster/official/random{
- pixel_y = -32
- },
-/turf/open/floor/plasteel/freezer,
-/area/crew_quarters/toilet/restrooms)
"dhE" = (
/obj/structure/sign/poster/contraband/random{
pixel_x = 32
@@ -118790,7 +118792,7 @@ aBu
aCB
aDU
aFg
-dhD
+aab
axC
axC
axC
diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm
index 5202f170d0..17228e2bdc 100644
--- a/_maps/map_files/OmegaStation/OmegaStation.dmm
+++ b/_maps/map_files/OmegaStation/OmegaStation.dmm
@@ -955,6 +955,19 @@
},
/turf/open/floor/plasteel/dark,
/area/bridge)
+"abn" = (
+/obj/structure/table,
+/obj/machinery/camera{
+ c_tag = "Locker Room East";
+ dir = 8
+ },
+/obj/effect/turf_decal/bot,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/bedsheetbin/color,
+/turf/open/floor/plasteel/white/corner,
+/area/crew_quarters/dorms)
"abo" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -15282,19 +15295,6 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
-"aAJ" = (
-/obj/structure/table,
-/obj/structure/bedsheetbin,
-/obj/machinery/camera{
- c_tag = "Locker Room East";
- dir = 8
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/turf/open/floor/plasteel/white/corner,
-/area/crew_quarters/dorms)
"aAK" = (
/obj/structure/sign/poster/random,
/turf/closed/wall,
@@ -82334,7 +82334,7 @@ awQ
axK
ayC
awQ
-aAJ
+abn
aBT
awQ
aDI
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index 14527ff0a1..fdce80cb49 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -2,6 +2,33 @@
"aaa" = (
/turf/open/space/basic,
/area/space)
+"aab" = (
+/obj/machinery/newscaster{
+ pixel_x = 32
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/bedsheetbin/color,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/dorms)
+"aac" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 9
+ },
+/obj/structure/table,
+/obj/structure/bedsheetbin/towel,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
"aad" = (
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating{
@@ -7254,22 +7281,6 @@
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/dorms)
-"asg" = (
-/obj/structure/bedsheetbin,
-/obj/machinery/newscaster{
- pixel_x = 32
- },
-/obj/structure/cable{
- icon_state = "1-8"
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/cafeteria,
-/area/crew_quarters/dorms)
"ash" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -14880,15 +14891,6 @@
},
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/toilet/restrooms)
-"aJo" = (
-/obj/structure/cable{
- icon_state = "1-8"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 9
- },
-/turf/open/floor/plasteel/freezer,
-/area/crew_quarters/toilet/restrooms)
"aJp" = (
/obj/item/chair,
/turf/open/floor/plating,
@@ -100839,7 +100841,7 @@ aiT
aiS
apX
cod
-asg
+aab
atj
apX
avi
@@ -102398,7 +102400,7 @@ aFH
aGG
aHo
aIk
-aJo
+aac
aGF
aEd
aMr
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index b493f84240..238f74d078 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -288,17 +288,19 @@ LINEN BINS
resistance_flags = FLAMMABLE
max_integrity = 70
var/amount = 10
+ var/list/sheet_types = list(/obj/item/bedsheet)
+ var/static/allowed_sheets = list(/obj/item/bedsheet, /obj/item/reagent_containers/rag/towel)
var/list/sheets = list()
var/obj/item/hidden = null
/obj/structure/bedsheetbin/examine(mob/user)
..()
if(amount < 1)
- to_chat(user, "There are no bed sheets in the bin.")
+ to_chat(user, "There are no sheets in the bin.")
else if(amount == 1)
- to_chat(user, "There is one bed sheet in the bin.")
+ to_chat(user, "There is one sheet in the bin.")
else
- to_chat(user, "There are [amount] bed sheets in the bin.")
+ to_chat(user, "There are [amount] sheets in the bin.")
/obj/structure/bedsheetbin/update_icon()
@@ -317,8 +319,9 @@ LINEN BINS
..()
/obj/structure/bedsheetbin/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/bedsheet))
+ if(is_type_in_list(I, allowed_sheets))
if(!user.transferItemToLoc(I, src))
+ to_chat(user, "\The [I] is stuck to your hand, you cannot place it into the bin!")
return
sheets.Add(I)
amount++
@@ -339,18 +342,18 @@ LINEN BINS
. = ..()
if(.)
return
- if(user.lying)
+ if(user.incapacitated())
return
if(amount >= 1)
amount--
- var/obj/item/bedsheet/B
+ var/obj/item/B
if(sheets.len > 0)
B = sheets[sheets.len]
sheets.Remove(B)
else
- B = new /obj/item/bedsheet(loc)
+ B = new pick(sheet_types)
B.forceMove(drop_location())
user.put_in_hands(B)
@@ -362,19 +365,19 @@ LINEN BINS
to_chat(user, "[hidden] falls out of [B]!")
hidden = null
-
add_fingerprint(user)
+
/obj/structure/bedsheetbin/attack_tk(mob/user)
if(amount >= 1)
amount--
- var/obj/item/bedsheet/B
+ var/obj/item/B
if(sheets.len > 0)
B = sheets[sheets.len]
sheets.Remove(B)
else
- B = new /obj/item/bedsheet(loc)
+ B = new pick(sheet_types)
B.forceMove(drop_location())
to_chat(user, "You telekinetically remove [B] from [src].")
@@ -384,5 +387,11 @@ LINEN BINS
hidden.forceMove(drop_location())
hidden = null
+/obj/structure/bedsheetbin/towel
+ desc = "It looks rather cosy. This one is designed to hold towels."
+ sheet_types = list(/obj/item/reagent_containers/rag/towel)
- add_fingerprint(user)
+/obj/structure/bedsheetbin/color
+ sheet_types = list(/obj/item/bedsheet, /obj/item/bedsheet/blue, /obj/item/bedsheet/green, /obj/item/bedsheet/orange, \
+ /obj/item/bedsheet/purple, /obj/item/bedsheet/red, /obj/item/bedsheet/yellow, /obj/item/bedsheet/brown, \
+ /obj/item/bedsheet/black)
\ No newline at end of file
diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi
index 7bbfdfd11d..cad28e12fe 100644
Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ