diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index 7e8493059dc..ba4bf0090c7 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -26,6 +26,7 @@
#define TOXLOSS 4
#define OXYLOSS 8
#define SHAME 16
+#define OBLITERATION 32
//Bitflags defining which status effects could be or are inflicted on a mob
#define CANSTUN 1
diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm
index 0c8d22b5a8b..6288bed2964 100644
--- a/code/game/gamemodes/changeling/powers/mutations.dm
+++ b/code/game/gamemodes/changeling/powers/mutations.dm
@@ -220,7 +220,7 @@
/obj/item/gun/magic/tentacle/suicide_act(mob/user)
user.visible_message("[user] coils [src] tightly around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide.")
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/ammo_casing/magic/tentacle
name = "tentacle"
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 3d8548ad11c..4860733f4f7 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -16,6 +16,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
var/inhand_y_dimension = 32
can_be_hit = FALSE
+ suicidal_hands = TRUE
var/r_speed = 1.0
var/health = null
@@ -145,16 +146,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
/obj/item/blob_act()
qdel(src)
-//user: The mob that is suiciding
-//damagetype: The type of damage the item will inflict on the user
-//BRUTELOSS = 1
-//FIRELOSS = 2
-//TOXLOSS = 4
-//OXYLOSS = 8
-//Output a creative message and then return the damagetype done
-/obj/item/proc/suicide_act(mob/user)
- return
-
/obj/item/verb/move_to_top()
set name = "Move To Top"
set category = null
@@ -258,7 +249,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
add_fingerprint(user)
if(pickup(user)) // Pickup succeeded
user.put_in_active_hand(src)
-
+
return 1
/obj/item/attack_alien(mob/user as mob)
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index b4dd66e3be5..926da3d28cb 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -23,7 +23,7 @@
/obj/item/toy/crayon/suicide_act(mob/user)
user.visible_message("[user] is jamming the [name] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide.")
- return (BRUTELOSS|OXYLOSS)
+ return BRUTELOSS|OXYLOSS
/obj/item/toy/crayon/New()
..()
diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm
index 840d5e64395..6d3a1c2b49d 100644
--- a/code/game/objects/items/devices/instruments.dm
+++ b/code/game/objects/items/devices/instruments.dm
@@ -19,7 +19,7 @@
/obj/item/instrument/suicide_act(mob/user)
user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/instrument/Initialize(mapload)
song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index d4d5f4aa213..7607ca52319 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -231,7 +231,7 @@
/obj/item/toy/katana/suicide_act(mob/user)
var/dmsg = pick("[user] tries to stab \the [src] into [user.p_their()] abdomen, but it shatters! [user.p_they(TRUE)] look[user.p_s()] as if [user.p_they()] might die from the shame.","[user] tries to stab \the [src] into [user.p_their()] abdomen, but \the [src] bends and breaks in half! [user.p_they(TRUE)] look[user.p_s()] as if [user.p_they()] might die from the shame.","[user] tries to slice [user.p_their()] own throat, but the plastic blade has no sharpness, causing [user.p_them()] to lose [user.p_their()] balance, slip over, and break [user.p_their()] neck with a loud snap!")
user.visible_message("[dmsg] It looks like [user.p_theyre()] trying to commit suicide.")
- return (BRUTELOSS)
+ return BRUTELOSS
/*
@@ -1377,7 +1377,7 @@ obj/item/toy/cards/deck/syndicate/black
/obj/item/toy/russian_revolver/suicide_act(mob/user)
user.visible_message("[user] quickly loads six bullets into [src]'s cylinder and points it at [user.p_their()] head before pulling the trigger! It looks like [user.p_theyre()] trying to commit suicide.")
playsound(loc, 'sound/weapons/gunshots/gunshot_strong.ogg', 50, 1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/toy/russian_revolver/New()
spin_cylinder()
diff --git a/code/game/objects/items/weapons/courtroom.dm b/code/game/objects/items/weapons/courtroom.dm
index d25b6f54d29..72bb3fceb11 100644
--- a/code/game/objects/items/weapons/courtroom.dm
+++ b/code/game/objects/items/weapons/courtroom.dm
@@ -16,7 +16,7 @@
/obj/item/gavelhammer/suicide_act(mob/user)
user.visible_message("[user] has sentenced [user.p_them()]self to death with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.")
playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/gavelblock
name = "gavel block"
diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm
index 1eecd4b6e14..ea70e29ef83 100644
--- a/code/game/objects/items/weapons/defib.dm
+++ b/code/game/objects/items/weapons/defib.dm
@@ -283,7 +283,7 @@
user.visible_message("[user] is putting the live paddles on [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide.")
defib.deductcharge(revivecost)
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/twohanded/shockpaddles/dropped(mob/user as mob)
if(user)
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index be490d29065..d17287b01a6 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -116,6 +116,7 @@
sleep(10)
prime()
user.gib()
+ return OBLITERATION
/obj/item/grenade/plastic/update_icon()
if(nadeassembly)
diff --git a/code/game/objects/items/weapons/garrote.dm b/code/game/objects/items/weapons/garrote.dm
index 03125313656..dd65df1ea3f 100644
--- a/code/game/objects/items/weapons/garrote.dm
+++ b/code/game/objects/items/weapons/garrote.dm
@@ -168,4 +168,4 @@
/obj/item/twohanded/garrote/suicide_act(mob/user)
user.visible_message("[user] is wrapping the [src] around [user.p_their()] neck and pulling the handles! It looks like [user.p_theyre()] trying to commit suicide.")
playsound(src.loc, 'sound/weapons/cablecuff.ogg', 15, 1, -1)
- return (OXYLOSS)
+ return OXYLOSS
diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm
index 73ff4e5064d..9e471583d3b 100644
--- a/code/game/objects/items/weapons/holy_weapons.dm
+++ b/code/game/objects/items/weapons/holy_weapons.dm
@@ -15,7 +15,7 @@
/obj/item/nullrod/suicide_act(mob/user)
user.visible_message("[user] is killing [user.p_them()]self with \the [src.name]! It looks like [user.p_theyre()] trying to get closer to god!")
- return (BRUTELOSS|FIRELOSS)
+ return BRUTELOSS|FIRELOSS
/obj/item/nullrod/attack(mob/M, mob/living/carbon/user)
..()
diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm
index a0810a0b96c..982959dd8f9 100644
--- a/code/game/objects/items/weapons/kitchen.dm
+++ b/code/game/objects/items/weapons/kitchen.dm
@@ -121,7 +121,7 @@
user.visible_message(pick("[user] is slitting [user.p_their()] wrists with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.", \
"[user] is slitting [user.p_their()] throat with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.", \
"[user] is slitting [user.p_their()] stomach open with the [name]! It looks like [user.p_theyre()] trying to commit seppuku."))
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/kitchen/knife/plastic
name = "plastic knife"
diff --git a/code/game/objects/items/weapons/legcuffs.dm b/code/game/objects/items/weapons/legcuffs.dm
index 3391687f20a..297966525f0 100644
--- a/code/game/objects/items/weapons/legcuffs.dm
+++ b/code/game/objects/items/weapons/legcuffs.dm
@@ -35,7 +35,7 @@
/obj/item/restraints/legcuffs/beartrap/suicide_act(mob/user)
user.visible_message("[user] is sticking [user.p_their()] head in the [name]! It looks like [user.p_theyre()] trying to commit suicide.")
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/restraints/legcuffs/beartrap/attack_self(mob/user)
..()
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index 8ad283a77da..0d85245d58f 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -16,7 +16,7 @@
/obj/item/melee/energy/suicide_act(mob/user)
user.visible_message(pick("[user] is slitting [user.p_their()] stomach open with the [name]! It looks like [user.p_theyre()] trying to commit seppuku.", \
"[user] is falling on the [name]! It looks like [user.p_theyre()] trying to commit suicide."))
- return (BRUTELOSS|FIRELOSS)
+ return BRUTELOSS|FIRELOSS
/obj/item/melee/energy/attack_self(mob/living/carbon/user)
if(user.disabilities & CLUMSY && prob(50))
@@ -81,7 +81,7 @@
/obj/item/melee/energy/axe/suicide_act(mob/user)
user.visible_message("[user] swings the [name] towards [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide.")
- return (BRUTELOSS|FIRELOSS)
+ return BRUTELOSS|FIRELOSS
/obj/item/melee/energy/sword
name = "energy sword"
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
index a19df11e790..381f19dc4cf 100644
--- a/code/game/objects/items/weapons/melee/misc.dm
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -17,8 +17,8 @@
/obj/item/melee/chainofcommand/suicide_act(mob/user)
- to_chat(viewers(user), "[user] is strangling [user.p_them()]self with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.")
- return (OXYLOSS)
+ to_chat(viewers(user), "[user] is strangling [user.p_them()]self with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.")
+ return OXYLOSS
/obj/item/melee/rapier
name = "captain's rapier"
diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm
index 88de9de1b11..428bfcd8fab 100644
--- a/code/game/objects/items/weapons/shards.dm
+++ b/code/game/objects/items/weapons/shards.dm
@@ -18,7 +18,7 @@
/obj/item/shard/suicide_act(mob/user)
to_chat(viewers(user), pick("[user] is slitting [user.p_their()] wrists with [src]! It looks like [user.p_theyre()] trying to commit suicide.",
"[user] is slitting [user.p_their()] throat with [src]! It looks like [user.p_theyre()] trying to commit suicide."))
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/shard/New()
..()
diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index 2fd7d774113..03cf28b25ed 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -42,7 +42,7 @@
/obj/item/storage/bag/trash/suicide_act(mob/user)
user.visible_message("[user] puts the [name] over [user.p_their()] head and starts chomping at the insides! Disgusting!")
playsound(loc, 'sound/items/eatfood.ogg', 50, 1, -1)
- return (TOXLOSS)
+ return TOXLOSS
/obj/item/storage/bag/trash/update_icon()
if(contents.len == 0)
diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm
index 16ecd7cc72c..dfa1bf97358 100644
--- a/code/game/objects/items/weapons/storage/bible.dm
+++ b/code/game/objects/items/weapons/storage/bible.dm
@@ -9,9 +9,10 @@
var/mob/affecting = null
var/deity_name = "Christ"
- suicide_act(mob/user)
- to_chat(viewers(user), "[user] stares into [src.name] and attempts to trascend understanding of the universe!")
- return (user.dust())
+/obj/item/storage/bible/suicide_act(mob/user)
+ to_chat(viewers(user), "[user] stares into [src.name] and attempts to transcend understanding of the universe!")
+ user.dust()
+ return OBLITERATION
/obj/item/storage/bible/booze
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index f33fc7240d2..b7356a7757b 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -18,7 +18,7 @@
/obj/item/melee/baton/suicide_act(mob/user)
user.visible_message("[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide.")
- return (FIRELOSS)
+ return FIRELOSS
/obj/item/melee/baton/New()
..()
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 5eb7a5b30ff..98f97b66f53 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -32,7 +32,7 @@
/obj/item/wrench/suicide_act(mob/user)
user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/wrench/cyborg
name = "automatic wrench"
@@ -76,7 +76,7 @@
/obj/item/wrench/power/suicide_act(mob/user)
user.visible_message("[user] is pressing [src] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/wrench/medical
name = "medical wrench"
@@ -113,7 +113,7 @@
return
user.dust()
- return OXYLOSS
+ return OBLITERATION
//Screwdriver
/obj/item/screwdriver
@@ -143,7 +143,7 @@
/obj/item/screwdriver/suicide_act(mob/user)
user.visible_message("[user] is stabbing [src] into [user.p_their()] [pick("temple", "heart")]! It looks like [user.p_theyre()] trying to commit suicide!")
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/screwdriver/New(loc, var/param_color = null)
..()
@@ -199,7 +199,7 @@
/obj/item/screwdriver/power/suicide_act(mob/user)
user.visible_message("[user] is putting [src] to [user.p_their()] temple. It looks like [user.p_theyre()] trying to commit suicide!")
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/screwdriver/power/attack_self(mob/user)
playsound(get_turf(user), 'sound/items/change_drill.ogg', 50, 1)
@@ -256,7 +256,7 @@
/obj/item/wirecutters/suicide_act(mob/user)
user.visible_message("[user] is cutting at [user.p_their()] arteries with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, usesound, 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/wirecutters/brass
name = "brass wirecutters"
@@ -299,7 +299,7 @@
if(head)
head.droplimb(0, DROPLIMB_BLUNT, FALSE, TRUE)
playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/wirecutters/power/attack_self(mob/user)
playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
@@ -349,7 +349,7 @@
/obj/item/weldingtool/suicide_act(mob/user)
user.visible_message("[user] welds [user.p_their()] every orifice closed! It looks like [user.p_theyre()] trying to commit suicide!")
- return (FIRELOSS)
+ return FIRELOSS
/obj/item/weldingtool/proc/update_torch()
overlays.Cut()
@@ -738,7 +738,7 @@ obj/item/weldingtool/experimental/process()
/obj/item/crowbar/power/suicide_act(mob/user)
user.visible_message("[user] is putting [user.p_their()] head in [src]. It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/items/jaws_pry.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/crowbar/power/attack_self(mob/user)
playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index de219626d31..29f2c2dd488 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -797,7 +797,7 @@
/obj/item/twohanded/pitchfork/suicide_act(mob/user)
user.visible_message("[user] impales \himself in \his abdomen with [src]! It looks like \he's trying to commit suicide...")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/twohanded/pitchfork/demonic/pickup(mob/user)
. = ..()
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index cd295befb83..b759139dba6 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -12,8 +12,8 @@
/obj/item/banhammer/suicide_act(mob/user)
- to_chat(viewers(user), "[user] is hitting [user.p_them()]self with the [src.name]! It looks like [user.p_theyre()] trying to ban [user.p_them()]self from life.")
- return (BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS)
+ to_chat(viewers(user), "[user] is hitting [user.p_them()]self with the [src.name]! It looks like [user.p_theyre()] trying to ban [user.p_them()]self from life.")
+ return BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS
/obj/item/sord
name = "\improper SORD"
@@ -49,7 +49,7 @@
/obj/item/claymore/suicide_act(mob/user)
user.visible_message("[user] is falling on the [name]! It looks like [user.p_theyre()] trying to commit suicide.")
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/claymore/ceremonial
name = "ceremonial claymore"
@@ -76,7 +76,7 @@
/obj/item/katana/suicide_act(mob/user)
user.visible_message("[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku.")
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/harpoon
name = "harpoon"
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index d9358c3a694..6506a5fdf2e 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -29,6 +29,7 @@
var/on_blueprints = FALSE //Are we visible on the station blueprints at roundstart?
var/force_blueprints = FALSE //forces the obj to be on the blueprints, regardless of when it was created.
+ var/suicidal_hands = FALSE // Does it requires you to hold it to commit suicide with it?
/obj/New()
..()
@@ -76,6 +77,19 @@
processing_objects.Remove(src)
return 0
+//user: The mob that is suiciding
+//damagetype: The type of damage the item will inflict on the user
+//BRUTELOSS = 1
+//FIRELOSS = 2
+//TOXLOSS = 4
+//OXYLOSS = 8
+//SHAME = 16
+//OBLITERATION = 32
+
+//Output a creative message and then return the damagetype done
+/obj/proc/suicide_act(mob/user)
+ return FALSE
+
/obj/assume_air(datum/gas_mixture/giver)
if(loc)
return loc.assume_air(giver)
diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm
index 1e0bfcae34b..46d5c4e36ba 100644
--- a/code/game/verbs/suicide.dm
+++ b/code/game/verbs/suicide.dm
@@ -52,6 +52,9 @@
/mob/living/carbon/human/verb/suicide()
set hidden = 1
+ be_suicidal()
+
+/mob/living/carbon/human/proc/be_suicidal(forced = FALSE)
if(stat == DEAD)
to_chat(src, "You're already dead!")
return
@@ -69,20 +72,39 @@
to_chat(src, "You're already committing suicide! Be patient!")
return
- var/confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No")
- if(confirm == "Yes")
- suiciding = 1
+ var/confirm = null
+ if(!forced)
+ confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No")
+
+ if(forced || (confirm == "Yes"))
+ suiciding = TRUE
var/obj/item/held_item = get_active_hand()
if(held_item)
var/damagetype = held_item.suicide_act(src)
if(damagetype)
if(damagetype & SHAME)
adjustStaminaLoss(200)
- suiciding = 0
+ suiciding = FALSE
+ return
+ if(damagetype & OBLITERATION) // Does it gib or something? Don't deal damage
return
do_suicide(damagetype, held_item)
return
+ else
+ for(var/obj/O in orange(1, src))
+ if(O.suicidal_hands)
+ continue
+ var/damagetype = O.suicide_act(src)
+ if(damagetype)
+ if(damagetype & SHAME)
+ adjustStaminaLoss(200)
+ suiciding = FALSE
+ return
+ if(damagetype & OBLITERATION)
+ return
+ do_suicide(damagetype, O)
+ return
to_chat(viewers(src), "[src] [replacetext(pick(dna.species.suicide_messages), "their", p_their())] It looks like [p_theyre()] trying to commit suicide.")
do_suicide(0)
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index 77fcd03c7df..113720caff1 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -491,5 +491,6 @@
/obj/item/clothing/mask/cursedclown/suicide_act(mob/user)
user.visible_message("[user] gazes into the eyes of [src]. [src] gazes back!")
spawn(10)
- user.gib()
- return BRUTELOSS
+ if(user)
+ user.gib()
+ return OBLITERATION
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index 09ecdad8ed7..23206e8b9b3 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -154,7 +154,7 @@
/obj/item/fluff/rsik_katana/suicide_act(mob/user)
user.visible_message("[user] tries to stab [src] into [user.p_their()] stomach! Except [src] shatters! [user.p_they(TRUE)] look[user.p_s()] as if [user.p_they()] might die from the shame.")
- return(BRUTELOSS)
+ return BRUTELOSS
/obj/item/crowbar/fluff/zelda_creedy_1 // Zomgponies: Griffin Rowley
name = "Zelda's Crowbar"
diff --git a/code/modules/fish/fish_items.dm b/code/modules/fish/fish_items.dm
index 63a4b668930..a0882ae5df8 100644
--- a/code/modules/fish/fish_items.dm
+++ b/code/modules/fish/fish_items.dm
@@ -25,9 +25,9 @@
throw_speed = 3
throw_range = 7
- suicide_act(mob/user) //"A tiny net is a death sentence: it's a net and it's tiny!" https://www.youtube.com/watch?v=FCI9Y4VGCVw
- to_chat(viewers(user), "[user] places the [src.name] on top of [user.p_their()] head, [user.p_their()] fingers tangled in the netting! It looks like [user.p_theyre()] trying to commit suicide.")
- return(OXYLOSS)
+/obj/item/fish_net/suicide_act(mob/user) //"A tiny net is a death sentence: it's a net and it's tiny!" https://www.youtube.com/watch?v=FCI9Y4VGCVw
+ to_chat(viewers(user), "[user] places the [src.name] on top of [user.p_their()] head, [user.p_their()] fingers tangled in the netting! It looks like [user.p_theyre()] trying to commit suicide.")
+ return OXYLOSS
/obj/item/fishfood
name = "fish food can"
@@ -51,9 +51,9 @@
throw_range = 7
attack_verb = list("scrubbed", "brushed", "scraped")
- suicide_act(mob/user)
- to_chat(viewers(user), "[user] is vigorously scrubbing [user.p_them()]self raw with the [name]! It looks like [user.p_theyre()] trying to commit suicide.")
- return(BRUTELOSS|FIRELOSS)
+/obj/item/tank_brush/suicide_act(mob/user)
+ to_chat(viewers(user), "[user] is vigorously scrubbing [user.p_them()]self raw with the [name]! It looks like [user.p_theyre()] trying to commit suicide.")
+ return BRUTELOSS|FIRELOSS
//////////////////////////////////////////////
// Fish Items //
diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm
index 64a585e9051..d512e3888a9 100644
--- a/code/modules/food_and_drinks/food/condiment.dm
+++ b/code/modules/food_and_drinks/food/condiment.dm
@@ -131,7 +131,7 @@
user.name = newname
user.real_name = newname
desc = "Salt. From dead crew, presumably."
- return (TOXLOSS)
+ return TOXLOSS
/obj/item/reagent_containers/food/condiment/peppermill
name = "pepper mill"
diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index c5bcd22a885..edcb85e0d15 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -24,6 +24,18 @@
idle_power_usage = 2
active_power_usage = 500
+/obj/machinery/gibber/suicide_act(mob/user)
+ if(occupant || locked)
+ return FALSE
+ user.visible_message("[user] climbs into [src] and turns it on!")
+ user.Stun(10)
+ user.forceMove(src)
+ occupant = user
+ update_icon()
+ feedinTopanim()
+ addtimer(CALLBACK(src, .proc/startgibbing, user), 33)
+ return OBLITERATION
+
/obj/machinery/gibber/Destroy()
if(contents.len)
for(var/atom/movable/A in contents)
@@ -145,7 +157,7 @@
set name = "Empty Gibber"
set src in oview(1)
- if(usr.stat != CONSCIOUS)
+ if(usr.incapacitated())
return
go_out()
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index 4515b3ad75f..dd56ade79be 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -30,13 +30,13 @@
playsound(loc, 'sound/items/bikehorn.ogg', 50, 1, -1)
sleep(25)
if(!user)
- return (OXYLOSS)
+ return OXYLOSS
user.say("BANG!")
sleep(25)
if(!user)
- return (OXYLOSS)
+ return OXYLOSS
user.visible_message("[user] laughs so hard [user.p_they()] begin[user.p_s()] to suffocate!")
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/grown/bananapeel
seed = /obj/item/seeds/banana
@@ -52,7 +52,7 @@
/obj/item/grown/bananapeel/suicide_act(mob/user)
user.visible_message("[user] is deliberately slipping on the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.")
playsound(loc, 'sound/misc/slip.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
// Mimana - invisible sprites are totally a feature!
diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm
index eea80e17e60..64b84649770 100644
--- a/code/modules/hydroponics/grown/kudzu.dm
+++ b/code/modules/hydroponics/grown/kudzu.dm
@@ -24,7 +24,7 @@
/obj/item/seeds/kudzu/suicide_act(mob/user)
user.visible_message("[user] swallows the pack of kudzu seeds! It looks like [user.p_theyre()] trying to commit suicide..")
plant(user)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/seeds/kudzu/proc/plant(mob/user)
if(istype(user.loc, /turf/space))
diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm
index 8c4ed2b029c..af829387525 100644
--- a/code/modules/hydroponics/grown/nettle.dm
+++ b/code/modules/hydroponics/grown/nettle.dm
@@ -45,7 +45,7 @@
/obj/item/grown/nettle/suicide_act(mob/user)
user.visible_message("[user] is eating some of the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.")
- return (BRUTELOSS|TOXLOSS)
+ return BRUTELOSS|TOXLOSS
/obj/item/grown/nettle/pickup(mob/living/user)
..()
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index a3453585817..14080c62bba 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -34,7 +34,7 @@
/obj/item/reagent_containers/spray/weedspray/suicide_act(mob/user)
user.visible_message("[user] is huffing the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.")
- return (TOXLOSS)
+ return TOXLOSS
/obj/item/reagent_containers/spray/pestspray // -- Skie
desc = "It's some pest eliminator spray! Do not inhale!"
@@ -56,7 +56,7 @@
/obj/item/reagent_containers/spray/pestspray/suicide_act(mob/user)
user.visible_message("[user] is huffing the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.")
- return (TOXLOSS)
+ return TOXLOSS
/obj/item/cultivator
name = "cultivator"
@@ -91,7 +91,7 @@
/obj/item/hatchet/suicide_act(mob/user)
user.visible_message("[user] is chopping at [user.p_them()]self with the [name]! It looks like [user.p_theyre()] trying to commit suicide.")
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/hatchet/unathiknife
name = "duelling knife"
@@ -126,7 +126,7 @@
if(affecting)
affecting.droplimb(1, DROPLIMB_SHARP)
playsound(loc, pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg'), 50, 1, -1)
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/scythe/pre_attackby(atom/A, mob/living/user, params)
if(swiping || !istype(A, /obj/structure/spacevine) || get_turf(A) == get_turf(user))
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index 43a811dc3a3..a5897666916 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -59,7 +59,7 @@
if(!gibbed && deathgasp_on_death)
emote("deathgasp")
- if(suiciding)
+ if(mind && suiciding)
mind.suicided = TRUE
clear_fullscreens()
update_sight()
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index 6e2c8e6b521..c1124bee744 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -104,7 +104,7 @@
H.visible_message("[H] holds up a contract claiming his soul, then immediately catches fire. It looks like \he's trying to commit suicide!")
H.adjust_fire_stacks(20)
H.IgniteMob()
- return(FIRELOSS)
+ return FIRELOSS
else
..()
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 83897e5cbd3..302f2e02342 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -26,7 +26,7 @@
/obj/item/pen/suicide_act(mob/user)
to_chat(viewers(user), "[user] starts scribbling numbers over [user.p_them()]self with the [name]! It looks like [user.p_theyre()] trying to commit sudoku.")
- return (BRUTELOSS)
+ return BRUTELOSS
/obj/item/pen/blue
name = "blue-ink pen"
diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm
index 9bb3a09ebb0..8e78f0ce230 100644
--- a/code/modules/paperwork/stamps.dm
+++ b/code/modules/paperwork/stamps.dm
@@ -15,7 +15,7 @@
/obj/item/stamp/suicide_act(mob/user)
user.visible_message("[user] stamps 'VOID' on [user.p_their()] forehead, then promptly falls over, dead.")
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/stamp/qm
name = "Quartermaster's rubber stamp"
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 410b91bdf48..238d2e43599 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -504,7 +504,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list(
user.visible_message("[user] is making a noose with the [name]! It looks like [user.p_theyre()] trying to commit suicide.")
else
user.visible_message("[user] is strangling [user.p_them()]self with the [name]! It looks like [user.p_theyre()] trying to commit suicide.")
- return(OXYLOSS)
+ return OXYLOSS
/obj/item/stack/cable_coil/New(loc, length = MAXCOIL, paramcolor = null)
..()
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 3bc2b5bc39b..192ef9d792e 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -90,7 +90,7 @@
/obj/item/stock_parts/cell/suicide_act(mob/user)
to_chat(viewers(user), "[user] is licking the electrodes of the [src]! It looks like [user.p_theyre()] trying to commit suicide.")
- return (FIRELOSS)
+ return FIRELOSS
/obj/item/stock_parts/cell/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/reagent_containers/syringe))
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 795b5942845..8c9b0cf66f8 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -154,14 +154,14 @@
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
power_supply.use(shot.e_cost)
update_icon()
- return(FIRELOSS)
+ return FIRELOSS
else
user.visible_message("[user] panics and starts choking to death!")
- return(OXYLOSS)
+ return OXYLOSS
else
user.visible_message("[user] is pretending to blow [user.p_their()] brains out with the [name]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1)
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/gun/energy/vv_edit_var(var_name, var_value)
switch(var_name)
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 74ab90fcbc4..623986f5837 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -137,7 +137,7 @@
playsound(loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
user.visible_message("[user] cocks the [name] and pretends to blow [user.p_their()] brains out! It looks like [user.p_theyre()] trying to commit suicide!")
shoot_live_shot()
- return (OXYLOSS)
+ return OXYLOSS
// Plasma Cutters //
/obj/item/gun/energy/plasmacutter
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index 6e558dedbd1..9defe7637d4 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -55,7 +55,7 @@
/obj/item/gun/projectile/proc/can_reload()
return !magazine
-/obj/item/gun/projectile/proc/reload(obj/item/ammo_box/magazine/AM, mob/user as mob)
+/obj/item/gun/projectile/proc/reload(obj/item/ammo_box/magazine/AM, mob/user as mob)
user.remove_from_mob(AM)
magazine = AM
magazine.loc = src
@@ -81,7 +81,7 @@
to_chat(user, "You perform a tactical reload on \the [src], replacing the magazine.")
magazine.loc = get_turf(loc)
magazine.update_icon()
- magazine = null
+ magazine = null
reload(AM, user)
return TRUE
else
@@ -165,14 +165,14 @@
if(user.l_hand == src || user.r_hand == src)
process_fire(user, user, 0, zone_override = "head")
user.visible_message("[user] blows [user.p_their()] brains out with the [name]!")
- return(BRUTELOSS)
+ return BRUTELOSS
else
user.visible_message("[user] panics and starts choking to death!")
- return(OXYLOSS)
+ return OXYLOSS
else
user.visible_message("[user] is pretending to blow [user.p_their()] brains out with the [name]! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1)
- return (OXYLOSS)
+ return OXYLOSS
/obj/item/gun/projectile/proc/sawoff(mob/user)
if(sawn_state == SAWN_OFF)
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index 53691dd0264..46e4ee0c18b 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -57,10 +57,10 @@
origin_tech = "materials=1;biotech=1"
attack_verb = list("drilled")
- suicide_act(mob/user)
- to_chat(viewers(user), pick("[user] is pressing [src] to [user.p_their()] temple and activating it! It looks like [user.p_theyre()] trying to commit suicide.",
- "[user] is pressing [src] to [user.p_their()] chest and activating it! It looks like [user.p_theyre()] trying to commit suicide."))
- return (BRUTELOSS)
+/obj/item/surgicaldrill/suicide_act(mob/user)
+ to_chat(viewers(user), pick("[user] is pressing [src] to [user.p_their()] temple and activating it! It looks like [user.p_theyre()] trying to commit suicide.",
+ "[user] is pressing [src] to [user.p_their()] chest and activating it! It looks like [user.p_theyre()] trying to commit suicide."))
+ return BRUTELOSS
/obj/item/surgicaldrill/augment
desc = "Effectively a small power drill contained within your arm, edges dulled to prevent tissue damage. May or may not pierce the heavens."
@@ -87,11 +87,11 @@
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
- suicide_act(mob/user)
- to_chat(viewers(user), pick("[user] is slitting [user.p_their()] wrists with [src]! It looks like [user.p_theyre()] trying to commit suicide.",
- "[user] is slitting [user.p_their()] throat with [src]! It looks like [user.p_theyre()] trying to commit suicide.",
- "[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku."))
- return (BRUTELOSS)
+/obj/item/scalpel/suicide_act(mob/user)
+ to_chat(viewers(user), pick("[user] is slitting [user.p_their()] wrists with [src]! It looks like [user.p_theyre()] trying to commit suicide.",
+ "[user] is slitting [user.p_their()] throat with [src]! It looks like [user.p_theyre()] trying to commit suicide.",
+ "[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku."))
+ return BRUTELOSS
/obj/item/scalpel/augment