diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 32040b8573..11186ae4b7 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -48,14 +48,34 @@
return // no message spam
..()
+/obj/structure/mirror/attacked_by(obj/item/I, mob/living/user)
+ if(broken || !istype(user) || !I.force)
+ return ..()
+
+ . = ..()
+ if(broken) // breaking a mirror truly gets you bad luck!
+ to_chat(user, "A chill runs down your spine as [src] shatters...")
+ user.AddComponent(/datum/component/omen, silent=TRUE) // we have our own message
+
+/obj/structure/mirror/bullet_act(obj/projectile/P)
+ if(broken || !isliving(P.firer) || !P.damage)
+ return ..()
+
+ . = ..()
+ if(broken) // breaking a mirror truly gets you bad luck!
+ var/mob/living/unlucky_dude = P.firer
+ to_chat(unlucky_dude, "A chill runs down your spine as [src] shatters...")
+ unlucky_dude.AddComponent(/datum/component/omen, silent=TRUE) // we have our own message
+
/obj/structure/mirror/obj_break(damage_flag, mapload)
- if(!broken && !(flags_1 & NODECONSTRUCT_1))
- icon_state = "mirror_broke"
- if(!mapload)
- playsound(src, "shatter", 70, 1)
- if(desc == initial(desc))
- desc = "Oh no, seven years of bad luck!"
- broken = TRUE
+ if(broken || (flags_1 & NODECONSTRUCT_1))
+ return
+ icon_state = "mirror_broke"
+ if(!mapload)
+ playsound(src, "shatter", 70, TRUE)
+ if(desc == initial(desc))
+ desc = "Oh no, seven years of bad luck!"
+ broken = TRUE
/obj/structure/mirror/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))