diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 1d0e22d1844..1fead27bb05 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -318,50 +318,6 @@
origin_tech = list(TECH_MATERIAL = 1)
var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute
-/obj/item/caution
- desc = "Caution! Wet Floor!"
- name = "wet floor sign"
- icon = 'icons/obj/janitor.dmi'
- icon_state = "caution"
- force = 1.0
- throwforce = 3.0
- throw_speed = 1
- throw_range = 5
- w_class = 2.0
- attack_verb = list("warned", "cautioned", "smashed")
- drop_sound = 'sound/items/drop/shoes.ogg'
-
-/obj/item/caution/attack_self(mob/user as mob)
- if(src.icon_state == "caution")
- src.icon_state = "caution_blinking"
- to_chat(user, "You turn the sign on.")
- else
- src.icon_state = "caution"
- to_chat(user, "You turn the sign off.")
-
-/obj/item/caution/AltClick()
- if(!usr || usr.stat || usr.lying || usr.restrained() || !Adjacent(usr)) return
- if(src.icon_state == "caution")
- src.icon_state = "caution_blinking"
- to_chat(usr, "You turn the sign on.")
- else
- src.icon_state = "caution"
- to_chat(usr, "You turn the sign off.")
-
-/obj/item/caution/cone
- desc = "This cone is trying to warn you of something!"
- name = "warning cone"
- icon_state = "cone"
- item_state = "cone"
- contained_sprite = 1
- slot_flags = SLOT_HEAD
-
-/obj/item/caution/cone/attack_self(mob/user as mob)
- return
-
-/obj/item/caution/cone/AltClick()
- return
-
/*/obj/item/syndicate_uplink
name = "station bounced radio"
desc = "Remain silent about this..."
diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm
index acd568942ae..d33e34be307 100644
--- a/code/game/objects/random/random.dm
+++ b/code/game/objects/random/random.dm
@@ -801,7 +801,7 @@
/obj/item/seeds/random = 0.25,
/obj/item/stack/material/bronze{amount=10},
/obj/item/banhammer = 0.05,
- /obj/item/caution/cone = 0.7,
+ /obj/item/clothing/head/cone = 0.7,
/obj/item/contraband/poster = 1.3,
/obj/item/extinguisher = 1.3,
/obj/item/extinguisher/mini = 0.9,
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 75557a40105..42a569cd7b5 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -75,10 +75,10 @@
new /obj/item/clothing/head/soft/purple(src)
new /obj/item/gun/energy/mousegun(src)
new /obj/item/device/flashlight(src)
- new /obj/item/caution(src)
- new /obj/item/caution(src)
- new /obj/item/caution(src)
- new /obj/item/caution(src)
+ new /obj/item/clothing/suit/caution(src)
+ new /obj/item/clothing/suit/caution(src)
+ new /obj/item/clothing/suit/caution(src)
+ new /obj/item/clothing/suit/caution(src)
new /obj/item/device/lightreplacer(src)
new /obj/item/storage/bag/trash(src)
new /obj/item/clothing/shoes/galoshes(src)
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 4032cfe06d1..445b4dc7ab0 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -127,7 +127,7 @@
to_chat(user, "You put [I] into [src].")
return 1
- else if(istype(I, /obj/item/caution))
+ else if(istype(I, /obj/item/clothing/suit/caution))
if(signs < 4)
user.drop_from_inventory(I,src)
signs++
@@ -191,7 +191,7 @@
mybucket = null
if (signs)
- for (var/obj/item/caution/Sign in src)
+ for (var/obj/item/clothing/suit/caution/Sign in src)
if (prob(min((chance*2),100)))
signs--
Sign.forceMove(dropspot)
@@ -261,7 +261,7 @@
myreplacer = null
if("sign")
if(signs)
- var/obj/item/caution/Sign = locate() in src
+ var/obj/item/clothing/suit/caution/Sign = locate() in src
if(Sign)
user.put_in_hands(Sign)
to_chat(user, "You take \a [Sign] from [src].")
diff --git a/code/modules/cargo/random_stock/t1_common.dm b/code/modules/cargo/random_stock/t1_common.dm
index a76776aab29..5d9355d33a2 100644
--- a/code/modules/cargo/random_stock/t1_common.dm
+++ b/code/modules/cargo/random_stock/t1_common.dm
@@ -533,9 +533,9 @@ STOCK_ITEM_COMMON(cane, 2)
STOCK_ITEM_COMMON(warning, 2.2)
if (prob(50))
- new /obj/item/caution(L)
+ new /obj/item/clothing/suit/caution(L)
else
- new /obj/item/caution/cone(L)
+ new /obj/item/clothing/head/cone(L)
STOCK_ITEM_COMMON(gasmask, 2)
var/list/masks = list(
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index c500305d055..5ba82e5dd03 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -5,7 +5,8 @@
* Ushanka
* Pumpkin head
* Kitty ears
- *
+ * Chicken mask
+ * Warning cone
*/
/*
@@ -259,9 +260,33 @@
else if (icon_override)
icon_override = null
+/*
+ * Chicken mask
+ */
+
/obj/item/clothing/head/richard
name = "chicken mask"
desc = "You can hear the distant sounds of rhythmic electronica."
icon_state = "richard"
body_parts_covered = HEAD|FACE
flags_inv = BLOCKHAIR
+
+/*
+ * Warning cone
+ */
+
+/obj/item/clothing/head/cone
+ name = "warning cone"
+ desc = "This cone is trying to warn you of something!"
+ description_info = "It looks like you can wear it in your head slot."
+ icon_state = "cone"
+ item_state = "cone"
+ drop_sound = 'sound/items/drop/shoes.ogg'
+ force = 1
+ throwforce = 3
+ throw_speed = 2
+ throw_range = 5
+ w_class = 2
+ body_parts_covered = HEAD
+ attack_verb = list("warned", "cautioned", "smashed")
+ armor = list("melee" = 5, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
diff --git a/code/modules/clothing/spacesuits/rig/modules/combat.dm b/code/modules/clothing/spacesuits/rig/modules/combat.dm
index 461790e6d64..90b5e723a5b 100644
--- a/code/modules/clothing/spacesuits/rig/modules/combat.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/combat.dm
@@ -375,7 +375,7 @@
interface_name = "wet floor sign launcher"
interface_desc = "An integrated microfactory that produces wet floor signs from thin air and electricity."
- fabrication_type = /obj/item/caution
+ fabrication_type = /obj/item/clothing/suit/caution
category = MODULE_GENERAL
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 38428d4b66d..5e0007d0d1c 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -646,3 +646,39 @@
item_state = "cultrobes"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
flags_inv = HIDEJUMPSUIT
+
+/obj/item/clothing/suit/caution
+ name = "wet floor sign"
+ desc = "Caution! Wet Floor!"
+ description_fluff = "Used by the janitor to passive-aggressively point at when you eventually slip on one of their mopped floors."
+ description_info = "Alt-click, or click in-hand to toggle the caution lights. It looks like you can wear it in your suit slot."
+ icon = 'icons/obj/janitor.dmi'
+ icon_state = "caution"
+ drop_sound = 'sound/items/drop/shoes.ogg'
+ force = 1
+ throwforce = 3
+ throw_speed = 2
+ throw_range = 5
+ w_class = 2
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO
+ attack_verb = list("warned", "cautioned", "smashed")
+ armor = list("melee" = 5, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+
+/obj/item/clothing/suit/caution/attack_self()
+ toggle()
+
+/obj/item/clothing/suit/caution/AltClick()
+ toggle()
+
+/obj/item/clothing/suit/caution/proc/toggle()
+ if(!usr || usr.stat || usr.lying || usr.restrained() || !Adjacent(usr)) return
+ else if(src.icon_state == "caution")
+ src.icon_state = "caution_blinking"
+ src.item_state = "caution_blinking"
+ usr.show_message("You turn the wet floor sign on.")
+ playsound(src.loc, 'sound/items/flashlight.ogg', 75, 1)
+ else
+ src.icon_state = "caution"
+ src.item_state = "caution"
+ usr.show_message("You turn the wet floor sign off.")
+ update_clothing_icon()
diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index b27dadc33e4..b809525cbcb 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -284,7 +284,7 @@ var/list/worths = list(
/obj/item/cane = 40,
/obj/item/disk/nuclear = 10000,
/obj/item/disk = 90,
- /obj/item/caution = 15,
+ /obj/item/clothing/suit/caution = 15,
/obj/item/module = 100,
//STOCK PARTS,
/obj/item/stock_parts/capacitor/adv = 160,
diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm
index 03e5c0b4424..637e51f83ed 100644
--- a/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm
+++ b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm
@@ -45,8 +45,8 @@
/obj/item/bikehorn,\
/obj/item/bonesetter,\
/obj/item/material/hatchet/butch,\
- /obj/item/caution,\
- /obj/item/caution/cone,\
+ /obj/item/clothing/suit/caution,\
+ /obj/item/clothing/head/cone,\
/obj/item/crowbar,\
/obj/item/clipboard,\
/obj/item/cell,\
diff --git a/html/changelogs/wezzy_wearablewetfloorsign.yml b/html/changelogs/wezzy_wearablewetfloorsign.yml
new file mode 100644
index 00000000000..40e22a0e183
--- /dev/null
+++ b/html/changelogs/wezzy_wearablewetfloorsign.yml
@@ -0,0 +1,42 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: Wowzewow (Wezzy)
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "You can now wear the wet floor sign in your suit slot."
+ - tweak: "Adjusts the wet floor sign sprite."
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 1716d04a540..c4de4751c56 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index df71cf34cc6..f15cf4474a3 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 5812ef72429..0d28f8dfb9e 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi
index bcb7d5bb99a..41ff0cb6f73 100644
Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ
diff --git a/maps/aurora/aurora-1_centcomm.dmm b/maps/aurora/aurora-1_centcomm.dmm
index 6b5f0defb45..50bb641e8de 100644
--- a/maps/aurora/aurora-1_centcomm.dmm
+++ b/maps/aurora/aurora-1_centcomm.dmm
@@ -11243,7 +11243,7 @@
},
/area/centcom/control)
"aBe" = (
-/obj/item/caution,
+/obj/item/clothing/suit/caution,
/turf/unsimulated/floor{
icon_state = "dark"
},
diff --git a/maps/aurora/aurora-4_mainlevel.dmm b/maps/aurora/aurora-4_mainlevel.dmm
index d77fa7baa18..59ccf7e5213 100644
--- a/maps/aurora/aurora-4_mainlevel.dmm
+++ b/maps/aurora/aurora-4_mainlevel.dmm
@@ -36558,16 +36558,16 @@
/area/janitor)
"bkE" = (
/obj/structure/table/rack,
-/obj/item/caution{
+/obj/item/clothing/suit/caution{
pixel_x = 4;
pixel_y = -4
},
-/obj/item/caution{
+/obj/item/clothing/suit/caution{
pixel_x = 2;
pixel_y = -2
},
-/obj/item/caution,
-/obj/item/caution{
+/obj/item/clothing/suit/caution,
+/obj/item/clothing/suit/caution{
pixel_x = -2;
pixel_y = 2
},
@@ -45875,15 +45875,15 @@
/obj/structure/table/rack{
dir = 1
},
-/obj/item/caution{
+/obj/item/clothing/suit/caution{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/caution{
+/obj/item/clothing/suit/caution{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/caution{
+/obj/item/clothing/suit/caution{
pixel_x = -2;
pixel_y = 2
},
diff --git a/maps/aurora/aurora-5_interstitial.dmm b/maps/aurora/aurora-5_interstitial.dmm
index 0e0560c8096..3bd4ecfe805 100644
--- a/maps/aurora/aurora-5_interstitial.dmm
+++ b/maps/aurora/aurora-5_interstitial.dmm
@@ -370,7 +370,7 @@
/area/maintenance/bridge_elevator)
"aV" = (
/obj/effect/floor_decal/corner/yellow/full,
-/obj/item/caution/cone,
+/obj/item/clothing/head/cone,
/turf/simulated/floor/tiled,
/area/maintenance/interstitial_main)
"aW" = (
@@ -11472,14 +11472,14 @@
d2 = 4;
icon_state = "0-4"
},
-/obj/item/caution/cone,
-/obj/item/caution/cone,
-/obj/item/caution/cone,
-/obj/item/caution/cone,
-/obj/item/caution/cone,
-/obj/item/caution/cone,
-/obj/item/caution/cone,
-/obj/item/caution/cone,
+/obj/item/clothing/head/cone,
+/obj/item/clothing/head/cone,
+/obj/item/clothing/head/cone,
+/obj/item/clothing/head/cone,
+/obj/item/clothing/head/cone,
+/obj/item/clothing/head/cone,
+/obj/item/clothing/head/cone,
+/obj/item/clothing/head/cone,
/obj/structure/closet/crate,
/turf/simulated/floor/tiled,
/area/maintenance/interstitial_construction_site/office)
diff --git a/maps/exodus/exodus-1_station.dmm b/maps/exodus/exodus-1_station.dmm
index 1f7986f9938..4328d16668e 100644
--- a/maps/exodus/exodus-1_station.dmm
+++ b/maps/exodus/exodus-1_station.dmm
@@ -5909,8 +5909,8 @@
dir = 10
},
/obj/structure/table/rack,
-/obj/item/caution,
-/obj/item/caution,
+/obj/item/clothing/suit/caution,
+/obj/item/clothing/suit/caution,
/turf/simulated/floor/tiled/white,
/area/medical/custodial_closet)
"akM" = (
diff --git a/maps/exodus/exodus-2_centcomm.dmm b/maps/exodus/exodus-2_centcomm.dmm
index fb2697c27f1..de6313fa3d2 100644
--- a/maps/exodus/exodus-2_centcomm.dmm
+++ b/maps/exodus/exodus-2_centcomm.dmm
@@ -10345,7 +10345,7 @@
},
/area/centcom/specops)
"aFa" = (
-/obj/item/caution,
+/obj/item/clothing/suit/caution,
/turf/unsimulated/floor{
icon_state = "dark"
},
@@ -12225,7 +12225,7 @@
},
/area/wizard_station)
"aLa" = (
-/obj/item/caution,
+/obj/item/clothing/suit/caution,
/turf/unsimulated/floor{
icon_state = "freezerfloor";
dir = 2
diff --git a/maps/space_ruins/scrapheap.dmm b/maps/space_ruins/scrapheap.dmm
index 9eeecbc95bf..ef94f0ac467 100644
--- a/maps/space_ruins/scrapheap.dmm
+++ b/maps/space_ruins/scrapheap.dmm
@@ -3357,7 +3357,7 @@
/turf/simulated/floor/tiled/dark,
/area/derelict/ship)
"kd" = (
-/obj/item/caution,
+/obj/item/clothing/suit/caution,
/turf/simulated/floor,
/area/derelict/ship)
"ke" = (
@@ -7139,7 +7139,7 @@
},
/area/derelict)
"vo" = (
-/obj/item/caution,
+/obj/item/clothing/suit/caution,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/shuttle{
icon_state = "floor6"
diff --git a/maps/space_ruins/spacehulk.dmm b/maps/space_ruins/spacehulk.dmm
index 8a282ba6990..d0585efe7e1 100644
--- a/maps/space_ruins/spacehulk.dmm
+++ b/maps/space_ruins/spacehulk.dmm
@@ -2262,7 +2262,7 @@
/turf/simulated/floor,
/area/derelict)
"fK" = (
-/obj/item/caution,
+/obj/item/clothing/suit/caution,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/shuttle/black,