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