diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 468d5cacf9..49d37b05f5 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -19,6 +19,10 @@
var/list/files = list()
+/obj/item/card/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins to swipe [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+
/obj/item/card/data
name = "data disk"
desc = "A disk of data."
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index 372eb56bfe..01bb057769 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -490,6 +490,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM
light_color = LIGHT_COLOR_FIRE
grind_results = list("iron" = 1, "welding_fuel" = 5, "oil" = 5)
+/obj/item/lighter/suicide_act(mob/living/carbon/user)
+ if (lit)
+ user.visible_message("[user] begins holding \the [src]'s flame up to [user.p_their()] face! It looks like [user.p_theyre()] trying to commit suicide!")
+ playsound(src, 'sound/items/welder.ogg', 50, 1)
+ return FIRELOSS
+ else
+ user.visible_message("[user] begins whacking [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+
/obj/item/lighter/update_icon()
if(lit)
icon_state = "[initial(icon_state)]_on"
diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm
index 3e322ea0fa..9f1e05599d 100644
--- a/code/game/objects/items/cosmetics.dm
+++ b/code/game/objects/items/cosmetics.dm
@@ -107,6 +107,12 @@
flags_1 = CONDUCT_1
w_class = WEIGHT_CLASS_TINY
+/obj/item/razor/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins shaving [user.p_them()]self without the razor guard! It looks like [user.p_theyre()] trying to commit suicide!")
+ shave(user, "mouth")
+ shave(user, "head")//doesnt need to be "head" specifically, but whatever
+ return BRUTELOSS
+
/obj/item/razor/proc/shave(mob/living/carbon/human/H, location = "mouth")
if(location == "mouth")
H.facial_hair_style = "Shaved"
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index aac326dc3f..45f5e8db1e 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -72,6 +72,14 @@ GLOBAL_LIST_EMPTY(PDAs)
var/underline_flag = TRUE //flag for underline
+/obj/item/device/pda/suicide_act(mob/living/carbon/user)
+ var/deathMessage = msg_input(user)
+ if (!deathMessage)
+ deathMessage = "i ded"
+ user.visible_message("[user] is sending a message to the Grim Reaper! It looks like [user.p_theyre()] trying to commit suicide!")
+ tnote += "→ To The Grim Reaper:
[deathMessage]
"//records a message in their PDA as being sent to the grim reaper
+ return BRUTELOSS
+
/obj/item/device/pda/examine(mob/user)
..()
if(!id && !inserted_item)
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index e231f6a924..f9e510bbea 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -12,6 +12,10 @@
var/flush = FALSE
var/mob/living/silicon/ai/AI
+/obj/item/device/aicard/suicide_act(mob/living/user)
+ user.visible_message("[user] is trying to upload themselves into [src]! That's not going to work out well!")
+ return BRUTELOSS
+
/obj/item/device/aicard/afterattack(atom/target, mob/user, proximity)
..()
if(!proximity || !target)
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 7fc8df79ee..0e8200126a 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -39,11 +39,12 @@
return 1
/obj/item/device/flashlight/suicide_act(mob/living/carbon/human/user)
+ if (user.eye_blind)
+ user.visible_message("[user] is putting [src] close to [user.p_their()] eyes and turning it on ... but [user.p_theyre()] blind!")
+ return SHAME
user.visible_message("[user] is putting [src] close to [user.p_their()] eyes and turning it on! It looks like [user.p_theyre()] trying to commit suicide!")
return (FIRELOSS)
-
-
/obj/item/device/flashlight/attack(mob/living/carbon/M, mob/living/carbon/human/user)
add_fingerprint(user)
if(istype(M) && on && user.zone_selected in list("eyes", "mouth"))
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index 30cec4c5a1..79725173bf 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -10,6 +10,12 @@
var/spamcheck = 0
var/list/voicespan = list(SPAN_COMMAND)
+/obj/item/device/megaphone/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is uttering [user.p_their()] last words into \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ spamcheck = 0//so they dont have to worry about recharging
+ user.say("AAAAAAAAAAAARGHHHHH")//he must have died while coding this
+ return OXYLOSS
+
/obj/item/device/megaphone/get_held_item_speechspans(mob/living/carbon/user)
if(spamcheck > world.time)
to_chat(user, "\The [src] needs to recharge!")
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index 20ab8199a5..c2deb2666a 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -30,6 +30,10 @@
var/datum/integrated_io/selected_io = null //functional for integrated circuits.
var/mode = 0
+/obj/item/device/multitool/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] puts the [src] to [user.p_their()] chest. It looks like [user.p_theyre()] trying to pulse [user.p_their()] heart off!")
+ return OXYLOSS//theres a reason it wasnt recommended by doctors
+
/obj/item/device/multitool/attack_self(mob/user)
if(selected_io)
selected_io = null
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index 04f5ea5b53..b96c32f53f 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -10,6 +10,10 @@
var/mob/living/silicon/pai/pai
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
+/obj/item/device/paicard/suicide_act(mob/living/user)
+ user.visible_message("[user] is staring sadly at [src]! [user.p_they()] can't keep living without real human intimacy!")
+ return OXYLOSS
+
/obj/item/device/paicard/Initialize()
SSpai.pai_card_list += src
add_overlay("pai-off")
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 13846a84fd..0fc957fdca 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -11,6 +11,10 @@
var/obj/item/device/encryptionkey/keyslot2 = null
dog_fashion = null
+/obj/item/device/radio/headset/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins putting \the [src]'s antenna up [user.p_their()] nose! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer!")
+ return TOXLOSS
+
/obj/item/device/radio/headset/examine(mob/user)
..()
to_chat(user, "To speak on the general radio frequency, use ; before speaking.")
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index eae0ffb52e..aa360bd6cb 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -42,6 +42,10 @@
var/const/FREQ_LISTENING = 1
//FREQ_BROADCASTING = 2
+/obj/item/device/radio/suicide_act(mob/living/user)
+ user.visible_message("[user] starts bouncing [src] off their head! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+
/obj/item/device/radio/proc/set_frequency(new_frequency)
remove_radio(src, frequency)
frequency = add_radio(src, new_frequency)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 48396c2ffd..cafe2214f8 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -18,6 +18,10 @@ GAS ANALYZER
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
materials = list(MAT_METAL=150)
+/obj/item/device/t_scanner/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins to emit terahertz-rays into [user.p_their()] brain with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return TOXLOSS
+
/obj/item/device/t_scanner/attack_self(mob/user)
on = !on
@@ -74,6 +78,10 @@ GAS ANALYZER
var/scanmode = 0
var/advanced = FALSE
+/obj/item/device/healthanalyzer/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!")
+ return BRUTELOSS
+
/obj/item/device/healthanalyzer/attack_self(mob/user)
if(!scanmode)
to_chat(user, "You switch the health analyzer to scan chemical contents.")
@@ -335,6 +343,10 @@ GAS ANALYZER
materials = list(MAT_METAL=30, MAT_GLASS=20)
grind_results = list("mercury" = 5, "iron" = 5, "silicon" = 5)
+/obj/item/device/analyzer/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!")
+ return BRUTELOSS
+
/obj/item/device/analyzer/attack_self(mob/user)
add_fingerprint(user)
diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm
index b450e6750a..b184868676 100644
--- a/code/game/objects/items/extinguisher.dm
+++ b/code/game/objects/items/extinguisher.dm
@@ -45,6 +45,18 @@
create_reagents(max_water)
reagents.add_reagent("water", max_water)
+/obj/item/extinguisher/suicide_act(mob/living/carbon/user)
+ if (!safety && (reagents.total_volume >= 1))
+ user.visible_message("[user] puts the nozzle to [user.p_their()] mouth. It looks like [user.p_theyre()] trying to extinguish the spark of life!")
+ afterattack(user,user)
+ return OXYLOSS
+ else if (safety && (reagents.total_volume >= 1))
+ user.visible_message("[user] puts the nozzle to [user.p_their()] mouth... The safety's still on!")
+ return SHAME
+ else
+ user.visible_message("[user] puts the nozzle to [user.p_their()] mouth... [src] is empty!")
+ return SHAME
+
/obj/item/extinguisher/attack_self(mob/user)
safety = !safety
src.icon_state = "[sprite_name][!safety]"
diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm
index b4df4493ca..3df64597c9 100644
--- a/code/game/objects/items/grenades/grenade.dm
+++ b/code/game/objects/items/grenades/grenade.dm
@@ -17,6 +17,14 @@
var/det_time = 50
var/display_timer = 1
+/obj/item/grenade/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] primes [src], then eats it! It looks like [user.p_theyre()] trying to commit suicide!")
+ playsound(src, 'sound/items/eatfood.ogg', 50, 1)
+ preprime(user, det_time)
+ user.transferItemToLoc(src, user, TRUE)//>eat a grenade set to 5 seconds >rush captain
+ sleep(det_time)//so you dont die instantly
+ return BRUTELOSS
+
/obj/item/grenade/deconstruct(disassembled = TRUE)
if(!disassembled)
prime()
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index 8c09e87b6a..1b285f28da 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -1,6 +1,10 @@
/obj/item/restraints
breakouttime = 600
+/obj/item/restraints/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return(OXYLOSS)
+
/obj/item/restraints/Destroy()
if(iscarbon(loc))
var/mob/living/carbon/M = loc
@@ -386,4 +390,4 @@
var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom))
B.Crossed(hit_atom)
qdel(src)
- ..()
+ ..()
\ No newline at end of file
diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm
index b23ac46823..cbb326d6ac 100644
--- a/code/game/objects/items/kitchen.dm
+++ b/code/game/objects/items/kitchen.dm
@@ -29,6 +29,11 @@
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30)
var/datum/reagent/forkload //used to eat omelette
+/obj/item/kitchen/fork/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] stabs \the [src] into [user.p_their()] chest! It looks like [user.p_theyre()] trying to take a bite out of [user.p_them()]self!")
+ playsound(src, 'sound/items/eatfood.ogg', 50, 1)
+ return BRUTELOSS
+
/obj/item/kitchen/fork/attack(mob/living/carbon/M, mob/living/carbon/user)
if(!istype(M))
return ..()
@@ -163,4 +168,7 @@
w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
+/obj/item/kitchen/rollingpin/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins flattening [user.p_their()] head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
/* Trays moved to /obj/item/storage/bag */
diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm
index edaa4ce648..9d47efe862 100644
--- a/code/game/objects/items/manuals.dm
+++ b/code/game/objects/items/manuals.dm
@@ -933,6 +933,10 @@
title = "Space Law"
page_link = "Space_Law"
+/obj/item/book/manual/wiki/security_space_law/suicide_act(mob/living/user)
+ user.visible_message("[user] pretends to read \the [src] intently... then promptly dies of laughter!")
+ return OXYLOSS
+
/obj/item/book/manual/wiki/infections
name = "Infections - Making your own pandemic!"
icon_state = "bookInfections"
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 7ebf623218..511f9754fe 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -127,6 +127,10 @@
self_delay = 20
max_amount = 12
+/obj/item/stack/medical/gauze/suicide_act(mob/living/user)
+ user.visible_message("[user] begins tightening \the [src] around [user.p_their()] neck! It looks like [user.p_they()] forgot how to use medical supplies!")
+ return OXYLOSS
+
/obj/item/stack/medical/gauze/improvised
name = "improvised gauze"
singular_name = "improvised gauze"
@@ -149,3 +153,7 @@
heal_burn = 40
self_delay = 20
grind_results = list("silver_sulfadiazine" = 10)
+
+/obj/item/stack/medical/ointment/suicide_act(mob/living/user)
+ user.visible_message("[user] is squeezing \the [src] into [user.p_their()] mouth! Don't they know that stuff is toxic?")
+ return TOXLOSS
\ No newline at end of file
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index 6ea8d7e40d..75e9d1e974 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -22,6 +22,10 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
hitsound = 'sound/weapons/grenadelaunch.ogg'
novariants = TRUE
+/obj/item/stack/rods/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins to stuff \the [src] down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide!")//it looks like theyre ur mum
+ return BRUTELOSS
+
/obj/item/stack/rods/Initialize(mapload, new_amount, merge = TRUE)
. = ..()
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index 15cfc12773..5a672c212e 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -24,6 +24,10 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
merge_type = /obj/item/stack/sheet/glass
grind_results = list("silicon" = 20)
+/obj/item/stack/sheet/glass/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins to slice [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+
/obj/item/stack/sheet/glass/cyborg
materials = list()
is_cyborg = 1
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index c2a3feac38..82f6073b85 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -152,6 +152,10 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT)
grind_results = list("plasma" = 20)
+/obj/item/stack/sheet/mineral/plasma/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins licking \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return TOXLOSS//dont you kids know that stuff is toxic?
+
GLOBAL_LIST_INIT(plasma_recipes, list ( \
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 20ed9e6439..ceec7ad469 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -132,6 +132,10 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
recipes = GLOB.metal_recipes
return ..()
+/obj/item/stack/sheet/metal/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins whacking themselves over the head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+
/*
* Plasteel
*/
diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm
index 19172673af..16d449e4ac 100644
--- a/code/game/objects/items/stacks/wrap.dm
+++ b/code/game/objects/items/stacks/wrap.dm
@@ -36,6 +36,18 @@
max_amount = 25
resistance_flags = FLAMMABLE
+/obj/item/stack/packageWrap/suicide_act(mob/living/user)
+ user.visible_message("[user] begins wrapping themselves in \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ if(use(3))
+ var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(user.loc))
+ P.icon_state = "deliverypackage5"
+ user.forceMove(P)
+ P.add_fingerprint(user)
+ return OXYLOSS
+ else
+ to_chat(user, "You need more paper!")
+ return SHAME
+
/obj/item/proc/can_be_package_wrapped() //can the item be wrapped with package wrapper into a delivery package
return 1
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index f461e51555..e3703cf435 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -9,6 +9,10 @@
max_integrity = 300
var/content_overlays = FALSE //If this is true, the belt will gain overlays based on what it's holding
+/obj/item/storage/belt/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins belting themselves with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+
/obj/item/storage/belt/update_icon()
cut_overlays()
if(content_overlays)
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index 2f25f354ea..9e04244a7e 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -36,6 +36,17 @@
. = ..()
update_icon()
+/obj/item/storage/box/suicide_act(mob/living/carbon/user)
+ var/obj/item/bodypart/head/myhead = user.get_bodypart("head")
+ if(myhead)
+ user.visible_message("[user] puts [user.p_their()] head into \the [src], and begins closing it! It looks like [user.p_theyre()] trying to commit suicide!")
+ myhead.dismember()
+ myhead.forceMove(src)//force your enemies to kill themselves with your head collection box!
+ playsound(user,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
+ return BRUTELOSS
+ user.visible_message("[user] beating [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+
/obj/item/storage/box/update_icon()
. = ..()
if(illustration)
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index 2b7a1695cd..335ba2b211 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -22,6 +22,10 @@
icon_state = "firstaid"
desc = "A first aid kit with the ability to heal common types of injuries."
+/obj/item/storage/firstaid/regular/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins giving [user.p_them()]self aids with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+
/obj/item/storage/firstaid/regular/PopulateContents()
if(empty)
return
@@ -55,6 +59,10 @@
icon_state = "ointment"
item_state = "firstaid-ointment"
+/obj/item/storage/firstaid/fire/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins rubbing \the [src] against [user.p_them()]self! It looks like [user.p_theyre()] trying to start a fire!")
+ return FIRELOSS
+
/obj/item/storage/firstaid/fire/Initialize(mapload)
. = ..()
icon_state = pick("ointment","firefirstaid")
@@ -75,6 +83,10 @@
icon_state = "antitoxin"
item_state = "firstaid-toxin"
+/obj/item/storage/firstaid/toxin/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins licking the lead paint off \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return TOXLOSS
+
/obj/item/storage/firstaid/toxin/Initialize(mapload)
. = ..()
icon_state = pick("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3")
@@ -94,6 +106,10 @@
icon_state = "o2"
item_state = "firstaid-o2"
+/obj/item/storage/firstaid/o2/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins hitting [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return OXYLOSS
+
/obj/item/storage/firstaid/o2/PopulateContents()
if(empty)
return
@@ -109,6 +125,10 @@
icon_state = "brute"
item_state = "firstaid-brute"
+/obj/item/storage/firstaid/brute/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins beating [user.p_them()]self over the head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+
/obj/item/storage/firstaid/brute/PopulateContents()
if(empty)
return
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 689f50769c..f7e61c8fda 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -606,6 +606,11 @@
var/card_throw_range = 7
var/list/card_attack_verb = list("attacked")
+/obj/item/toy/cards/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is slitting [user.p_their()] wrists with \the [src]! It looks like [user.p_they()] [user.p_have()] a crummy hand!")
+ playsound(src, 'sound/items/cardshuffle.ogg', 50, 1)
+ return BRUTELOSS
+
/obj/item/toy/cards/proc/apply_card_vars(obj/item/toy/cards/newobj, obj/item/toy/cards/sourceobj) // Applies variables for supporting multiple types of card deck
if(!istype(sourceobj))
return
@@ -681,7 +686,7 @@
/obj/item/toy/cards/deck/attack_self(mob/user)
if(cooldown < world.time - 50)
cards = shuffle(cards)
- playsound(user, 'sound/items/cardshuffle.ogg', 50, 1)
+ playsound(src, 'sound/items/cardshuffle.ogg', 50, 1)
user.visible_message("[user] shuffles the deck.", "You shuffle the deck.")
cooldown = world.time
diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm
index d3d265cf79..14585e8194 100644
--- a/code/game/objects/items/twohanded.dm
+++ b/code/game/objects/items/twohanded.dm
@@ -286,6 +286,31 @@
var/brightness_on = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD
var/list/possible_colors = list("red", "blue", "green", "purple")
+/obj/item/twohanded/dualsaber/suicide_act(mob/living/carbon/user)
+ if(wielded)
+ user.visible_message("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!")
+
+ var/obj/item/bodypart/head/myhead = user.get_bodypart("head")//stole from chainsaw code
+ var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN)
+ B.vital = FALSE//this cant possibly be a good idea
+ var/randdir
+ for(var/i in 1 to 24)//like a headless chicken!
+ if(user.is_holding(src))
+ randdir = pick(GLOB.alldirs)
+ user.Move(get_step(user, randdir),randdir)
+ user.emote("spin")
+ if (i == 3 && myhead)
+ myhead.drop_limb()
+ sleep(3)
+ else
+ user.visible_message("[user] panics and starts choking to death!")
+ return OXYLOSS
+
+
+ else
+ user.visible_message("[user] begins beating [user.p_them()]self to death with \the [src]'s handle! It probably would've been cooler if [user.p_they()] turned it on first!")
+ return BRUTELOSS
+
/obj/item/twohanded/dualsaber/Initialize()
. = ..()
if(LAZYLEN(possible_colors))
@@ -445,6 +470,17 @@
var/obj/item/grenade/explosive = null
var/war_cry = "AAAAARGH!!!"
+/obj/item/twohanded/spear/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins to sword-swallow \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ if(explosive)
+ user.say("[war_cry]")
+ explosive.forceMove(user)
+ explosive.prime()
+ user.gib()
+ qdel(src)
+ return BRUTELOSS
+ return BRUTELOSS
+
/obj/item/twohanded/spear/Initialize()
. = ..()
AddComponent(/datum/component/jousting)
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 2fb2d5253d..8654de04b0 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -266,6 +266,11 @@
var/break_chance = 5 //Likely hood of smashing the chair.
var/obj/structure/chair/origin_type = /obj/structure/chair
+/obj/item/chair/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins hitting [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ playsound(src,hitsound,50,1)
+ return BRUTELOSS
+
/obj/item/chair/narsie_act()
var/obj/item/chair/wood/W = new/obj/item/chair/wood(get_turf(src))
W.setDir(dir)
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index 5e4e8f82cf..84e6233794 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -15,6 +15,17 @@
var/cooldown = 0
var/last_trigger = 0 //Last time it was successfully triggered.
+/obj/item/device/assembly/flash/suicide_act(mob/living/user)
+ if (crit_fail)
+ user.visible_message("[user] raises \the [src] up to [user.p_their()] eyes and activates it ... but its burnt out!")
+ return SHAME
+ else if (user.eye_blind)
+ user.visible_message("[user] raises \the [src] up to [user.p_their()] eyes and activates it ... but [user.p_theyre()] blind!")
+ return SHAME
+ user.visible_message("[user] raises \the [src] up to [user.p_their()] eyes and activates it! It looks like [user.p_theyre()] trying to commit suicide!")
+ attack(user,user)
+ return FIRELOSS
+
/obj/item/device/assembly/flash/update_icon(flash = FALSE)
cut_overlays()
attached_overlays = list()
@@ -134,7 +145,6 @@
user.visible_message("[user] fails to blind [M] with the flash!", "You fail to blind [M] with the flash!")
-
/obj/item/device/assembly/flash/attack_self(mob/living/carbon/user, flag = 0, emp = 0)
if(holder)
return FALSE
diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm
index 2a6e51a344..786a4fc20e 100644
--- a/code/modules/assembly/igniter.dm
+++ b/code/modules/assembly/igniter.dm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
/obj/item/device/assembly/igniter
name = "igniter"
desc = "A small electronic device able to ignite combustible substances."
@@ -34,3 +35,46 @@
light [A]."
activate()
add_fingerprint(user)
+=======
+/obj/item/device/assembly/igniter
+ name = "igniter"
+ desc = "A small electronic device able to ignite combustible substances."
+ icon_state = "igniter"
+ materials = list(MAT_METAL=500, MAT_GLASS=50)
+ var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
+ heat = 1000
+
+/obj/item/device/assembly/igniter/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is trying to ignite [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ user.IgniteMob()
+ return FIRELOSS
+
+/obj/item/device/assembly/igniter/New()
+ ..()
+ sparks.set_up(2, 0, src)
+ sparks.attach(src)
+
+/obj/item/device/assembly/igniter/Destroy()
+ qdel(sparks)
+ sparks = null
+ . = ..()
+
+/obj/item/device/assembly/igniter/activate()
+ if(!..())
+ return 0//Cooldown check
+ var/turf/location = get_turf(loc)
+ if(location)
+ location.hotspot_expose(1000,1000)
+ sparks.start()
+ return 1
+
+/obj/item/device/assembly/igniter/attack_self(mob/user)
+ activate()
+ add_fingerprint(user)
+
+/obj/item/device/assembly/igniter/ignition_effect(atom/A, mob/user)
+ . = "[user] fiddles with [src], and manages to \
+ light [A]."
+ activate()
+ add_fingerprint(user)
+>>>>>>> 20a6c0c... Adds ~70 more suicides (#34522)
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 1b0102abdd..4f6b3effec 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -13,6 +13,19 @@
var/frequency = FREQ_SIGNALER
var/delay = 0
var/datum/radio_frequency/radio_connection
+ var/suicider = null
+
+/obj/item/device/assembly/signaler/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] eats \the [src]! If it is signaled, [user.p_they()] will die!")
+ playsound(src, 'sound/items/eatfood.ogg', 50, 1)
+ user.transferItemToLoc(src, user, TRUE)
+ suicider = user
+ return MANUAL_SUICIDE
+
+/obj/item/device/assembly/signaler/proc/manual_suicide(mob/living/carbon/user)
+ user.visible_message("[user]'s \the [src] recieves a signal, killing them instantly!")
+ user.adjustOxyLoss(200)//it sends an electrical pulse to their heart, killing them. or something.
+ user.death(0)
/obj/item/device/assembly/signaler/New()
..()
@@ -123,6 +136,8 @@ Code:
return 0
if(!(src.wires & WIRE_RADIO_RECEIVE))
return 0
+ if(suicider)
+ manual_suicide(suicider)
pulse(1)
audible_message("[icon2html(src, hearers(src))] *beep* *beep*", null, 1)
return
diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm
index 8e2c1245b9..b434cc6b43 100644
--- a/code/modules/assembly/timer.dm
+++ b/code/modules/assembly/timer.dm
@@ -10,6 +10,16 @@
var/saved_time = 5
var/loop = 0
+/obj/item/device/assembly/timer/suicide_act(mob/living/user)
+ user.visible_message("[user] looks at the timer and decides [user.p_their()] fate! It looks like [user.p_theyre()] going to commit suicide!")
+ activate()//doesnt rely on timer_end to prevent weird metas where one person can control the timer and therefore someone's life. (maybe that should be how it works...)
+ addtimer(CALLBACK(src, .proc/manual_suicide, user), time*10)//kill yourself once the time runs out
+ return MANUAL_SUICIDE
+
+/obj/item/device/assembly/timer/proc/manual_suicide(mob/living/user)
+ user.visible_message("[user]'s time is up!")
+ user.adjustOxyLoss(200)
+ user.death(0)
/obj/item/device/assembly/timer/New()
..()
diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm
index a5f9dfee68..c9293a3e46 100644
--- a/code/modules/client/verbs/suicide.dm
+++ b/code/modules/client/verbs/suicide.dm
@@ -51,10 +51,25 @@
death(FALSE)
return
- var/suicide_message = pick("[src] is attempting to bite [p_their()] tongue off! It looks like [p_theyre()] trying to commit suicide.", \
- "[src] is jamming [p_their()] thumbs into [p_their()] eye sockets! It looks like [p_theyre()] trying to commit suicide.", \
- "[src] is twisting [p_their()] own neck! It looks like [p_theyre()] trying to commit suicide.", \
- "[src] is holding [p_their()] breath! It looks like [p_theyre()] trying to commit suicide.")
+ var/suicide_message
+
+ if(a_intent == INTENT_DISARM)
+ suicide_message = pick("[src] is attempting to push [p_their()] own head off [p_their()] shoulders! It looks like [p_theyre()] trying to commit suicide.", \
+ "[src] is pushing [p_their()] thumbs into [p_their()] eye sockets! It looks like [p_theyre()] trying to commit suicide.", \
+ "[src] is ripping [p_their()] own arms off! It looks like [p_theyre()] trying to commit suicide.")//heheh get it?
+ if(a_intent == INTENT_GRAB)
+ suicide_message = pick("[src] is attempting to pull [p_their()] own head off! It looks like [p_theyre()] trying to commit suicide.", \
+ "[src] is aggressively grabbing [p_their()] own neck! It looks like [p_theyre()] trying to commit suicide.", \
+ "[src] is pulling [p_their()] eyes out of their sockets! It looks like [p_theyre()] trying to commit suicide.")
+ if(a_intent == INTENT_HELP)
+ suicide_message = pick("[src] is hugging [p_them()]self to death! It looks like [p_theyre()] trying to commit suicide.", \
+ "[src] is high-fiving [p_them()]self to death! It looks like [p_theyre()] trying to commit suicide.", \
+ "[src] is getting too high on life! It looks like [p_theyre()] trying to commit suicide.")
+ else
+ suicide_message = pick("[src] is attempting to bite [p_their()] tongue off! It looks like [p_theyre()] trying to commit suicide.", \
+ "[src] is jamming [p_their()] thumbs into [p_their()] eye sockets! It looks like [p_theyre()] trying to commit suicide.", \
+ "[src] is twisting [p_their()] own neck! It looks like [p_theyre()] trying to commit suicide.", \
+ "[src] is holding [p_their()] breath! It looks like [p_theyre()] trying to commit suicide.")
visible_message("[suicide_message]", "[suicide_message]")
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index d07dde5a17..7a9a4a2a29 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -17,6 +17,10 @@
var/list/icon/current = list() //the current hud icons
var/vision_correction = 0 //does wearing these glasses correct some of our vision defects?
var/glass_colour_type //colors your vision when worn
+
+/obj/item/clothing/glasses/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is stabbing \the [src] into their eyes! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
/obj/item/clothing/glasses/examine(mob/user)
..()
@@ -59,6 +63,10 @@
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
glass_colour_type = /datum/client_colour/glass_colour/lightgreen
+/obj/item/clothing/glasses/meson/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is putting \the [src] to their eyes and overloading the brightness! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+
/obj/item/clothing/glasses/meson/night
name = "night vision meson scanner"
desc = "An optical meson scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness."
@@ -105,6 +113,10 @@
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
glass_colour_type = /datum/client_colour/glass_colour/green
+/obj/item/clothing/glasses/science/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is tightening \the [src]'s straps around their neck! It looks like [user.p_theyre()] trying to commit suicide!")
+ return OXYLOSS
+
/obj/item/clothing/glasses/eyepatch
name = "eyepatch"
desc = "Yarr."
diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm
index 39767234e5..ca534f5a58 100644
--- a/code/modules/clothing/gloves/_gloves.dm
+++ b/code/modules/clothing/gloves/_gloves.dm
@@ -20,6 +20,10 @@
return
transfer_blood = 0
+/obj/item/clothing/gloves/suicide_act(mob/living/carbon/user)
+ user.visible_message("\the [src] are forcing [user]'s hands around [user.p_their()] neck! It looks like the gloves are possessed!")
+ return OXYLOSS
+
/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE)
. = list()
if(!isinhands)
diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm
index 03a0470a95..9fd328c2d6 100644
--- a/code/modules/clothing/masks/breath.dm
+++ b/code/modules/clothing/masks/breath.dm
@@ -14,6 +14,10 @@
visor_flags_cover = MASKCOVERSMOUTH
resistance_flags = NONE
+obj/item/clothing/mask/breath/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is wrapping \the [src]'s tube around their neck! It looks like [user.p_theyre()] trying to commit suicide!")
+ return OXYLOSS
+
/obj/item/clothing/mask/breath/attack_self(mob/user)
adjustmask(user)
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index b0f2a18a5b..011e21c372 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -51,6 +51,10 @@
icon_state = "stethoscope"
item_color = "stethoscope"
+/obj/item/clothing/neck/stethoscope/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] puts \the [src] to [user.p_their()] chest! It looks like [user.p_they()] wont hear much!")
+ return OXYLOSS
+
/obj/item/clothing/neck/stethoscope/attack(mob/living/carbon/human/M, mob/living/user)
if(ishuman(M) && isliving(user))
if(user.a_intent == INTENT_HELP)
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index d058e82a3a..e725a24df1 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -19,6 +19,25 @@
. = ..()
AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT), CALLBACK(src, .proc/clean_blood))
+/obj/item/clothing/shoes/suicide_act(mob/living/carbon/user)
+ if(rand(2)>1)
+ user.visible_message("[user] begins tying \the [src] up waaay too tightly! It looks like [user.p_theyre()] trying to commit suicide!")
+ var/obj/item/bodypart/l_leg = user.get_bodypart("l_leg")
+ var/obj/item/bodypart/r_leg = user.get_bodypart("r_leg")
+ if(l_leg)
+ l_leg.dismember()
+ playsound(user,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
+ if(r_leg)
+ r_leg.dismember()
+ playsound(user,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
+ return BRUTELOSS
+ else//didnt realize this suicide act existed (was in miscellaneous.dm) and didnt want to remove it, so made it a 50/50 chance. Why not!
+ user.visible_message("[user] is bashing [user.p_their()] own head in with [src]! Ain't that a kick in the head?")
+ for(var/i = 0, i < 3, i++)
+ sleep(3)
+ playsound(user, 'sound/weapons/genhit2.ogg', 50, 1)
+ return(BRUTELOSS)
+
/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE)
. = list()
if(!isinhands)
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index 663cdf2941..b33ac3e688 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -1,13 +1,6 @@
/obj/item/clothing/shoes/proc/step_action() //this was made to rewrite clown shoes squeaking
SendSignal(COMSIG_SHOES_STEP_ACTION)
-/obj/item/clothing/shoes/suicide_act(mob/user)
- user.visible_message("[user] is bashing [user.p_their()] own head in with [src]! Ain't that a kick in the head?")
- for(var/i = 0, i < 3, i++)
- sleep(3)
- playsound(user, 'sound/weapons/genhit2.ogg', 50, 1)
- return(BRUTELOSS)
-
/obj/item/clothing/shoes/sneakers/mime
name = "mime shoes"
icon_state = "mime"
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index b65104b192..b6dc08c5c6 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -395,6 +395,13 @@
spillable = FALSE
isGlass = FALSE
grind_results = list("aluminum" = 10)
+
+/obj/item/reagent_containers/food/drinks/soda_cans/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is trying to eat \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(user.loc)
+ crushed_can.icon_state = icon_state
+ qdel(src)
+ return BRUTELOSS
/obj/item/reagent_containers/food/drinks/soda_cans/attack(mob/M, mob/user)
if(M == user && !src.reagents.total_volume && user.a_intent == INTENT_HARM && user.zone_selected == "head")
diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm
index 445e8e6534..f5ce5bf782 100644
--- a/code/modules/food_and_drinks/food/condiment.dm
+++ b/code/modules/food_and_drinks/food/condiment.dm
@@ -27,6 +27,10 @@
"mayonnaise" = list("mayonnaise", "mayonnaise jar", "An oily condiment made from egg yolks."))
var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters.
+/obj/item/reagent_containers/food/condiment/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is trying to eat the entire [src]! It looks like [user.p_they()] forgot how food works!")
+ return OXYLOSS
+
/obj/item/reagent_containers/food/condiment/attack(mob/M, mob/user, def_zone)
if(!reagents || !reagents.total_volume)
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index c72d9e5c28..b786afea8b 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -67,6 +67,10 @@
attack_verb = list("slashed", "sliced", "cut", "clawed")
hitsound = 'sound/weapons/bladeslice.ogg'
+/obj/item/cultivator/suicide_act(mob/user)
+ user.visible_message("[user] is scratching [user.p_their()] back as hard as [user.p_they()] can with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (BRUTELOSS)
+
/obj/item/hatchet
name = "hatchet"
desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood."
@@ -88,7 +92,7 @@
/obj/item/hatchet/suicide_act(mob/user)
user.visible_message("[user] is chopping at [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
+ playsound(src, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return (BRUTELOSS)
/obj/item/scythe
@@ -116,7 +120,7 @@
var/obj/item/bodypart/BP = C.get_bodypart("head")
if(BP)
BP.drop_limb()
- playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
+ playsound(src,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
return (BRUTELOSS)
/obj/item/scythe/pre_attackby(atom/A, mob/living/user, params)
diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm
index 61bde60ad0..b34bb980ee 100644
--- a/code/modules/mining/equipment/mining_tools.dm
+++ b/code/modules/mining/equipment/mining_tools.dm
@@ -1,110 +1,126 @@
-/*****************Pickaxes & Drills & Shovels****************/
-/obj/item/pickaxe
- name = "pickaxe"
- icon = 'icons/obj/mining.dmi'
- icon_state = "pickaxe"
- flags_1 = CONDUCT_1
- slot_flags = SLOT_BELT | SLOT_BACK
- force = 15
- throwforce = 10
- item_state = "pickaxe"
- lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi'
- w_class = WEIGHT_CLASS_BULKY
- materials = list(MAT_METAL=2000) //one sheet, but where can you make them?
- var/digspeed = 40
- var/list/digsound = list('sound/effects/picaxe1.ogg','sound/effects/picaxe2.ogg','sound/effects/picaxe3.ogg')
- attack_verb = list("hit", "pierced", "sliced", "attacked")
-
-/obj/item/pickaxe/mini
- name = "compact pickaxe"
- desc = "A smaller, compact version of the standard pickaxe."
- icon_state = "minipick"
- force = 10
- throwforce = 7
- slot_flags = SLOT_BELT
- w_class = WEIGHT_CLASS_NORMAL
- materials = list(MAT_METAL=1000)
-
-/obj/item/pickaxe/proc/playDigSound()
- playsound(src, pick(digsound),50,1)
-
-/obj/item/pickaxe/silver
- name = "silver-plated pickaxe"
- icon_state = "spickaxe"
- item_state = "spickaxe"
- digspeed = 20 //mines faster than a normal pickaxe, bought from mining vendor
- desc = "A silver-plated pickaxe that mines slightly faster than standard-issue."
- force = 17
-
-/obj/item/pickaxe/diamond
- name = "diamond-tipped pickaxe"
- icon_state = "dpickaxe"
- item_state = "dpickaxe"
- digspeed = 14
- desc = "A pickaxe with a diamond pick head. Extremely robust at cracking rock walls and digging up dirt."
- force = 19
-
-/obj/item/pickaxe/drill
- name = "mining drill"
- icon_state = "handdrill"
- item_state = "jackhammer"
- slot_flags = SLOT_BELT
- digspeed = 25 //available from roundstart, faster than a pickaxe.
- digsound = list('sound/weapons/drill.ogg')
- hitsound = 'sound/weapons/drill.ogg'
- desc = "An electric mining drill for the especially scrawny."
-
-/obj/item/pickaxe/drill/cyborg
- name = "cyborg mining drill"
- desc = "An integrated electric mining drill."
- flags_1 = NODROP_1
-
-/obj/item/pickaxe/drill/diamonddrill
- name = "diamond-tipped mining drill"
- icon_state = "diamonddrill"
- digspeed = 7
- desc = "Yours is the drill that will pierce the heavens!"
-
-/obj/item/pickaxe/drill/cyborg/diamond //This is the BORG version!
- name = "diamond-tipped cyborg mining drill" //To inherit the NODROP_1 flag, and easier to change borg specific drill mechanics.
- icon_state = "diamonddrill"
- digspeed = 7
-
-/obj/item/pickaxe/drill/jackhammer
- name = "sonic jackhammer"
- icon_state = "jackhammer"
- item_state = "jackhammer"
- digspeed = 5 //the epitome of powertools. extremely fast mining, laughs at puny walls
- digsound = list('sound/weapons/sonic_jackhammer.ogg')
- hitsound = 'sound/weapons/sonic_jackhammer.ogg'
- desc = "Cracks rocks with sonic blasts, and doubles as a demolition power tool for smashing walls."
-
-/obj/item/shovel
- name = "shovel"
- desc = "A large tool for digging and moving dirt."
- icon = 'icons/obj/mining.dmi'
- icon_state = "shovel"
- lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi'
- flags_1 = CONDUCT_1
- slot_flags = SLOT_BELT
- force = 8
- var/digspeed = 20
- throwforce = 4
- item_state = "shovel"
- w_class = WEIGHT_CLASS_NORMAL
- materials = list(MAT_METAL=50)
- attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked")
- sharpness = IS_SHARP
-
-/obj/item/shovel/spade
- name = "spade"
- desc = "A small tool for digging and moving dirt."
- icon_state = "spade"
- item_state = "spade"
- lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
- force = 5
- throwforce = 7
- w_class = WEIGHT_CLASS_SMALL
+/*****************Pickaxes & Drills & Shovels****************/
+/obj/item/pickaxe
+ name = "pickaxe"
+ icon = 'icons/obj/mining.dmi'
+ icon_state = "pickaxe"
+ flags_1 = CONDUCT_1
+ slot_flags = SLOT_BELT | SLOT_BACK
+ force = 15
+ throwforce = 10
+ item_state = "pickaxe"
+ lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi'
+ w_class = WEIGHT_CLASS_BULKY
+ materials = list(MAT_METAL=2000) //one sheet, but where can you make them?
+ var/digspeed = 40
+ var/list/digsound = list('sound/effects/picaxe1.ogg','sound/effects/picaxe2.ogg','sound/effects/picaxe3.ogg')
+ attack_verb = list("hit", "pierced", "sliced", "attacked")
+
+/obj/item/pickaxe/suicide_act(mob/living/user)
+ user.visible_message("[user] begins digging into their chest! It looks like [user.p_theyre()] trying to commit suicide!")
+ if(do_after(user,30, target = user))
+ playDigSound()
+ return BRUTELOSS
+ user.visible_message("[user] couldn't do it!")
+ return SHAME
+
+/obj/item/pickaxe/mini
+ name = "compact pickaxe"
+ desc = "A smaller, compact version of the standard pickaxe."
+ icon_state = "minipick"
+ force = 10
+ throwforce = 7
+ slot_flags = SLOT_BELT
+ w_class = WEIGHT_CLASS_NORMAL
+ materials = list(MAT_METAL=1000)
+
+/obj/item/pickaxe/proc/playDigSound()
+ playsound(src, pick(digsound),50,1)
+
+/obj/item/pickaxe/silver
+ name = "silver-plated pickaxe"
+ icon_state = "spickaxe"
+ item_state = "spickaxe"
+ digspeed = 20 //mines faster than a normal pickaxe, bought from mining vendor
+ desc = "A silver-plated pickaxe that mines slightly faster than standard-issue."
+ force = 17
+
+/obj/item/pickaxe/diamond
+ name = "diamond-tipped pickaxe"
+ icon_state = "dpickaxe"
+ item_state = "dpickaxe"
+ digspeed = 14
+ desc = "A pickaxe with a diamond pick head. Extremely robust at cracking rock walls and digging up dirt."
+ force = 19
+
+/obj/item/pickaxe/drill
+ name = "mining drill"
+ icon_state = "handdrill"
+ item_state = "jackhammer"
+ slot_flags = SLOT_BELT
+ digspeed = 25 //available from roundstart, faster than a pickaxe.
+ digsound = list('sound/weapons/drill.ogg')
+ hitsound = 'sound/weapons/drill.ogg'
+ desc = "An electric mining drill for the especially scrawny."
+
+/obj/item/pickaxe/drill/cyborg
+ name = "cyborg mining drill"
+ desc = "An integrated electric mining drill."
+ flags_1 = NODROP_1
+
+/obj/item/pickaxe/drill/diamonddrill
+ name = "diamond-tipped mining drill"
+ icon_state = "diamonddrill"
+ digspeed = 7
+ desc = "Yours is the drill that will pierce the heavens!"
+
+/obj/item/pickaxe/drill/cyborg/diamond //This is the BORG version!
+ name = "diamond-tipped cyborg mining drill" //To inherit the NODROP_1 flag, and easier to change borg specific drill mechanics.
+ icon_state = "diamonddrill"
+ digspeed = 7
+
+/obj/item/pickaxe/drill/jackhammer
+ name = "sonic jackhammer"
+ icon_state = "jackhammer"
+ item_state = "jackhammer"
+ digspeed = 5 //the epitome of powertools. extremely fast mining, laughs at puny walls
+ digsound = list('sound/weapons/sonic_jackhammer.ogg')
+ hitsound = 'sound/weapons/sonic_jackhammer.ogg'
+ desc = "Cracks rocks with sonic blasts, and doubles as a demolition power tool for smashing walls."
+
+/obj/item/shovel
+ name = "shovel"
+ desc = "A large tool for digging and moving dirt."
+ icon = 'icons/obj/mining.dmi'
+ icon_state = "shovel"
+ lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi'
+ flags_1 = CONDUCT_1
+ slot_flags = SLOT_BELT
+ force = 8
+ var/digspeed = 20
+ throwforce = 4
+ item_state = "shovel"
+ w_class = WEIGHT_CLASS_NORMAL
+ materials = list(MAT_METAL=50)
+ attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked")
+ sharpness = IS_SHARP
+
+/obj/item/shovel/suicide_act(mob/living/user)
+ user.visible_message("[user] begins digging their own grave! It looks like [user.p_theyre()] trying to commit suicide!")
+ if(do_after(user,30, target = user))
+ playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1)
+ return BRUTELOSS
+ user.visible_message("[user] couldn't do it!")
+ return SHAME
+
+/obj/item/shovel/spade
+ name = "spade"
+ desc = "A small tool for digging and moving dirt."
+ icon_state = "spade"
+ item_state = "spade"
+ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
+ force = 5
+ throwforce = 7
+ w_class = WEIGHT_CLASS_SMALL
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 6f27e59177..30be7c9689 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -311,6 +311,25 @@
var/cmineral = null
var/cooldown = 0
var/value = 1
+ var/coinflip
+
+/obj/item/coin/suicide_act(mob/living/user)
+ user.visible_message("[user] contemplates suicide with \the [src]!")
+ if (!attack_self(user))
+ user.visible_message("[user] couldn't flip \the [src]!")
+ return SHAME
+ addtimer(CALLBACK(src, .proc/manual_suicide, user), 10)//10 = time takes for flip animation
+ return MANUAL_SUICIDE
+
+/obj/item/coin/proc/manual_suicide(mob/living/user)
+ var/index = sideslist.Find(coinflip)
+ message_admins("coinflip landed on [coinflip] which is [index] in sideslist")
+ if (index==2)//tails
+ user.visible_message("\the [src] lands on [coinflip]! [user] promply falls over, dead!")
+ user.adjustOxyLoss(200)
+ user.death(0)
+ else
+ user.visible_message("\the [src] lands on [coinflip]! [user] keeps on living!")
/obj/item/coin/Initialize()
. = ..()
@@ -432,8 +451,8 @@
if(cooldown < world.time)
if(string_attached) //does the coin have a wire attached
to_chat(user, "The coin won't flip very well with something attached!" )
- return //do not flip the coin
- var/coinflip = pick(sideslist)
+ return FALSE//do not flip the coin
+ coinflip = pick(sideslist)
cooldown = world.time + 15
flick("coin_[cmineral]_flip", src)
icon_state = "coin_[cmineral]_[coinflip]"
@@ -444,3 +463,4 @@
user.visible_message("[user] has flipped [src]. It lands on [coinflip].", \
"You flip [src]. It lands on [coinflip].", \
"You hear the clattering of loose change.")
+ return TRUE//did the coin flip? useful for suicide_act
\ No newline at end of file
diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm
index e8487b3344..80f04c39d2 100644
--- a/code/modules/paperwork/clipboard.dm
+++ b/code/modules/paperwork/clipboard.dm
@@ -12,6 +12,10 @@
slot_flags = SLOT_BELT
resistance_flags = FLAMMABLE
+/obj/item/clipboard/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins putting [user.p_their()] head into the clip of \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS//the clipboard's clip is very strong. industrial duty. can kill a man easily.
+
/obj/item/clipboard/Initialize()
update_icon()
. = ..()
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index c81ab37591..5b15a30951 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -6,6 +6,10 @@
w_class = WEIGHT_CLASS_SMALL
pressure_resistance = 2
resistance_flags = FLAMMABLE
+
+/obj/item/folder/suicide_act(mob/living/user)
+ user.visible_message("[user] begins filing an imaginary death warrent! It looks like [user.p_theyre()] trying to commit suicide!")
+ return OXYLOSS
/obj/item/folder/blue
desc = "A blue folder."
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index d7f15d65e9..6fa6178f7e 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -40,6 +40,13 @@
var/blueprints = 0 //Does it include the blueprints?
var/sillynewscastervar //Photo objects with this set to 1 will not be ejected by a newscaster. Only gets set to 1 if a silicon puts one of their images into a newscaster
+/obj/item/photo/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] is taking one last look at \the [src]! It looks like [user.p_theyre()] giving in to death!")//when you wanna look at photo of waifu one last time before you die...
+ if (user.gender == MALE)
+ playsound(user, 'sound/voice/human/manlaugh1.ogg', 50, 1)//EVERY TIME I DO IT MAKES ME LAUGH
+ else if (user.gender == FEMALE)
+ playsound(user, 'sound/voice/human/womanlaugh.ogg', 50, 1)
+ return OXYLOSS
/obj/item/photo/attack_self(mob/user)
user.examinate(src)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index a8f27f534b..ac840c27c4 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -689,6 +689,15 @@
grind_results = list("silicon" = 5, "nitrogen" = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs
var/rigged = 0 // true if rigged to explode
var/brightness = 2 //how much light it gives off
+
+/obj/item/light/suicide_act(mob/living/carbon/user)
+ if (status == LIGHT_BROKEN)
+ user.visible_message("[user] begins to stab [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return BRUTELOSS
+ else
+ user.visible_message("[user] begins to eat \the [src]! It looks like [user.p_theyre()] not very bright!")
+ shatter()
+ return BRUTELOSS
/obj/item/light/tube
name = "light tube"
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 53e0c9bfb6..7afba472ba 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -92,6 +92,10 @@
flags_1 = null
list_reagents = list("epinephrine" = 10)
+/obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return OXYLOSS//ironic. he could save others from oxyloss, but not himself.
+
/obj/item/reagent_containers/hypospray/medipen/attack(mob/M, mob/user)
if(!reagents.total_volume)
to_chat(user, "[src] is empty!")
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 6208404042..68507d673a 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -149,6 +149,20 @@
desc = "BLAM!-brand non-foaming space cleaner!"
list_reagents = list("cleaner" = 250)
+/obj/item/reagent_containers/spray/cleaner/suicide_act(mob/user)
+ user.visible_message("[user] is putting the nozzle of \the [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!")
+ if(do_mob(user,user,30))
+ if(reagents.total_volume >= amount_per_transfer_from_this)//if not empty
+ user.visible_message("[user] pulls the trigger!")
+ src.spray(user)
+ return BRUTELOSS
+ else
+ user.visible_message("[user] pulls the trigger...but \the [src] is empty!")
+ return SHAME
+ else
+ user.visible_message("[user] decided life was worth living.")
+ return
+
//spray tan
/obj/item/reagent_containers/spray/spraytan
name = "spray tan"
@@ -184,6 +198,10 @@
amount_per_transfer_from_this = 5
list_reagents = list("condensedcapsaicin" = 40)
+/obj/item/reagent_containers/spray/pepper/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins huffing \the [src]! It looks like [user.p_theyre()] getting a dirty high!")
+ return OXYLOSS
+
// Fix pepperspraying yourself
/obj/item/reagent_containers/spray/pepper/afterattack(atom/A as mob|obj, mob/user)
if (A.loc == user)
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index e7410685f7..c8d626b2d5 100644
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -149,6 +149,15 @@
flags_1 = CONDUCT_1
slot_flags = SLOT_BELT
+/obj/item/device/destTagger/suicide_act(mob/living/user)
+ user.visible_message("[user] begins tagging [user.p_their()] final destination! It looks like [user.p_theyre()] trying to commit suicide!")
+ if (islizard(user))
+ to_chat(user, "*HELL*")//lizard nerf
+ else
+ to_chat(user, "*HEAVEN*")
+ playsound(src, 'sound/machines/twobeep.ogg', 100, 1)
+ return BRUTELOSS
+
/obj/item/device/destTagger/proc/openwindow(mob/user)
var/dat = "TagMaster 2.2
"