diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm
index 04a5f4d2be..727203b150 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant.dm
@@ -411,6 +411,11 @@
revenant = null
qdel(src)
+/obj/item/ectoplasm/revenant/suicide_act(mob/user)
+ user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the shadow realm!")
+ scatter()
+ return (OXYLOSS)
+
/obj/item/ectoplasm/revenant/Destroy()
if(!QDELETED(revenant))
qdel(revenant)
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index a36503e7c4..908ecd797f 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -551,16 +551,25 @@ This is here to make the tiles around the station mininuke change when it's arme
/obj/item/disk/nuclear/suicide_act(mob/user)
user.visible_message("[user] is going delta! It looks like [user.p_theyre()] trying to commit suicide!")
- playsound(user.loc, 'sound/machines/alarm.ogg', 50, -1, 1)
+ playsound(src, 'sound/machines/alarm.ogg', 50, -1, 1)
for(var/i in 1 to 100)
addtimer(CALLBACK(user, /atom/proc/add_atom_colour, (i % 2)? "#00FF00" : "#FF0000", ADMIN_COLOUR_PRIORITY), i)
- addtimer(CALLBACK(user, /atom/proc/remove_atom_colour, ADMIN_COLOUR_PRIORITY), 101)
- addtimer(CALLBACK(user, /atom/proc/visible_message, "[user] was destroyed by the nuclear blast!"), 101)
- addtimer(CALLBACK(user, /mob/living/proc/adjustOxyLoss, 200), 101)
- addtimer(CALLBACK(user, /mob/proc/death, 0), 101)
+ addtimer(CALLBACK(src, .proc/manual_suicide, user), 101)
return MANUAL_SUICIDE
+
+/obj/item/disk/proc/manual_suicide(mob/living/user)
+ user.remove_atom_colour(ADMIN_COLOUR_PRIORITY)
+ user.visible_message("[user] was destroyed by the nuclear blast!")
+ user.adjustOxyLoss(200)
+ user.death(0)
/obj/item/disk/fakenucleardisk
name = "cheap plastic imitation of the nuclear authentication disk"
desc = "Broken dreams and a faint odor of cheese."
icon_state = "nucleardisk"
+
+/obj/item/disk/fakenucleardisk/suicide_act(mob/user)
+ user.visible_message("[user] is pretending to go delta! It looks like [user.p_theyre()] trying to commit suicide!")
+ playsound(src, 'sound/machines/alarm.ogg', 30, -1, 1)
+ addtimer(CALLBACK(src, .proc/manual_suicide, user), 101)
+ return MANUAL_SUICIDE
\ No newline at end of file
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index a7ebf8251d..d9c2ac970e 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -20,6 +20,16 @@
R.add_fingerprint(user)
qdel(src)
+/obj/item/bodybag/suicide_act(mob/user)
+ if(isopenturf(user.loc))
+ user.visible_message("[user] is crawling into [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ var/obj/structure/closet/body_bag/R = new unfoldedbag_path(user.loc)
+ R.add_fingerprint(user)
+ qdel(src)
+ user.forceMove(R)
+ playsound(src, 'sound/items/zip.ogg', 15, 1, -3)
+ return (OXYLOSS)
+ ..()
// Bluespace bodybag
diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm
index 7cf88e77ef..4fe27d1320 100644
--- a/code/game/objects/items/dice.dm
+++ b/code/game/objects/items/dice.dm
@@ -30,6 +30,10 @@
if(special_die == "100")
new /obj/item/dice/d100(src)
+/obj/item/storage/pill_bottle/dice/suicide_act(mob/user)
+ user.visible_message("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (OXYLOSS)
+
/obj/item/dice //depreciated d6, use /obj/item/dice/d6 if you actually want a d6
name = "die"
desc = "A die with six sides. Basic and servicable."
@@ -47,6 +51,10 @@
update_icon()
..()
+/obj/item/dice/suicide_act(mob/user)
+ user.visible_message("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (OXYLOSS)
+
/obj/item/dice/d1
name = "d1"
desc = "A die with one side. Deterministic!"
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 6c073f4b69..8db91578f5 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -113,6 +113,10 @@
origin_tech = "biotech=2"
self_delay = 20
+/obj/item/stack/medical/bruise_pack/suicide_act(mob/user)
+ user.visible_message("[user] is bludgeoning [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (BRUTELOSS)
+
/obj/item/stack/medical/gauze
name = "medical gauze"
desc = "A roll of elastic cloth that is extremely effective at stopping bleeding, but does not heal wounds."
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index 4dc90de6be..2b7a1695cd 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -167,6 +167,10 @@
usr.s_active.close(usr)
src.show_to(usr)
+/obj/item/storage/pill_bottle/suicide_act(mob/user)
+ user.visible_message("[user] is trying to get the cap off [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (TOXLOSS)
+
/obj/item/storage/pill_bottle/charcoal
name = "bottle of charcoal pills"
desc = "Contains pills used to counter toxins."
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index 5f3e493677..e00513a47a 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -34,6 +34,10 @@
cooldown = world.time
flick(pulseicon, src)
radiation_pulse(src, 400, 2)
+
+/obj/item/nuke_core/suicide_act(mob/user)
+ user.visible_message("[user] is rubbing [src] against [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (TOXLOSS)
//nuke core box, for carrying the core
/obj/item/nuke_core_container
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index c112e103b2..4356102efd 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -398,7 +398,7 @@
icon_state = "ectoplasm"
/obj/item/ectoplasm/suicide_act(mob/user)
- user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the astral plane.")
+ user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the astral plane!")
return (OXYLOSS)
/obj/item/mounted_chainsaw
diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm
index 027832de5e..5e64d716ec 100644
--- a/code/modules/hydroponics/grown/melon.dm
+++ b/code/modules/hydroponics/grown/melon.dm
@@ -14,6 +14,13 @@
mutatelist = list(/obj/item/seeds/watermelon/holy)
reagents_add = list("water" = 0.2, "vitamin" = 0.04, "nutriment" = 0.2)
+/obj/item/seeds/watermelon/suicide_act(mob/user)
+ user.visible_message("[user] is swallowing [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ user.gib()
+ new product(drop_location())
+ qdel(src)
+ return MANUAL_SUICIDE
+
/obj/item/reagent_containers/food/snacks/grown/watermelon
seed = /obj/item/seeds/watermelon
name = "watermelon"