diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index 0c4398b1c34..9fa70b60130 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -1004,9 +1004,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/obj/item/weapon/reagent_containers/glass/bucket,
/obj/item/weapon/reagent_containers/glass/bucket,
/obj/item/weapon/mop,
- /obj/item/weapon/caution,
- /obj/item/weapon/caution,
- /obj/item/weapon/caution,
+ /obj/item/weapon/holosign_creator,
/obj/item/weapon/storage/bag/trash,
/obj/item/weapon/reagent_containers/spray/cleaner,
/obj/item/weapon/reagent_containers/glass/rag,
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 907c6d89143..e5b26cc3038 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -95,18 +95,6 @@
icon = 'icons/obj/items.dmi'
-/obj/item/weapon/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 = 2
- throw_range = 5
- w_class = 2.0
- attack_verb = list("warned", "cautioned", "smashed")
-
/obj/item/weapon/rack_parts
name = "rack parts"
desc = "Parts of a rack."
diff --git a/code/game/objects/items/weapons/janisigns.dm b/code/game/objects/items/weapons/janisigns.dm
new file mode 100644
index 00000000000..fa781dec768
--- /dev/null
+++ b/code/game/objects/items/weapons/janisigns.dm
@@ -0,0 +1,61 @@
+/obj/item/weapon/holosign_creator
+ name = "holographic sign projector"
+ desc = "A handy-dandy hologaphic projector that displays a janitorial sign."
+ icon = 'icons/obj/janitor.dmi'
+ icon_state = "signmaker"
+ item_state = "electronic"
+ force = 5
+ w_class = 2
+ throwforce = 0
+ throw_speed = 3
+ throw_range = 7
+ origin_tech = "programming=3"
+ var/list/signs = list()
+ var/max_signs = 10
+
+/obj/item/weapon/holosign_creator/afterattack(atom/target, mob/user, flag)
+ if(flag)
+ var/turf/T = get_turf(target)
+ var/obj/effect/overlay/holograph/H = locate() in T
+ if(H)
+ user << "You use [src] to destroy [H]."
+ qdel(H)
+ else
+ if(signs.len < max_signs)
+ H = new(get_turf(target))
+ signs += H
+ user << "You create \a [H] with [src]."
+ else
+ user << "[src] is projecting at max capacity!"
+
+/obj/item/weapon/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
+ return
+
+/obj/item/weapon/holosign_creator/attack_self(mob/user)
+ if(signs.len)
+ var/list/L = signs.Copy()
+ for(var/sign in L)
+ qdel(sign)
+ signs -= sign
+ user << "You clear all active holograms."
+
+
+/obj/effect/overlay/holograph
+ name = "wet floor sign"
+ desc = "The words flicker as if they mean nothing."
+ icon = 'icons/obj/janitor.dmi'
+ icon_state = "holosign"
+ anchored = 1
+
+
+/obj/item/weapon/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 = 2
+ throw_range = 5
+ w_class = 2.0
+ attack_verb = list("warned", "cautioned", "smashed")
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index bb45281340e..e2daf1f9994 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -196,5 +196,6 @@
/obj/item/device/lightreplacer,
/obj/item/device/flashlight,
/obj/item/weapon/reagent_containers/spray,
- /obj/item/weapon/soap
+ /obj/item/weapon/soap,
+ /obj/item/weapon/holosign_creator
)
\ No newline at end of file
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 4452056525f..2a10446e1ff 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -74,10 +74,7 @@
new /obj/item/clothing/gloves/black(src)
new /obj/item/clothing/head/soft/purple(src)
new /obj/item/device/flashlight(src)
- new /obj/item/weapon/caution(src)
- new /obj/item/weapon/caution(src)
- new /obj/item/weapon/caution(src)
- new /obj/item/weapon/caution(src)
+ new /obj/item/weapon/holosign_creator(src)
new /obj/item/device/lightreplacer(src)
new /obj/item/weapon/storage/bag/trash(src)
new /obj/item/clothing/shoes/galoshes(src)
diff --git a/html/changelogs/Paprka-PR-5137.yml b/html/changelogs/Paprka-PR-5137.yml
new file mode 100644
index 00000000000..9a277d228ec
--- /dev/null
+++ b/html/changelogs/Paprka-PR-5137.yml
@@ -0,0 +1,4 @@
+author: Paprka
+delete-after: True
+changes:
+ - rscadd: "Added a holographic sign projector to replace the old wet floor signs to encourage janitors to warn crewmembers about wet floors."
\ No newline at end of file
diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi
index 7a7985b8189..4610bfd75b8 100644
Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index d931be35685..7e74667214a 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -557,6 +557,7 @@
#include "code\game\objects\items\weapons\flamethrower.dm"
#include "code\game\objects\items\weapons\gift_wrappaper.dm"
#include "code\game\objects\items\weapons\handcuffs.dm"
+#include "code\game\objects\items\weapons\janisigns.dm"
#include "code\game\objects\items\weapons\kitchen.dm"
#include "code\game\objects\items\weapons\manuals.dm"
#include "code\game\objects\items\weapons\mop.dm"