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

"